Quality, not quantity, might be the answer
During the panel discussion at the DevCon Davao 2017 last October 7, the panelists talked about the number of programmers needed by the industry versus the number of programmers being produced by the academia.
One of the panelists said that the industry needs about 5000 programmers every year (if I am not mistaken), but the academia only produces more than 1000 graduates per year. The academia is not able to meet the demand for programmers.
But what if there is another solution to this problem?
What if the demand can still be met if the people involved in this problem focus on the quality of the programmers being produced, instead of the quantity?
I remember something I read a few months ago… from Jeff Atwood’s article “Nobody Hates Software More Than Software Developers”:
David Parnas explained in an interview:
Q: What is the most often-overlooked risk in software engineering?
A: Incompetent programmers. There are estimates that the number of programmers needed in the U.S. exceeds 200,000. This is entirely misleading. It is not a quantity problem; we have a quality problem. One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.
How do I know, incontrovertibly, beyond the shadow of a doubt, that the world is full of incompetent programmers? Because I’m one of them!
If Jeff Atwood considers himself an incompetent programmer, how much more should we… I mean ‘I’ … I, more, should consider myself as incompetent!
(But I am trying to become a competent programmer, of course.)
Okay, I digress…
What if the problem can still be solved by focusing on the quality, instead of the quantity, of programmers being produced?
We might glean some lessons from this statement of Uncle Bob Martin:
“The goal of software architecture is to minimize the manpower required to build and maintain the required system.”
I got that from the “Rough Cuts” of “Clean Architecture: A Craftsman’s Guide to Software Structure and Design” available at Safari Books Online last September (which I read as part of my preparation for the “Clean Architecture and TDD Awareness Talk” of DevCon Davao 2017 ).
The lesson which, I think, we can get from that statement is that it is possible to minimize the manpower required to build and maintain a software system.
… and that a good software architecture can help make the minimization possible.
How then can we get a good software architecture?
By having good software architects of course!
Where do we get good software architects?
I’m not sure if we can easily get them from anywhere. But, even though there are incompetent programmers (as said by David Parnas above), I also heard many master programmers who said that software developers are one of the most intelligent and most educated people in the world.
Maybe we can get good software architects by training existing software developers about software architecture and design!
The next question would be “How?”.
The people involved in the Software Craftsmanship movement seems to suggest that mentoring is the answer to the “How?” question.
“… professional values and technical acumen must be taught, nurtured, nourished, coddled, and encultured. What’s missing from our current sterile approach is the responsibility of the elders to teach the young.”
“… School can teach the theory of computer programming. But school does not, and cannot teach the discipline, practice, and skill of being a craftsman. Those things are acquired through years of personal tutelage and mentoring. It is time for those of us in the software industry to face the fact that guiding the next batch of software developers to maturity will fall to us, not to the universities. It’s time for us to adopt a program of apprenticeship, internship, and long-term guidance.”
— from Uncle Bob Martin’s book “The Clean Coder”
We ought to be mentors then!
That would be hard.