Programmers are a special breed, good programmers especially - our craft is more an art than we like to admit when trying to wrestle it into a Hard Engineering Discipline (tm). It's actually more like mathematics, music or the wizardry Kaylee does in Firefly.
Good programmers have a special feel, a talent that is difficult to explain and even harder to attain.
A few weeks ago @zidarsk8 came rushing to me "Dude! There's this guy! I've been teaching him coding! He's already better than me! Hasn't even heard of a variable before a month ago! It's so frikkin' awesome!"
He made me promise to blog about it. Why is it some people just get it? What's so special about them? Can anybody be taught to program or does it really take a special breed to become even a competent programmer, let alone a good one?
I remember tutoring a high school kid about a year ago. About to fail his programming class (CE high school, we have those), he came running to me. In a month I was to teach him everything I know, or at least enough to pass the class.
Come end of the month and he knew everything about loops, variable assignment, even understood that functions are packets of code that can do stuff. My parting words to his father were "Yeah, he knows everything. Just needs a bit of practice to get it."
I doubt he ever passed the class. Or if he did it was the teacher's mercy ... and that teacher isn't very merciful from what I remember of her in my high school times.But this isn't just because I'm a bad teacher - others came to me after that one kid on his recommendation and I got a "Thank you! I bloody passed! yay!" email from all of them - there are people who simply aren't programmers. Never will be programmers. Not even mediocre ones.
The non-programming sheep
Jeff Atwood wrote about _Separating Programming Sheep from Non-Programming Goats_in 2006 where he mentions a study that claims to have found a test to predict future programming ability.The test is really simple:
a = 5 b = 20 a = b
What are a and be now?
And some more questions like that. Only 44% of the students formed a consistent mental model of assignment - even a wrong one. The rest failed or didn't answer the questions.
Worse still, after a semester of learning to program, the numbers were the same. Only 44% of the students understood how assignment works.
Some people just dont get it. Apparently.
But I think there's an even simpler test ->
Sometimes when you give an impressionable young mind (anybody deciding to learn to code, age is irrelevant) two tools and a problem, they will use the two tools to create four more tools. Then they will get on the internets and find some more tools ... soon they have twenty tools and what was the problem you wanted me to solve again?
Pure unadulterated passion for programming. When you can be fascinated, even excited, about this stuff without a need to solve a problem. Hell, even if you are solving a problem that you know is a meaningless exercise ... that's where greatness lies.
It doesn't matter what age you started coding at - many studies have shown experience is not a predictor of quality in our world - what matters is that you have a passion for this stuff.
Because if you've got the passion, then you probably have everything else you need as well.
- Programmers are fucking lazy (swizec.com)
- Becoming a better Developer (bob-roberts.net)
- Programmer - The Best Professsion? (jaredcosulich.wordpress.com)
- What's in a name? Programmer or Developer (bob-roberts.net)
- Today a programmer was born. And you are my mother. (news.ycombinator.com)
Learned something new?
Read more Software Engineering Lessons from Production
I write articles with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them. Fueled by lessons learned over 20 years of building production code for side-projects, small businesses, and hyper growth startups. Both successful and not.
Subscribe below 👇
Software Engineering Lessons from Production
Join Swizec's Newsletter and get insightful emails 💌 on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.
"Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"
Senior Mindset Book
Get promoted, earn a bigger salary, work for top companiesLearn more
Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.
Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.
Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help 👉 swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.
Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers 👉 ServerlessHandbook.dev
Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization
Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog
By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️