I’m not sure how I feel about this whole train everyone to program movement. I do think that everyone that wants to learn how to program, should be able to. But wanting to learn how to program and wanting to program for money are not the same thing.
I recently saw something titled Learn how to program for $29
Really? $29? What can you possibly learn for $29? Better yet, how much do you enjoy programming if it’s only worth $29?
That screams I heard programmers make a lot of money. I want t make a lot of money.
We aren’t spending enough time teaching new programmers
I taught a few classes for a few years and I would not even consider teaching someone any sort of programming for $29. The amount of stuff I would have to skip is alarming. I suppose I would just have to teach them how to do some task directly. Like this is how you validate an email address or this is how you search and replace text.
I would rather approach it from logical thinking perspective. Teach them how to reason and think through problems, construct a solution, and then figure out how to program it.
We are not actually giving them tools, we are enabling them by allowing them to think that this is easy. It’s not easy, and each successful, driven developer has spent years learning and fine tuning his craft.
When I was learning to program, if someone wouldn’t have forced me to think, I would have failed. It’s getting stuck and solving problems that helps a programmer level up.
Who fixes the $29 code
Someone has to. It’s not going to be me. Maybe we can train some $52 programmers to fix it?
Seriously, this is going to end badly. Either these new programmers are not going to make it very far, or they will get hired where someone will reteach them how to program effectively, or they will become freelancers/consultants.
The freelancer/consultant option is the scariest. They don’t know what they don’t know. And there is a lot they don’t know with their $29 education.
Once they’ve finished, or in some cases just walked away from a project, the product owner will need someone to come in and fix it or finish it.
This makes the software industry worse, not better. We are not creating a better workforce of competent developers that help move the industry and craft forward. We are creating a whole group of developers that are naive and a bit ignorant.
Are they just library programmers
Maybe the above scenario never happens. Maybe they’re trained in how to use tools and libraries. This is entirely possible. A programmer can move along staying inside the safe confides of a library like Rails, Django, or jQuery; and they can build entire applications. There are tools for this type of programmer to make things super easy on them.
But what happens when you take the library away? If you’ve never had the pleasure of working with a library programmer, let me assure you once they are outside of the walls of their library, they are completely lost.
They have trouble thinking. They have trouble providing solutions. And they usually come to the conclusion that a certain task cannot be done.
This is why some lesser trained or inexperienced programmers have the illusion of programming being easy. It is easy to snap together tools that someone else has written. Writing your own is not so easy.
We need to teach new programmers how to program on their own.
A lot can be said for learning things the hard way
Zed Shaw is onto something. This is how I learned; it’s how a lot of programmers learned, the hard way. The tools that make it easy were not introduced until I knew how to do it by hand. Until I knew how it worked at the deepest level.
When things like Rails or jQuery were introduced, it was amazing and I wondered how I ever did it the old way. The key here is I know how Ajax works, I know how HTTP works, and I know how SQL works. This is a huge advantage. One that the $29 programmer doesn’t have.
Take the time to learn how things work
If you are a $29 programmer, remember, admitting it is the first step. Then take pride in the craft of creating software. Learn the guts of the tools you use. Don’t use tools you don’t understand. Question everything and be constantly hungry for more knowledge. Never be satisfied and continually grow.
Your goal should never be money.