Is it possible that some people are just not cut out to program?
I'm not talking about not being able to write FizzBuzz here; what are some traits or learned behaviors other than sheer programming ability individuals might have that make them less (or more) suited to working as software engineers?
17 comments
[ 2.9 ms ] story [ 50.7 ms ] threadThose of us who learned in high school and college have the passion for programming that drives us to succeed. Not everyone has that passion.
To be honest a lot of people have problems learning how to program. I worked in a college computer lab back in the DOS and Novell Netware days. I've seen people struggle with trying to program or debug. The process is very stressful unless people know how to handle stress.
HN claims fake it till you make it. In a way this is true as you learn and practice programming. It keeps your confidence up and the more you do it the better you get.
I feel like this implies that those of us who learned programming outside of a traditional classroom are not "passionate". If so, that's just not true.
Almost every programmer I speak with who has a CS degree or who took at least one class in college has told me they both did not enjoy the structure of their courses and learned the skills they actually use after college.
My experience in the few courses I did take on programming, they're just not structured very well and are unfortunately tied to a course catalog or curriculum.
Your point on stress, or rather failure, is more poignant. I think that it comes down to an individual's ability to accept incremental victories and to think critically, or problem solve as it's often called.
Also, I feel like a programmer's ability to read documentation and examples and project them onto his/her own software can make or break a career.
Without that passion, programming kind of sucks. When I programmed it was like an art form and a science all in one. I would try to solve a problem with my program, make mistakes, get errors, get the wrong results, and had to keep editing, deleting, and rewriting code until I got it to do what it is supposed to do.
I worked with people who didn't go to college and had no degree and had a passion for learning and read books to get good at programming.
Without that passion, it is kind of hard to stick to keep trying until you make a program that does what you want it to do. People give up sometimes and all they need is a little help with another set of eyes looking over their code.
I had a good college and good professors who encouraged me to keep learning and getting better and develop that passion. Other colleges didn't have that as sometimes the professors didn't know enough about the language to write a program or help students. I once had to help my friend's mother at a college because nobody at that college could help her learn how to debug her Visual Basic programs I spent a few hours in their computer lab and helped her debug like 10 different programs.
I've also seen MOOCs where they try to tell students to use an integer to store PI.
const int pi = 3.14159
Instead of using math.pi or something else. The constant pi is an integer so it equals 3.
I've seen all sorts of stuff.
Ah, honestly, I envy that time you had before the internet/javascript/SPAs/etc became so ubiquitous. I bet it was loads of fun figuring it all out and hacking your way to a solution?
You're right, programming really is a drag. I know it's different, but just like with athletes and training versus playing, writers toiling away on manuscripts and outlines, and someone like my father, a construction worker, who labored on bits and pieces of a project before ever realizing the satisfaction of a completed project; you have to endure the suck and find satisfaction in it. SMALL VICTORIES.
Your story reminds me of the passages on Bill Gates in Malcolm Gladwell's The Outliers that talked about Gates teaching himself programming and spending time in the school's library to use the one computer, eventually consulting at an extremely young age.
Programming requires a certain amount of abstract thought that not everybody is capable of. As far as I can tell, there's a direct trade-off between spatial reasoning and abstract reasoning.
- in a domain that they understand
- if given suitable tools
I've seen musicians do things I couldn't begin to draft an implementation of, thanks to domain-specific environments like Max/MSP. Their understanding of audio mixing, musical timing, and signal processing mapped to the development environment _and_ workflow intuitively.
It's humbling when you struggle through basic DSP, then a guitarist shows you a complex algorithm and shrugs it of with "its just like lil effects boxes, dude."
Watching him debug was eye opening too. As if tracing a buzz on his guitar's signal path, he patched in after each node to confirm the output at each step, like I'd do with a debugger on each line of my code.
His context was so beyond my understanding though, picking up on issues further down the signal chain by noticing frequencies that would feedback, clip or cause phase issues. It really showed me that an understanding of the domain and context of what you're trying to achieve trumps nearly everything else.
That could/should be the future of programming. Every interaction with a domain expert where he shows what the app should have done makes me think "Damn, what if I as an engineer was writing tools that enable the domain experts to write the apps?".
We as engineers will be spending time writing tools with powerful toolkits that enable domain experts to write apps. Will that also lead to a shrinking of the number of software engineers really required? ARE we in a BUBBLE?
Programming requires very abstract, logical thinking - not everyone's brain works like that. Learning programming also requires a ton of patience and determination (chasing all those bugs) as well as the ability to learn large amounts of arcane syntax by heart.
Not everybody has these skills, or the grit necessary to put in the required hours of training. And why should they? I don't see this as any kind of huge societal problem... After all, we don't go around demanding that everybody should be able to work as a carpenter, or a lawyer, or a surgeon. You do what you do best, and that's all there is to it.
If you have paid any attention to the society you can see the different classes of personalities. Some of them, naturally, are polar opposites.
For lack of a better word the "artsy" types are generally not "cut out to program".
The people that are cut out to program are generally in a small subset of the "thinking" types.
I know I'm generalising but that's the point, you can almost never state something about a large population and have it hold true or false in all cases so exceptions exist but they are negligible.
Try explaining binary to that kid in your school that loved ballet dancing and theater. You can see a part of them die in their eyes in the first 15 seconds.
Try it with that other nerdy kid that keeps to himself and you see his eyes shine as he has the ah-ha moment. Chances are he doesn't see "the point" of dancing, too.
These differences exist and they are everywhere all around us from a young age to adulthood. Denying it doesn't help anybody.
Some people have innate abilities that make them better programmers, yes. But they have nothing to do with arbitrary cultural groupings tied to your particular country or social class, which apparently you think are universal.
You will find more programmers in a random sample of "nerdy/thinking" personality types than "artsy" ones.
And you will find more musicians among artsy ones than the nerds.
The cultural aspects can define things such as the type of activities that the people participate in but those broad groups (creatives & non-creatives) exist in all cultures.
Which group would you say is more likely to have more (current or one-day-to-be) programmers in it? A group of loud extroverted cheer leaders or the folks from the chess club?
Virtually everyone would say the folks from the chess club. Except those who are self-conscious about being politically correct. Those would say they have NO IDEA! It's completely random. Maybe a few Linus Torvalds would come out of the cheer leading team.
Look, I'm not arguing about specific cases and exceptions. I'm talking about the GENERAL pattern which exists and is the basis for the myriad of stereotypes that everyone is aware of.
I think that's what he implied by the "artsy" types :)
The answer to your question and the music one is YES. Not everyone is going to be A Mozart or a Torvalds, and thats OK because it takes all stripes to get things done.
All it takes is motivation, dedication and practice to master programing (or an instrument).
Looking at the extremes makes it easy to find examples of people who aren't cut out for it.