The first computer I ever programmed was a HP-9810 programmable desktop calculator. It must have been 1975 when I first got to use it. It weighed 34 lbs, had a stack-based architecture, and perhaps 4 KB of memory when fully tricked out with the optional expansion module. The math department at my high school had one. We also had access to a time-share system running BASIC, accessed via an ASR-33 over a 110-bps leased phone line.
In 1976, I had the good fortune to spend part of the summer between my junior and senior years of high school at Stevens Institute of Technology taking college-level courses. They had a pdp-10, an impressive machine which filled a large room with cabinets full of blinking lights. I learned pdp-10 assembler and Fortran. These were the days wen you punched your program onto cards, submitted your deck, and waited patiently for the operator to deliver your output on a stack of greenbar.
Since then, I've used a wide variety of computer hardware. I'm typing this today on a MacBook Pro (which cost me less than what some people pay each month for a studio apartment in Manhattan). It weighs 5-1/2 lbs, comes with 1/2 TB of disk and 8 GB of RAM, and can transmit data at 1 GB/sec.
These days, I write mostly in Python and C++ (or PHP when I can't avoid it, which is pretty often on my current gig). Any of these beats BASIC hands down, unless you're doing Lunar Lander or Hunt the Wumpus.
At one level, however, not much has changed about how I write programs. I enter the program, run it, and watch the computer do something entirely unlike what I had intended. At that point, I usually utter some colorful epithet, and get down to debugging. The only significant difference is that my colorful vocabulary has grown a bit since my high school days (I led a very sheltered life at the time). The fundamental process of figuring out why my program isn't working and fixing it hasn't changed much.
Which gets me to the point of this blog. I'm not sure what I'll be writing about all the time, but a lot of it will be about testing.
Just like I remember the first computers I programmed, I remember how I got into testing. It was about ten years (and two employers) ago. At the time, I was working on a project which had about 10 developers and a dedicated test team of 4 people. We had a release to get out, and the entire test team had just been pulled off our project to test some other group's stuff. So, we developers had to test our own code. The only thing worse than testing your own code is not testing your own code, so we put on our QA hats and got to work.
It didn't take long to figure out that manual testing was for the birds. Click this, type that, click some other thing, look at the screen to ss what happened. The only reasonable way to make any progress was to create automated test setups. We spent the next couple of months writing frameworks, mocks, fixtures and so on. It turned out to be a lot of fun, and after that I was hooked.