Harold Almon Took Charge of His Software Development Career
Too many people talk about doing things to improve their career or situation, but don't actually do them.
Not Harold though, Harold jumped right in and started solving algorithm problem on Project Euler and TopCoder as well as started educating himself with technical books, video training and blogs and even joined a bunch of user groups.
Harold's story is amazing and it shows how in a short time you can go from feeling like your skills or outdated and not in demand to feeling like you never have to worry about getting a job again.
Anyway, I did a video interview with Harold, that you can check out here, and here is a Q & A I asked Harold to put together to share here.
Q: What is your background in software development?
I originally started coding in Z8000 assembly language on a 4 Mhz CPU machine with 128K of memory, no hard disk, and dual 5.25 floppy drives. The teller terminal called an L1 model M30, was made by Olivetti. Sound slow? Actually, the system ran like a bat out of hell. The tellers loved the speed and the fact that they were no longer required to enter delimiters when they posted a transaction.
When we got the 8 Mhz CPU system with the upgraded 256K memory boards, we were ecstatic!
The system was designed by a brilliant young manager/architect named Ziad Sawaf and lead developer David Thatcher who created a multi-user system that ran without threads. This was a great start to my career because I got to write applications and device drivers with assembly language.
After that, I went through various jobs with C/C++, and PowerBuilder. The PowerBuilder positions went on too long and I was looking for a way to move to Java.
One day my manager called me into meeting room and asked me if I was interest in developing a system to distribute data from a centralized database to a large set of remote databases located throughout the USA.
The system was going to be written in Java, so I immediately accepted the challenge and started working on the project. After a month or so, the scope of the project became apparent and I started supervising another Java developer and I became the de facto team lead. A few more months later, we needed a PL/SQL developer and one was added to the team. Near the end of the project another developer was added and we all spent a lot of time tuning SQL database queries.
The project succeeded and was rolled out to production. The end result was that data, that formerly took days to weeks to distribute, now happened in the span of minutes. The end users were extremely happy with the application.
After that I moved on to a contact job, learned Spring and Spring Integration before being let go because of internal reorganizations that eliminated my group. I thought I was doing great, I was earning the most pay I had ever earned, and the future looked bright.
When I became unemployed, I first tried to get a contract position with no luck. Then I tried to get a job as a senior developer, then as regular developer. Nothing! I did not think I was a commodity, but on paper, I looked like one.
Three weeks later, this strategy produced immediate effects. I got a programming job, even though I lacked many of the job requirements, because they liked me. I was really surprised because after the job interview was over I thought I had no chance. I just got lucky. I decided, at that time, that I needed to transform myself.
Then I found John’s site SimpleProgrammer. I really liked John’s style and started reading his blogs and started watching his videos.
Q: What did you do to improve your skills?
I switched from learning natural languages including French, Latin, and Spanish, to learning computer languages. So I made my job my hobby. Natural languages were fun and challenging but did not help me with my career.
I found a related comment from James Edward Gray II on The Ruby Rogues podcast Episode 55 @13:06:
“How many people have to practice their job? If you’re a cashier at 7-11, you don’t go home that night and take money from your family for diner.”
One of the first things I did was to start solving TopCoder practice problems and I competed in a couple of rated matches. Soon after, I found ProjectEuler and solved a few problems.
I also started my own blog at TranslationData.com to talk about technology and related subjects. I starting buying computer books and started to re-read some old ones that I already owned. I found a problem in Programming Pearls, a book that I bought many years ago, to sort a billion numbers and coded a solution in Java.
I joined user groups for Java, Cloud Computing, Scala, and attended the Azura Bootcamp in my area. I installed Ruby and solved a couple of ProjectEuler problems with it.
I completely re-organized my Linkedin site and re-wrote my resume to try and make it more appealing.
Q: Why did you choose TopCoder and ProjectEuler to improve your skills?
I needed short projects that I could complete whenever I had some spare time. If you pick a large project, you might have interruptions, loose motivation, and never get the project completed.
The problems on these sites also helped improve my skills for solving programming questions during job interviews. I used to dread these questions but now I fell much better prepared for the white board coding challenges.
The TopCoder problems and ProjectEuler problems are short, well defined tasks that I can do in my spare time with no pressure to deliver by any deadline. I even wrote the code for one Java solution on paper because I had no computer and typed the solution into the computer later.
(By the way, for a good book that has some coding problems like the ones from TopCoder and ProjectEuler, check out Programming Pearls (2nd Edition))
ProjectEuler problems tend to be mathematical in nature and you can verify your solutions online. As you complete problems, you get awards and you can see how many people have reached your level in the statistics section of the site.
I originally thought I would stop after six or seven problems but kept going well past that number.
I wanted to learn Git and Github so I put the solutions to these problems are on my Github site. I then refactored my ProjectEuler-code based on the article Why Comments Are Stupid, a Real Example. Now I have a code base that anyone can see and I learned Git and Github in the process.