How To Teach Software Development
- Introduction
- Developers
Quality Control
Motivation
Execution - Businesses
- Students
- Schools
Doctors and lawyers in the United States have the American Medical Association and the American Bar Association, respectively, and surely have analog organizations in other countries. As representatives of their professions, they work collectively with their colleagues at a reasonable and useful goal: quality control. It is in the interest of doctors that their med students are not idiots. It is in the interest of lawyers that their opponents are not (more) unethical. There are other, perhaps less admirable uses of these controls (too many doctors would lower all their salaries).
There is no such quality control in our industry. We have individuals at the lowest end of the ability spectrum and at the highest peaks of skill, and, we have the teaches of many years of expensive higher educations on some of our shoulders and only the passion of self-teaching for others. Neither dimension seems an accurate predictor of the other, and this should raise an automatic red flag. What is our education doing for us, if it doesn't let anyone trust your ability without first hand experience, evidence, and other proof you could give them as easily without that education?
I'll own up to my fair share of complaining about the problem in exchange for anyone to agree with me to do something about it. This isn't just an annoying situation that crops up in forums from time to time or can explain why a silly "newbie" asked a silly question. No, this is something costing the economy billions (trillions?), making all of our jobs more difficult, and actually killing people in the rarest situations. We aren't just being elitist snobs when we complain about someone taking a route seemingly inadequate compared to what we think we can do. Further, it shouldn't be considered bad to tell them so. If any of us have any difficulty being told we could improve, we don't have the dignity in our job that it deserves.
Of course, this might seem pointless. Do you think I'm just venting? If so, you may either believe there isn't anything we can do to improve the situation or that there isn't any point in improving it. Either way, my aim is to convince you.
Next: How To Teach Software Development: Developer Motivation
- Introduction
- Developers
Quality Control
Motivation
Execution - Businesses
- Students
- Schools
Comments
Except for the IEEE CSDA and CSDP programs and the Chartered Engineer (C.Eng) accreditation and the various vendor-specific certifications (though I'll grant you, some of those are out-and-out stupid), and of course the usual internationally accredited computer engineering and computer science university degree courses.
Nonetheless, yes, a program which promotes CPD such as the C.Eng program, would be a good thing. That's why they already exist.
Look at a resume from anyone who took an 18 month "become an extreme video game developer!!!!" program and you'll see what I mean.
It would be great if any of these existing groups were more active and direct in this area, but overall we need to take it into our own hands to influence the directions we all need to benefit from.
Still, I'll take your correction into edits. Thank you!
Similarly, the Bar Association can stop a lawyer from practising law in court; but can't do anything about one giving legal advice outside of court or running a practise or acting as a paralegal. Again, minimal quality control, only one specific arena is controlled, and caveat emptor rules the day.
For our industry, and for the wider engineering industry, the same is true. We do have proper, recognised training and accreditation programs, and there are regulations in some countries as to who can use terms like "engineer", but for the main part the onus falls on the company doing the hiring to hire qualified and accredited professionals instead of someone who speed-read a Sam's book and skipped the exercises. And, should they decide to cut corners and hire someone like that to do the software that controls your anti-lock braking system, then they're liable for that negligence.
So maybe what we need to do is start sueing more companies who deliver broken software because of bad hires...
I'm not advocating anything as enforced as what the AMA or the ABA does, nor saying they have perfect quality control levels. I am saying they are good things to look at when discussing improving the quality of one's own industry. This is something to work towards and all examples are useful, even if they don't apply directly, because we take care to know what to take from them and what to leave.
I didn't originally intend this writing to stretch out like it seems to be doing, so go ahead and read the next post, because I think I'll clarify some of that. You're giving me a lot to think about with how I've paced this, because you're responding to things before I get to the same points.
The communities of practise are also very isolated, generally. There is not as much cross-pollenation between, say, open-source, systems development, scientific programming, web programming, applications programming etc as there (IMO) should be.
The major exception to this is conferences. If I were to come up with 'the answer', it would be to run a body to publish statistics on who is publishing the best open-source code, how much, who is presenting at what conferences, validating/reviewing conference presentations etc. However I think that anyone who really is 'in' the community would be best-served by going to conferences and being a part of everything. Making contacts and getting involved with things is the best way as an individual to make opportunities for yourself, and I'd suggest that any employers get involved in supporting this kind of grassroots effort also.
It doesn't take a lot of money to support conference activities and local user groups, and it would greatly assist with recruitment too.
I think. :)