While thinking and reflecting in my Marmite Moment, I hit on a key point in my mind. I am, and pretty much always have been a student without a master.
Like most geeks, I got in to computing at a relatively young age (I think I wrote my first line on code at about age 10). I had relatives and friends that sparked my curiosity in computing, messing around with installs, playing games and then coding. Video games fascinated me, but the thing that I really loved is the concept of this machine can do anything you tell it to. This is why I got in to applications development rather than games programming (which is a completely different world – often not realised by non-programmers). I didn’t want to create realities, I wanted to solve problems.
So, I was always the computer geek. I was the nerd in class, I was the nerd in the family, I was the nerd in the peer group.
Hi, my name is Rob and I am a nerd.
The problem (?) is that this has always seemed to be the case, I have only worked a couple of jobs as an actual developer (rather than just doing ad-hoc geek stuff). When I as doing the ad-hoc work, I was the “best” geek available, and when actual in a contracted geek role, I have quickly got established and found myself wanting to know more about things that my peers do not know.
Now, I do have to say, in my current job, I do have the privilege of working with some smart people who have written a lot of code, and have a lot of experience in their own fields. However, the things I currently really want to get great at (i.e. “this is how I want to work”), I seem to be “top kid”. This is not anything against them, it is just a natural process (they are family men and don’t have the same kind of time to nerd-out like I do!).
The thing is, I don’t think I am alone here, I have recently heard several podcasts and read several articles by people in similar circumstances. It is often agreed that software as an engineering profession sucks. We have no real standards yet (although some are starting to emerge), and perhaps more importantly no real internship or training program. There are no “developer” courses, and computer science guys don’t really learn “how to program”, they learn the science behind it.
So, that means you end up with a shockingly high number of people like me. People that want to be great, grow and learn, but we have no one to really look up to, to train us, to teach us. I find the best thing I can do is to network and just suck as much knowledge out of everyone and everything around me. But that can often lead to misinterpretation of “practices”, taking a standard and doing it slightly differently (rendering the standard useless). Is this a good thing for the industry?
So how do we solve this? I can only hope that by posting my ramblings here can spark similar discussion, bring people together so we can all work on improving each other. By continuing to network (be it by blogging, Facebook, Live Messenger, Twitter etc.) we can share our experiences. Perhaps in doing this we can help each other to become our own masters? Is software so malleable that standards are just too hard to really define? Would many standards/practices actually stifle the innovation and progression of our industry? I’m sure I am not the only one thinking some of the “best” code I have seen has been a complete hack and should never really see the light of day, but it got the job done.. Answer me this coding Jedi’s - What good is the force if you cannot bend it to your will? (be it the dark or light side)!?