Friday, December 09, 2005

Thoughts, development and who I am.

After reading Joel for some time, I decided that I could throw my two bits worth of thought into the wild world out there.

Sure thing I didn't give much of a thought about what to write here, so it will be just a series of mumbling ideas and (maybe) tips on software development.

I won't pretend that I'm as good as Joel, it would be too much even for me -- people say that I have an ego the size of Montana... and I tend to agree with them. Anyway, I think I need to exercise humbleness and today is a good day to start.

Well, first a little bit about me.

I have been a software developer for the last two thirds of my life. I started coding my first lines when I was 9, only five years after I've learned how to read. As happened to many people from my generation my first contact with development was with BASIC, following a great deal of COBOL.

Before I started coding, my parents had me go through a computer class on a school near home and there was a young teacher there (whose name, for my deepest sorrow and shame, I completely forgot), who taught me the greatest law of software development, something that would guide my whole professional life: "There is no programming language. There is programming LOGIC."

And that lesson was the only thing I've ever learned about software development. If you can code in BASIC, you can do the same in C, COBOL, Pascal, Delphi, Lisp, Logo, LUA, you name it. All you need is the language documentation and enough time.
Click for better quality.
Coco: my first computer

After my parents talked to my computer teacher, they gave me my first computer: a Coco. I'm not sure if it was only this one or if it was common, but my Coco came with a two inches thick manual that I read from cover to cover almost 10 times, I did every sample program on the book and then started doing my own... and I didn't stop anymore.

For the kids that were born with floppy disks, CDs and all this modern stuff, back on those days we didn't have diskettes to store our programs, we had to store them on tapes. To save them we used a (now ancient) tape recorder -- and it baffles me why they still sell micro-systems with tapes included.

I was confident enough with my coding skills, but my parents weren't, so they sent me to another computer school. This new school had the most advanced computer available those days: an Apple ][. They had floppy disks and all the stuff, but the school was so clueless that most of the time the teacher would come to me when he had doubts about a specific command. After that fiasco, I quit the computer school.
Click for better quality.
MSX: a nice computer

A few years later I bought my second computer an MSX. With a disk drive! Boy, I was happy. No more waiting, no more tape problems. And the MSX had a high screen resolution of 256x192 pixels with 16 different colors! I was in heaven.

The language was still BASIC, just a little bit different from that of the Coco, but nothing that would cause big problems and so it was fine. I could build my programs and save them on floppy disks with the enormous capacity of 360 kilobytes.

Since I first laid my eyes on a computer I knew that my future was somehow connected with computers. When I coded my first program, I was hooked. I would be a software developer.

And then I was in high school. The PCs were getting strong on the market, and if I ever wanted a job I would need to know all about PCs. So I enrolled myself in a computer school near home.
Click for better quality.
MS-DOS Logo

What a laugh! The school focus wasn't on development but on applications, and so they had classes on DOS, Wordstar, and dBase. Although I couldn't learn anything useful (at least that's what I thought) I learned everything I could to master the applications the school had.

Ok, let's be fair. Knowing Wordstar back then was great. It was the first, and for every practical purpose the only, text editor available. And dBase taught me everything I needed to know about databases -- I still need to see a database that can do more than SELECT, INSERT, UPDATE, and DELETE.

Not being able to learn what I wanted in a school I decided to be a self-learner. But first I needed to know what the market wanted me to learn, it would be cool to learn Fortran, for instance, but if no one else was using it I wouldn't have job.

So, I grabbed the Sunday newspaper, opened on the "Help Wanted" pages and started looking for what kind of people the companies were hiring. And they were hiring Clipper developers.

Obviously, I gathered everything I could to learn Clipper and learn it fast.

I was a freshman at college when I took my first job as a computer programmer. It was a small branch of a company that sells supplies to telephone companies across the country.

They used an off-the-shelf program to control their sales and finances, but the program (as it's common with this kind of software) didn't provide the management with enough information for them to make educated decisions about the company, or even strategic ones.

What was my job then? Provide the management with such information.

I had no clue on how that system worked at first, but I dove inside it, reverse-engineered the database (they used Clipper) and was able to deliver all the information they needed.

I was pleased with myself. I took a software that I knew nothing about and was able to deliver everything they needed, as fast as they needed. Not bad for a 16-year-old boy.

During my freshman year at college I was able to get in touch with a lot of things that I had no idea they existed. Mostly because I was a nerdy kind of guy who use to hang out near the computer lab when I was not working or in class.

Many times I saw senior years struggling with their final projects, developing software using Pascal or C, and noticing the despair on their looks I usually offered help. They tended to laugh at first, but when I solved many of their problems they started to look at me with awe and admiration.

As the time went by I gathered a lot of experience on software development, and using Clipper as my language of choice then I gathered a huge code library. I had about 1.2 Megabytes worth of code.

I had code for most of the common tasks I faced while developing software. Menus, checkboxes, listboxes, help files, etc. We needed to code everything back then, and my library saved me a lot of time.
Click for better quality.
Windows splash screen

Then came Windows. I remember the first time I saw a computer running Windows. It was at the Comdex. It was Windows 3.1. There was that huge line of people wanting to play with it. Yes, play. There was a game on that computer: "Solitaire."

And the world was never the same.

Different from the DOS boxes, Windows was naturally colorful. And people like colors.

If people like colors, the management will like colors too. And then they will demand colors from their systems. So, I needed to learn how to create software for Windows.

As I did with Clipper, I gathered everything I could for that task.

I won't fool you, it was a nightmare. Every book I found on the subject was saying that it was terrible to develop for Windows because you no longer had control of your own program. And furthermore, the only way to code for Windows was writing code in C or C++.

But I was adamant. I knew that the future was in developing software for Windows, so I needed to know how. Despite all the books I read were telling me to back off, I went on.

I started to oil back my knowledge in C, and started to create a "Hello World" program.

What a mess! Everything I managed to do was to freeze my computer. I was frustrated. No, I was devastated. Developing for Windows was really as hard as the books were saying.

Then someone on Redmond had the brilliant idea of porting to Windows a very marginal software, that I happened to use at home to create small personal programs.
Click for better quality.
VB 1.0 Splash Screen

The software? Visual Basic.

And life was easy again.

Yes, even though I was a Clipper developer back then, I had never quit programming with BASIC. And the same old BASIC I used to use on my first Coco was the way of the future.

The rest, as they say, is history.

0 Comments:

Post a Comment