The original post is from here: http://zegarkus.com/2006/10/05/create-version-2-0-of-your-programming-career/
This is article is a personal versioning of my programming career. The first version of my programming life I shall call Geek 1.0. This version of myself I was very cautious, naïve, bookish. The second stage of my programming life I shall cleverly call Geek 2.0. This is the current state I am in enthusiastic, daring, reading lot of code, writing a lot of code and experimenting with my art.
Geek 1.0 produced small amounts of safe but uninspired code. Geek 2.0 produced massive quantities of beautifully heinous code. This is my personal experience of how I transformed from Geek 1.0 to Geek 2.0. My merciful nature has kindly produced a quick and dirty 3 point bullet list (deadlink: http://zegarkus.com/2.0) for those on a schedule.
Release of Geek 1.0:
My friends questioned me why I learned PHP ‘on the side’ after all, no one taught it at the university in which we were force fed Microsoft products. But learning PHP/MySQL seemed easier and more natural than ASP. Fresh out of technical university, this skill actually made my CV a bit more attractive as more people realized that PHP was not a hallucinogenic drug.
Needless to say, I was really excited when I landed contract job from a recruitment agency. In my excitement in accepting the offer, I later painfully noticing that I had missed on crucial element: signing a contract. Since this company was named ISE (Integrity, Standards & Experience) what did I have to lose, right?
Geek 1.0 was now to be unleashed to the world! I dug in my heels and handcrafted my first project a good ol’ fashioned CMS system (hey those were cutting edge in their day!). After three weeks of avoiding sunlight and hermetic existence, I uploaded the code and kindly asked for payment.
They loved the system, however they told me with the utmost integrity that would be paid the standard rate as soon as they experienced some cashflow into there bank account. Basically they were cheap bastards. *
I was in a panic, I was nearly broke and I had done something very stupid by placing Geek 1.0 into the hands of these wolves. But every cloud has a silver lining lucky the web development company who was hosting ISE’s website was looking for programmer. I was contacted, came in for an interview and was hired!
This web development company was young lively and I was going to make my mark in programming world. This was going to be were Geek 1.0 would really shine! Things were looking great then I got silver lining with a cloud I got promoted.
The senior developer retired and they made me to take over his position – a position that I just didn’t have the experience for. Yes – this sounds like dream come true but in reality it was the worst thing that could have happened to Geek 1.0. Heaps of responsibility was piled on me. I had to manage legacy code and I was very still inexperienced coding. My passion for programming vanquished. I wasn’t writing new code, just maintaining a lot of old stuff. Though I loved programming – the job became more of responsibility to ‘not fuck things up’ for clients.
The most forgettable incident came when I misread the project specs for job website – I had inadvertently changed some the meta-tags in the admin interface of the software. The results of the changes where truly inconsequential and had no affect on their operations – little did I know that meta-tags were the cosmic glue that held their system together! What happened is that their internal developer for this website noticed timestamps and then the management proceeded to turn a pissant hill into the Himalayas. As it turned out, this company used this incident as an excuse to not pay for the hard work myself and other had put into the project. Because they were a big company we acquiesced, but we lost contract 1 month later to another web development company (who in turned where screwed over by them as well).
This had left a psychological effect on me- I was second guessing everything that I did – like reading a line of code 10 times – checking documentation 30 times, testing the code about 90 times. Needless to say I was not very productive. Thankfully they promoted another more experience programmer to take charge of the projects. But my confidence was shot.
After one and a half years at the job, the place went bankrupt and I was without a job. I did the dark arts of search engine optimisation for the next 2 years. Geek 1.0 was now abandonware. I believed I was just not cut out for programming and I had come to hate it. Besides, I was doing ok with this SEO stuff.
Early beginnings of Geek 2.0
After working for the SEO firm for about a year, I had a little side project were I wanted sell some of my artwork online. I had looked several other online merchants but I really wanted something that I could hack into when needed to make graphical changes and minor tweaks to the code. I finally decided that I should use Zen Cart for the project. I still had no desire to program, I just wanted to tweak around the templates a bit and make them optimised for search engines.
Then something strange began to happen. Because this was an open source project, I could change code and not feel guilty about changing stuff there no critical clients or anal programmers to torment me. I started to change bits and bobs, nothing spectacular. And I was enjoying it!
Then I got the idea to build an e-card system into the system where people could send my artwork as e-cards. I didn’t build a new module for zen cart, I just wrote the ugliest piece-o-poo code hack to accomplish this task. One thing led to another and I eventually got more ambitious and tried to write search engine friendly urls for Zen Cart – which gave up halfway finished on because I was getting about 10,000 visitors a month to my website (why bother?). ** Through Zen Cart, I finally enjoyed programming again. I dived into other open source php projects as well and starting to learn to program all over again. However – I still didn’t want to program for living.
Geek 2.0 emerges
I was doing quite well at SEO but unfortunately the company I worked vastly underappreciated me. I knew I had to leave when my boss took credit for optimisation that I had done for one of their major clients. My optimisation work put this client far ahead of the competition and turned them a very lucrative company.
The irony of this was that this company was the jobs website company I had placed the wrong Meta tags in their admin system. Strange Karma!
Needless to say I was yet again disheartened. Why bother giving your best to company that excretes on you in the end? I got some bad performance reviews after that as well – mainly because I didn’t care. I had to leave – so for the next 5 months I went searching for a something new. I put all my mental energy into finding a job in a positive work environment.
Then I found the job – I was scheduled to go in for a 20 minute interview and it went on for 3 hours. It was for a start-up Internet company. I was expecting a full time optimisation job – they wanted someone to program and optimise their sites. I can tell you this scared me shitless and excited me at the same time.
Because of self doubt, I nearly turned down this job. However, I accepted this job and it became the best career decision I ever made.
I started programming immediately – oh the horrendous code I wrote – and oh I how I loved it! I didn’t even create proper set of classes for the first websites I wrote. But we made money and were successful – and after 3 months, my bosses made a shareholder in the company! I was finally rewarded for my efforts. Because of this, I spent hours and hours learning how to program and reprogram stuff. I spent lots of late nights looking through tons of open source code. The stuff I was programming wasn’t new, so I didn’t have to reinvent the wheel – just integrate some new wheels to the project!
Stuff was getting built really fast – in one years time we had 125 websites around the world that were bringing us money. Geek 2.0 finally had finally come of age!
In summary here are the major steps that took me from Geek 1.0 to Geek 2.0:
- Find A Good Work Environment: A great work environment promotes freedom of expression. Stingy bosses, corrupt managers, demanding clients and inexperience for a role can all go along to destroying your confidence as a programmer. In certain sense, these are some of the dues I paid to get into my current work environment which I love.
- Read Other Peoples Code: First of all, you’ll never know if your code is good if you have nothing to compare it to. Because programming from books has its downsides, you should look at the code from open source project instead. This is living breathing code. Take the other person’s code and see how you can optimise, twist it, warp it and make it your own! Get involved with open source project
* Incidently after making a few threats I was eventually paid nine months later!
** My whole Zen Cart experience came to an abrupt end when my hosting company got plagued by viruses. I had lost everything and I just didn’t have the time to reconfigure the site because I had not documented any of my changes! The homepage of my former hosting company still reads “Session initialisation failed” after 6 months.