First, let me say that writing software is not usually heroic since doing it is usually not a risky endeavor. I’m using “hero” as more of a colloquial term for a person who has a huge success, sometimes against the odds.
While working as a lowly programmer at Pleasant Hawaiian Holidays in about 1990, I was asked by a friends to work on his startup company project. He offered me a percentage of the company and in return, I worked for almost nothing on the side. I worked about 6 to 8 hours a day for him after I was done at PHH for the day. I wasn’t his first choice and I had very little professional experience. But under his tutelage, I did a pretty good job writing interesting software. I think I learned more in the first year of that work than I learned in the last decade at my current job. Joining that team, working two jobs, and making a huge contribution, was a bit heroic feeling.
I was also able to initiate programming standards at PHH and was selected as employee of the month while there.
In 1997, I had a job interview that included me writing some software for a device I didn’t have using a generic Windows device driver tool that was meant to talk to any plug-in hardware device. I gave the company the software that I had spent the weekend writing and later when they called me back in, the only question they asked was: “When the message popped up that the video tape had been successfully ejected from the VCR, was it just saying that or did it check to see if the request had been successful?” My answer was, of course, “yes.” I got that job and on my first day, I was asked to work on something different from what they hired me to do. I was asked to work on the software for a bioinformatics hardware device. After a week, I had fixed a problem where the existing software could not be compiled optimized with no debugging info. The software ran twice as fast as it had a week earlier and, given that performance was what we were selling, I was a hero. When I was hired at that job, I was offered the same pay as I was getting at my previous job with a monthly 50% bonus if my performance was stellar. I got that bonus every month for 18 months until I got a raise that included the bonus amount and a little more.
I’m not telling these stories to brag, although it is nice to remind myself of some of my successes. I’m pointing out that a computer programming job isn’t always bland or without room for huge success.
About 6 months ago, I was asked by my employer to take on a new project. This project included a lot of work writing software for our server UI which is written in Java on the back end and JavaScript in front. The code uses a user interface toolkit, or framework, that does some powerful stuff but is also quite complicated. For instance, the code in the browser that shows a list of options to the user will populate that list after the page is displayed by requesting the data from the server – the pages are not all built ahead of time. It’s a nice way to do things but I had zero familiarity with it. The code I was asked to work on is some of the oldest code in the system. In addition to those headaches, I also had to deal with the way previous programmers had made almost identical copies of entire modules (breaking my #1 rule to never have redundancy) and a bunch of my code had to be written more than once. I had no idea how any of this worked and still don’t in some cases. The final issue comes from my having worked with iOS, Android, Windows, and web apps written in other languages and using different frameworks, and this was one more to add to the list. Just in this one project, I have to switch between using a Mac and a PC almost daily.
All of the work I am doing now is hard. It’s hard like having to search the source code for text I see on the screen to find where in many hundreds of source files that text might get displayed. I spent more time searching the code than writing code during the first three months of this project.
I miss having opportunities to be a hero at work. Being treated like one by the boss because they are desperate to get things finished is not what I’m looking for. So what I might be trying to say is to look out for those great opportunities to impress co-workers and the boss, and the chance to make something amazing. Keep an eye out for ways you can have a huge success at a project. Those wins will linger for years and can lead to better projects, better jobs, and a greater sense of personal fulfillment than just slogging along trying to get the work done when it’s hard for unchallenging reasons.