I’ve been tagged by Mike Hadlow (Great blog - subscribe to it now, what are you waiting for?)
Ok, let’s go.
How old were you when you first started in programming?
My dad is one the IT dinosaurs. He have been doing the Punched card dance from early stages of public sector computing in Israel, and I guess I must have inherited the passion for programming. Before I got six, he bought me a ZX-Spectrum, alongside some BASIC beginners book in Hebrew and threw me into the deep water.
After a few months of getting comfy with the language, I’ve learned to read English and got my first serious programming book, one the tried to teach things like code reuse using GOTO and GOSUB.
I also had to learn some Assembler as the ZX’s BASIC was pretty much limited.
What was your first programming language? BASIC, as noted above
What was the first real program you wrote? A simple yet effective word processing application, written in Turbo Pascal 5.5. I was about 16 then.
This word processor was for the sole purpose of aiding my older sister go through Law School. I needed a way to type and printing her seminars and there was no built in WP in MS-DOS but edlin.exe back then, and no Internet to download a WP from.
At 18 I wrote another program in Pascal, aimed at keeping track of membership payments for a local Bnei-Akiva Branch. I learned the hard way that building a DB engine by hand without any theoretical background, and without ever hearing about terms like “SQL”, “Relations”, “Transaction” and the like, is not a simple thing to do. By the time this application had enough features I have already left to recruit to the IDF, so it never got into production.
Then there was a gap of a few years during which I didn’t program until I was 24, and I needed to write my third and forth applications. They were in ACCESS, VBA and VB, written as part of my jobs in the army as a logistics officer. I needed a better inventory manager than the old MAGIC based that my unit had, and a better solution for keeping track of vacations utilisation of the staff.
There you go. Not only the first one, but the first four.
What languages have you used since you started programming?
What was your first professional programming gig?
After leaving the army, I taught myself C#, HTML and ASP.NET, registered as self employed and ran a few projects for a few clients. The first of which was a simple VBA based automation for an import/export dealer in the aviation industry. The application was automating the read of RFQ emails, looking up for matched data in their propriety Interbase driven DB, and then exported a report containing highly probable sale items. They liked it so much that they started adding features, and other business-helping apps. They still are a valued customer.
An interesting note here - the last time I have updated or fixed a bug on the first application was almost two years ago. And it’s still in daily use, so even though it’s coded in a way I’d call blasphemy today, with all the VB-ness scattered around, I still am very proud of this piece of code, as professionally it is rock solid, and not too difficult to maintain, and from business prospective it had a huge benefit for the client.
If you knew then what you know now, would you have started programming?
I would have started even earlier :)
If there is one thing you learned along the way that you would tell new developers, what would it be?
Be open to criticism. If you program alone, then try to share as much code with the community as you can, by participating in open source projects. The best place to learn is from your own mistakes, pointed out by others.
I can certainly testify on myself, that I’ve learned a lot more when I was part of teams where I was not THE tech leader, be it on paid gigs or on OSS.
What’s the most fun you’ve ever had programming? During University when I took “Introduction to Algorithms” (learning part I of “Introduction to Algorithms”) I had to build a Red-Black tree representation. Back then The only language I know well enough was VB, but I had write it in C++. I did know the basic syntax from my C background, and some vague knowledge of pointers and memory allocations, but that’s about it. The project was supposed to be written by a team of three, but I then decided that I had to learn C++ decently and write this alone, so I sat down for a long weekend, got myself a copy of the STL to learn by example, and produces a working generic RB-Tree implementation using Templates to allow generic keys in the tree.
When I sent it over to the other team members, all they had to do was to smoothen up the rough edges.
Again, it wasn’t very pretty, but I did prove a point to myself, with that little exercise.
Who am I calling out? In order to make the propagation of this topic even faster, I decided to tag 9 people (!):