Serendipity. I was “surfing the net” looking for better ways to teach/learn programming. ‘Learn to code, it’s harder than you think” (here) caught my eye. Interesting.
Summary:
- Special aptitude needed. Only a small percentage of folks can do it well. It’s a high aptitude task.
- Most of existing programmers are self-taught. A recent survey says 76%.
- Computer science majors looked down upon by other students. “They’re geeks!”
- No clear, defined path to a programming career. Software development is the only professional career where you can get free training. Want to be a doctor? Go to medical school for 7 years. (if you have the $ and can somehow get in.)
- Many (over half) of the graduates from computer science schools have insufficient programming skills to get hired.
This last point is echoed in many articles. “Hey, I’ve had 4 years of French — but I can’t carry on a (French) conversation — they talk so fast.”
So we have a two sided problem.
1) Not enough students study computer science. For the over half million computing job open in the US, there are only about 40 thousand computer science graduates. That’s a ratio of 15 to 1. Maybe the “It’s easy”, sends a message that it’s not a serious career? If most of the professionals are self-taught, why bother with a computer science degree?
2) Here’s the killer. well over half of those graduates are poor programmers. Why? It’s not PC to fail students? Maybe, they are being taught the “wrong stuff”. Professionals not only have to code, but design, deal with end users, work in a team, and be able to adequately respond to their managers “panics”.
How much of all this is taught or even mentioned in schools? Not much.
Unfortunately, many excellent academics have had little experience building software in the so-called, real world. Successful software products live a long time. Others will be working on it for future fixes and enhancements. Better know how to design and code so others can efficiently understand the logic and add to it.
For folks who have never been involved in software, it’s difficult to imagine the amazingly high complexity level. There are thousands, sometimes millions of lines of high level code in a typical product. More than one person can “hold in their head”. Elaborate procedures are needed to ensure that errors don’t creep in while adding even a simple enhancement. It’s not for the faint in heart.
As to 1), that will be solved by the marketplace. The huge current emphasis on getting kids interested combined with folks learning about the economic opportunity will help. Folks always gravitate to opportunity.
Robotics: Add an important concern. If the product is a game or a simulation that just involves items on a monitor, that’s one thing, but, if the software is moving a physical robot around, it’s another. An error might damage valuable equipment or even kill someone.
Vastly different consequences. The need for quality procedures and standards is much more important.
So why not learn proper habits from the start?