Programming Doesn’t Require Talent or Even Passion
medium.com
medium.com
Citing Kaplan-Moss, Thornton, Lerdoff and DHH does not make it true. That these programmers don't consider themselves talented doesn't mean they aren't talented. They actually are very talented and passionate. They just don't see themselves in that light. You can't believe what they say, you have to look at their work.
A lot of these comments they make is actually a form of virtue signalling. It's a way of bringing themselves down a notch so you feel they are more relatable.
Obviously the talented ones will outperform the untalented ones (pretty much by definition), but not everyone has to be great. There is a strange pressure in this industry, almost that if you aren't great, then you are failing. It's taken me 10 years to get comfortable with the fact that I'm never going to be a 'name' (ironically, despite my name).
There's plenty of room for mediocre people in this industry (not that I want to work with them, but there is plenty of work elsewhere for them to do).
Talent is a natural aptitude. Passion is a strong feeling or belief.
What's that got to do with being competent at programming?
In the book "Facts and Fallacies of Software Engineering" there's a quote I really liked that seems appropriate:
"If your life depended on a particular piece of software, what would you want to know about it?” Bollinger responded, “More than anything else, I would want to know that the person who wrote the software was both highly intelligent, and possessed by an extremely rigorous, almost fanatical desire to make their program work the way it should. Everything else to me is secondary. . ."
Note that said fanatical desire is not a passion for programming, though it can perhaps be considered a passion for quality.
I'd have to go with intelligence, expertise, ethical behavior and rigor. Couldn't care less if someone had a natural inclination or passion for programming. This is stuff one might need if they want to convince someone to work at their startup for low pay.
http://slatestarcodex.com/2014/04/23/friendship-is-countersi...
http://slatestarcodex.com/2014/08/09/friendship-is-still-cou...
They're not Donald Knuths, you know? Making somewhat novel web frameworks takes a bit of inspiration and knowledge, but it's not like it makes you a hero.
But I think that the article is spot-on with regards to "passion" setting a really high-bar that is totally needless.
I dont really care if the plumber I get in to fix my toilet is "passionate" about getting shoulder-deep in the bowl to fix it - I only care that he has the skills to do a good job that sorts out the immediate problem and wont cause more problems later.
Why do we think that programming is so different from plumbing that we not only need pure skill but "passion" too?
I know little of plumbing but I was under the impression that programming projects last quite a bit longer than plumbing ones.
Even the maintenance phase also seems to be much more proactive in programming than in plumbing.
In my opinion passion is important when we're talking months to years per project.
But if the project is something different that requires creativity then I'd prefer someone talented and passionate who cares about the quality of his work above and beyond.
An non programming example would be someone who's designing, building and interior decorating your dream home. Do you want someone with talent or someone with talent and passion?
The person with talent would give you a house that you've probably seen elsewhere. Everything is up to building code but doesn't surpass it. The floor hear and there migt develop a squeak down the road or maybe the layout is not as convenient after livin there for a while. The interior while nice is nothing exceptional. You're not going to wow your friends witht it.
Now the guy with talent and passion. The home will be a unique design. It will be built solid with many future problems already taken into account. The layout is perfect and the interior is amazing.
So in my opinion, passion is important when you're trying to do something new and/or unique regardless of the timeline.
I like Django and Jacob Kaplan-Moss's work, but the sentiment of On his Twitter profile, he describes himself as “not a real programmer” to show that he’s had enough of these kinds of misconceptions is false humility. He's not a blowhard but it's clear he's talented. There's no point in acting like he's not. Same with the Bootstrap dev. It may have taken work to get there but to cite authors of work like that and then use them as an example of mediocrity is contradictory. If mediocrity doesn't matter, why not cite mediocre programmers? Because nobody is using their code.
Similarly, DHH is clearly passionate. There's no point in acting like he's not.
I’m not a real programmer. I throw together things until it works then I move on. The real programmers will say “Yeah it works but you’re leaking memory everywhere. Perhaps we should fix that.” I’ll just restart Apache every 10 requests.
This mindset is acceptable, but someone else has to go back and fix your mistakes. That's a disservice to yourself and others.
A lack of care and/or mediocrity shines through in finished products. Have some pride in your work. Care about your users.
Many people cannot find jobs in fields that they are talented in or passionate about that pay well and have decent working conditions. They have to take jobs in other areas.
An ideal job for this would be one that pays well, has decent working conditions, has consistent working hours with little or no overtime, and that does not leave you mentally or physically tired after work. With such a job you have plenty of time and energy outside of working hours to pursue those things you are passionate about.
Programming could be such an ideal job. It generally pays well. It generally has decent working conditions. Plenty of programming jobs (especially those that don't need talent) have consistent hours, take little mental energy, and no physical energy.
Programming something simple is easy, like assembling a shed in your backyard is easy. You don't need to be a great programmer/builder to do it, just an OK one. There's no shame in that. But other programs are the equivalent of a Formula One racecar, a skyscraper, a nuclear reactor, or an automated factory...
I think the claim of the post is true at some level; you can be a programmer without being good, and there's nothing inherently wrong with that. There's nothing inherently wrong with being good and wanting to be better either, though. And the good programmers get to work on the cool stuff...
What got me into programming must've been passion, but perhaps not passion for programming. Passion for learning new things. Passion for learning to solve problems (quite different from "solving" the same boring nonproblems over and over again!). Passion for the liberating feeling of being able to help oneself, build things for oneself, to create for oneself. Passion to be good at it, whatever it is that one does. Passion to figure out how to build that garden shed, then a motorcycle, then a F1 car, a nuclear reactor... There's probably more.
So there is a lot of passion in me. But it isn't passion for programming per se. That is to say, it would be very difficult for me to pretend to be passionate about assembling garden sheds or cars for somebody else all day long, every day. I could do it, and no doubt I could be very good at it. But, no passion for it.
Just like cooking. Yeah, I love to learn new recipes and try new stuff -- you could even say I'm passionate about it. And just like in programming, the reward is there at the end: something for oneself. But that doesn't mean I have a passion for flipping burgers every day, just as I probably don't have any passion for the average software company's crud product. (I have nothing against burgers, by the way.)
This is an anecdote, but it looks like a lot of the so-called passion w.r.t. software or programming is just, well, being excited about something new and exciting. For something to be new for you, you have to be inexperienced with it. That is to say, being passionate about some software (that you didn't make and aren't a part of) is a sign of inexperience. A bit like buying into some hype, or fad, and thinking it's the coolest thing ever, well, at least until you get bored of it, or the novelty just wears off.
As a concrete example, yesterday I saw the blog of someone I've been chatting with. On the blog, he tells a bit about himself: he's passionate about Linux. He's not a Linux kernel developer or anything like that, so I asked what he meant by that. Response? "Oh, that was two years ago. I didn't know about any other open source OS back then."
You could replace Linux with some programming language or framework or whatever, and you see a lot of comparatively inexperienced developers who seem to be passionate about it. But once you've seen a few dozen programming languages and about as many frameworks over the coures of 20 years, there probably isn't so much new and exciting in them. So have these more experienced devs simply lost their passion? No, it just really wasn't passion for the language/framework/whatever to begin with.
(And yes I'm aware this isn't always the case; I know there are people who have real, lasting passion for some concrete thing. For example, if the blogger I mentioned above were a long time Linux kernel developer, I wouldn't question his passion for Linux at all.)
What all this means is that if you'd asked me when I was 17, I probably would've said yes, I'm passionate about programming. Because I was inexperienced and there was so much new and exciting to discover.
But now, I can't claim to be passionate about programming. And a lot of people would seem to think that makes me a bad programmer, or "mediocre" at best. I wonder if I were a better coder at 17?
The other thing that bothers me is people who think you won't do your job well unless you're passionate about it. That's just bullshit. I would say a large proportion of people take pride in doing their best, even if they hate what they do.
The novelty has yet to wear off, there's really so much to learn.
However, I agree with the general sentiment of the responses here: if there's no passion, one can not really be good (at whatever, not only programming.)
(In darker moments I sometimes wish it wasn't so though: Wouldn't it be great if people with nothing meaningful to say simply weren't capable of speech or writing? ;P)
Programming is medium of expression. There is huge demand for bean counting jobs and that's fine.
You'll never be really good at anything you don't care about.
Depends on your definition of "care."
If by care you mean find interesting or enjoyable, then I have to disagree with you. I'd say most people are very good at at least one thing they don't care about simply because they need to do it for some reason. I have neither talent nor passion for mental math, for example, but I'm quite good at it (relative to the average person, at least) simply because I need to do it every day for my job/hobbies.
If by care you mean find it worth doing, then you're right, but then it's just circular reasoning--no one does anything without, on some level, finding it worth doing, so clearly you can't be good at something without doing it. You could say I care about mental math in the sense that otherwise I'd just refuse to do it, but that goes without saying.
I'm pretty sure the OP is about the first definition here, not the second. It shouldn't be controversial that human beings are capable of learning things (and learning them well) that they're not naturally inclined to do nor are they particularly interested in.
I can play Basketball. I don't have a talent for it though and I sure as heck am not going to do it professionally. And if I did, I'd quit after a while because I don't have the passion.
However, the author does make a point in that having a passion or talent for problem solving is better. Programming is after all just the tool to do that.
I do take a little offense at some of the other posters saying "programming isn't hard"
I know many people who have tried to learn it and say differently. And saying it isn't hard just makes those people feel like shit. There must be something wrong with you if you can't learn it. I've been told that playing piano is easy. Yet I've spent many hours trying to learn it and I am still terrible at piano and every time someone says it is easy I want to smack them. I imagine people who are told programming is easy feel the same way.
Also, it is weird that I've spent 20 years mastering something that is so easy.
If you want to define it as mediocre fine but then 90% of things in life are.
I never understood the notion that developers are somehow special and need to be better than the average worker in another field.
Honestly, that seems fair. Sturgeon's law would suggest it's even optimistic.
This isn't about corporations this is about cooperation at large scales.
I do think it's a tough gig for a person that isn't passionate, whether about programming itself or its outcomes. The part of the profession I'm in is a never-ending treadmill of fads and innovations. It's like the I Love Lucy candy packing episode. I personally love it, but I can imagine it not suiting everyone.
But if the goal of the post is to say that you don't have to be done kind of super genius to be an accomplished developer, I'm on board with that.
Now several things make up that talent. Logical thinking, good at math, problem solving, attention to detail, knowing how to break down a problem into smaller pieces, troubleshooting, etc. Not all are required for some types of programming. The levels of proficiency required in those things also varies.
BUT, if someone doesn't possess any of those skills then they're not going to be able to program much at all. Even if they wanted to they're not going to go far and trying to teach them will be futile and frustrating.
Many people can be taught to program but their brains have to be wired at least a little bit to be able to do some/all of those mental skills. There has to be something already there to build on even if it's still just a tiny seed. That's talent.
In most professions excellence is recognized. Like in basketball there is Michael Jordan, or in investing there is Warrent Buffet. You would not say that basketball and investing do not require talent or passion. Unfortunately some programmers think so badly of themselves they could reach the conclusion that they do not have skills.
If you look at fields where it matters what people produce and the product requires sophisticated and diverse differences, then attempting to rank them too often is catastrophic. For example Microsoft damaged themselves with stack ranking, not just because of immediate social harm, but because everyone had to rank well by showing off skills that were known to be valuable, top, classy, aka the best fads of today. That puts the company on a walk to a local Maxima and unable to compete with a company with engineers who can invest in random skills that just seem interesting without risking a nervous breakdown from the combined costs of signal investment and actual investment.
Seems most of these articles about programming is a no skill profession are usually coming from somebody promoting a 3-month boot camp.
As far as submarines stories, I have no idea..
Programming is a tool, a means to an end. One writes code to create something, and it helps to be talented if one has little experience. Passion helps to reach your target (e.g. create a new OS kernel, a new programming language). I may enjoy programming, but passion for programming without a target wouldn't drive me far.
[EDIT just realized khedoros1 made the same point, even using the same metaphor...]
The passion was driven out of me by the need to pay the bills. I'd like to think that i'm a gun for hire, unfortunately i'm more like the tap. When there's a need it's used, nothing more, nothing less.
I wish i could do something more exciting with my skills.
This can be said about 99% of all the jobs ever. You don't get paid to have fun. There's this weird expectation in software development community that you can find a job that is fun/interesting/intellectually engaging AND well paid. Guess what - big part of your compensation is specifically because the job is BORING and nobody is willing to do it.
I do not like the "talented and passionate" rhetoric for two reasons more than its basic inaccuracy.
One is that it can be unnecessarily discouraging to people who are "merely" smart and good at what they do, but not yet experienced enough to question popular mythoi in the field - something I've seen in practice, and had to help people overcome.
The other reason arises from my own experience as a programmer who is talented, enthusiastic - I won't say "passionate" - and also entirely self-taught in the field since the age of six years. When I was in my late teens, the web became a thing, and I used it to further satisfy my eager interest in what other programmers had to say about the profession which I'd long since decided to make my own. Much of that was very similar to what you hear today - that you need talent and passion, and the rest is more or less negligible. Imagine my surprise when I discovered this was not the case! Imagine the crisis of confidence resulting from the discovery that the majority of being a professional programmer has nothing at all to do with your native inclination toward the field or the degree to which you can find enjoyment in writing code, but instead resolves around clearly understanding the problem that needs to be solved, and doing the hard, often dull work of solving it - not just the fun parts, but all of it - which oftentimes doesn't involve writing code at all.
In the end I got through it, and came out with the foundations of a solid professionalism which has served me extremely well since. But I could as easily have come to believe that I didn't have what it takes after all, and in any case that was a bad couple of years that really didn't need to have happened, and wouldn't have happened were the prevailing programmer culture, then and now, not so up itself that it casually throws around advice that's wrong enough to endanger the inexperienced, as a means to satisfy what I have latterly come to regard an infantile "look how cool I am, look what I can do" egotism.
I didn't need that. The junior devs I've helped with similar situations didn't need that. The devs I've worked with who are older and vastly more knowledgeable and capable than I am, but who are with good cause afraid that no one will ever hire them into another engineering role because they have wrinkles and lives and don't spend all their off hours dinking around with the latest frontend fad, really don't need that. And our field doesn't need that, either.
Still, to get to the top is harder as it's shrinking relatively to the number of programmers...but it's not needed, especially for a well balanced life.