When I was in 5th grade, I loved gym class. Who wouldn’t. Dodgeball, red rover, popcorn, and scooters. It was what most energy filled elementary school students looked forward to. For me, it was all about the scooters. Coasting across a laminate gymnasium floor on 1 square foot of molded plastic and 360° spinning wheels. They looked a bit like this.
There were some rules, obviously. The school didn’t want a bunch of damaged kids at the end of the day. Most were totally reasonable. No standing, no bumping, no laying down on your stomach. The normal stuff.
Wait, no laying down on your stomach?!
To me that was stupid. How can laying down hurt you. Simple, one small spec of debris…and bam…your chin hits the ground and splits wide open, requiring stitches and leaving a scar on your chin for life.
You can probably guess how I would come to this conclusion. I didn’t heed the warnings.
Looking back, I probably wouldn’t have laid down on that scooter, had I known it would lead to getting stitches (I hate needles) and I’d be scarred for life.
Sharing is caring
Much, much more recently, I was reading Linchpin by Seth Godin and it made me think back to some of my first weeks as a developer. While I scratched my unshaven (and scarred) chin, memories of really embarrassing moments, frustrating conversations, and triumphant victories had me somewhat yearning for the times when you are soaking up knowledge at such an incredible rate. Then the flashbacks of bugs past started creeping in, and with that…the inevitable ‘famous last words’ I spoke prior to testing and/or deployment.
“Why do I need that much redundancy?”, “No, the value will always be within this range.”, “That service is always reachable”, and my personal favorite “It worked in test?! Quick roll it back!”
Well, now that my blood pressure has risen a little just from recalling these moments, there are a few key concepts I think that really stood out to me as ‘career maker’ moments that got me through to where I am.
Start by learning the concepts
When I started my first professional software development job…I was told by my Sr. Developer that I should convert my work in progress to a singleton. I said sure…then hit Google. What the hell is a ‘singleton’. From there, I realized there was terminology and practices that were not tied to any one specific language, so I better start brushing up on the overall concepts of software development. Concepts, that translate into whichever language you end up writing.Becoming a 'professional software developer' means becoming a student of the craft. Click To Tweet
When it comes to conceptually improving your development skills, I always recommend Clean Code by Robert C. Martin.
“Maybe” is an acceptable answer, with follow through
This one is more tied to people who work for clients or development managers, but at some point, we’re all asked “Is X possible?”. My initial reaction (based on all of 3 seconds of time to think about it) was usually “No”. I’d go back to my desk, think about it, then have a solution an hour later. Saying ‘maybe’ is perfectly fine, as long as you follow through with the findings.
You are going to be wrong, a lot. Learn to live with that
Nobody is perfect. Developers, doubly so. We make mistakes, and we make them a lot. Most of the time nobody sees them but us. Think about your last bit of code you wrote. How many tiny iterations of the logic did you go through? Did you mix up a ‘haystack/needle’ ordering? From time to time, these bugs make their way into the view of another developer (or heaven forbid, a user). It happens. We’re human. The best course of action is to fix it, learn ‘why’ it got past you, and find ways to prevent it in the future.
I saw a quote somewhere the other day that summed this point up in two sentences:
Software development is 90% debugging. The other 10% is writing bugs.
– Someone telling the truth
Need I say more?
To be completely honest, I’ve only got about 5 years of professional development under my belt. In those 5 years, I’ve had the opportunity to learn from some of the most intelligent people I’ve ever met. Some of the lessons I learned were of my own accord, and some passed down from my mentors. I reached out to some other developers I know, asking what they would have told themselves, when they were first starting out as developers.
What I would tell ‘beginner me’
@cklosowski that you will never (ever) be “done” learning to write better code, just go for it. Also be intentional, don’t just copy & paste
— Jonathan Christopher (@jchristopher) September 3, 2015
@cklosowski You will hate your code looking back on it 6 months from now. If you don’t, you should quit because you didn’t improve.
— Jesse Ⓦ Petersen (@jpetersen) September 3, 2015
@cklosowski Practice, practice & keep improving your coding practices all the time. Hack other code & learn but don't do copy & paste 🙂
— Naveen-Themesfinity (@NaveenS16) September 3, 2015
@cklosowski find devs better then you & learn how they do (reading/studying their code), rather then just doing what you 'think' is best
— Mike Hemberger (@JiveDig) September 3, 2015
@cklosowski Listen to feedback from the people further down the road than you. Really LISTEN, don’t make excuses… LISTEN not just software
— Kiko Doran (@kikodoran) September 3, 2015
…on consistent improvement
@cklosowski don't worry so much about the "right way" to solve a problem. Focus on constant, incremental improvements.
— Kyle Maurer (@MrKyleMaurer) September 3, 2015
@cklosowski Take your time… It isn’t a race
— Chris Wiegman (@ChrisWiegman) September 3, 2015
…on becoming, a dentist?
@cklosowski become a dentist
— Marcus (@badmanatee) September 3, 2015
— Brian Bourn (@brianbourn) September 3, 2015