Full time Drupalista. Part-time U.S. Army Sergeant. Latte aficionado. Mother Jones reader and international politics junkie.
Full biography
In programming there's no hand-holding, just like in the Army.
Disclaimer: While this post is not necessarily organized, or offers any kind of reference to facts, it represent some of the feelings floating in my head. It's not a thesis, it's just a rant.
There are two things that inspired this post:
- Friends asking me to teach them how to program
- Some previous posts by some renowned Drupal community developers about the lack of programmers (although not exactly relating to what I'm about to say)
You want to learn HTML? PHP? Drupal?
Well, then go to your favorite bookstore, pick up (or order online) a book for beginners, and start hacking away that text. That's the way I learned, why can't you?
I don't know, but I hate when people ask me: "I want to learn (this technology) things you do. Can you show me?" I always say yes. But really I consider that all they need from me is to point them in the right direction: "There: Google. It's a search engine. Want to learn HTML? Google it! " If you are a programmer, chances are that's the way you learned too, am I right? Am I being unfair? Is there something wrong with me? Does it mean that because I learned programming by hacking a 20 lbs. Deitel & Deitel Java for beginners book all by myself every one else should?
You don't have to go to college to learn programming, for Christ's sake. But I look around and I feel that people are just so used to the hand-holding they receive from kinder to high school. There's none of that in programming. There can't be. If you are a programmer, you must be able to accept responsibility for a task, and complete it without anyone else interfering. I am not saying no to teamwork or pair programming, but If you are not able to complete a task by yourself, how good a team mate can you be?
Some people just expect to be shown how to do everything, and if a PhD at college didn't show them how to do something, they trip.
That's why there's so much failed would be programmers that entered the computer sciences faculty and ended in another one, because in programming what you learn in a 45 minute to 1 hour session is just not enough. In order to be productive you-must-research by yourself all the sources available until you find a solution to the particular problem you have at hand. Unlike maybe other concentrations, which consist of massive embotellamiento (stuffing dozens of pages at one time in your head, then forgetting all you read after the exam), computer sciences and more specifically programming is requires an never-ending problem-solution approach, and each problem in programming tends to differ from each other. Yes, you have algorightms, just like in math, but you are still required some healthy amount of creativity towards solving each particular problem. That creativity is the one that the professor won't teach you in class. He might show you the algorithm, but you must actually come up with the actual creative implementation. But coming up with that creative solution may require something more than mere intelligence. It requires patience and above all cojones. Because some problems are just hard, if you don't have the proper attitute required to be sitting in front of a screen -googling- or a whiteboard -making pseudocode- from dawn to sunrise you'll give up. And then it's faculty switching time.
Unless after graduation you land a cushy job at a filthy rich, giant company that teaches you how to do everything with salaried 'training programs' in hotel rooms you're out of luck if you cannot do something as simple as googling a technical manual for an API. Most people I think expect jobs like the former, and I am afraid there are less companies like these every day.
Here's why I think there's a lack of programmers whilst there's such a huge demand for them - the job is different from others in the sense that it requires people to be:
- Adaptable: constantly evolve, be on the edge. Stay on top of the technical news, and learn vital new technologies in their respective fields without being told to do so
- Dependable: An "I could't find how to" attitude is strongly discouraged
- Proactive: Shift from the fricking "they didn't told me to do this or that" mentality rampant in large bureaucratic organizations (needless to give examples)
- Possess a problem-solution mentality
- Able to persevere against adversity: When you can't find how a Drupal hook or particular piece of code works, you hack it until you how it works. Period.
Doesn't these sound like the Seven Army Values? All of these qualities are simply essential in any leader's toolbox.
I mean, the help for becoming a programmer is out there, and if you really, really, really want to become one, you eventually will - else you will end up studying biology, accountability or frying french fries with hamburgers on your nearest fast food (something that requires mass memorization as opposed to the previously mentioned values). And don't think I'm against working at a fast food, I did that too when I was 18 =D
And the Rant continues - On the U.S. Army, Army Values, leadership, society and education
Note: Most people will use as an excuse for not becoming entrepreneurs the fact that they have children, a car, and a house. I have all of those too, and I don't have debts, nor I sell illicit substances. All it takes is leadership.






