I just finished reading a longform post by Michael Bromley on how he used to feel he was a much better programmer than he actually was.
I followed the example studiously, faithfully implementing all the ingenious and no-doubt cutting-edge techniques – those handy “mysql_” functions for data access; string concatenation for building queries; separating functions into a “functions.php” file; including a “header.php” and a “footer.php” to maintain consistency site-wide; shunning the bulky overhead of the object-oriented approach (whatever that really meant) in favour of lightening-fast procedural code. My skills were increasing exponentially!
This is exactly how I felt – not even that long ago actually. Even at university, I didn’t surround myself with anyone that would say they were brilliant programmers. I was the only one of my close friends that would be very comfortable going in for a weekly “viva” (coding test), and fairly confident I’d do well. And I always did.
I went onto my placement year still in that mindset. I am the best programmer I know. Oh, gosh. I couldn’t have been more offensively wrong. My overestimation of myself grew from my isolation from others who were passionate about software development, and so my story echos the same as Michael’s.
I wrote an abstraction layer over a few mysql functions: database.php. Not that I had any idea of what an abstraction layer was, and I further had no idea how awful that implemenation is. I leave that code up on github not because I’m proud of it, but because it’s a good reminder. Smarter people have written database abstract layers better than you, Shane. Just leave it to them.
My thought process quickly changed from the above, to actually wanting to learn more once I joined MyBuilder. Surrounded by a wonderful team who were smart, and better than that, willing to point me in the right direction and teach me.
That’s when I got into the opposite problem of Michael’s though. Holy shit, everyone’s a much better programmer than me. It’s pretty intimidating to go to talks and see smart people talk about really smart topics. And then you realise they’re only two years older than you or the same age.
I recently realised this feeling of inferiority was just because we never get to see how that Super Respectful Programmer handles their work. In my mind, they have this grand idea, they sit down for half an hour, and bam: an awesome finished product.
When in reality they do exactly the same as I do. They stare at the screen knowing that the bug they’re running into is a really simple one. They do sometimes go down the wrong path, and have to back out half an hour of commites sometimes. This is all hidden though. But these rockstars often aren’t super geniuses – they’re just like you, maybe with a bit more persistance and practise.
The point I’m making is the same as Michael’s post, but that it can go both ways. Isolation from others leads you to completely misunderstand your capabilities – making you too egotistical, or underestimating yourself.