There’s a article in Wired by Clive Tompson entitled The Next Big Blue Collar Job is Coding which give me pause to think. There not much it says that isn’t in the title. The author speculates that coding could be the next major jump for manual labor workers, but I wonder about that, and wonder if it an early April Fools article. There’s a few things that bother me, two of which are definitions.
The first and most important is the word coding. It is a very common word, but I do not believe it is a synonym for programming or for application development. Coding is a step in those processes, the one where a specific computer language gets entered into a system to run a program. Coding ignores steps before and steps after in the programming process. Coding can teach some very important skills, and can make an application, but coding alone is not enough. The planning steps, including the architecture of the application’s modules, architecture of the data used and the user experience before coding and the debugging and validation steps after coding may be more important than the code itself. Coding may make the code syntax correct and free from errors as far as compilers are concerned, but may still for usability, security and logical perspectives be completely unusable. The Google Play and Apple App stores are littered with examples of this, excluding the ones so bad they were rejected. Coding tends to look for a part of a solution, not the whole solution. Coding introduces programming but is neither programming nor application development.
One might argue that like an architect and engineer may design a building and solve problems with the construction, the tasks of construction fall to the blue collar workers as builders. This would be the same as the graphic designers and systems engineers design the application while the coders do the coding. Here we get into the difficult definition of blue collar. It its most literal sense, it is people who wear shirts with blue collars, often denim, to work. In a more figurative sense, it is the people who do nonagricultural physical work to make products, extract raw materials for production or maintain current systems. Builders, plumbers, electricians, miners, factory assembly workers and sanitation workers all fit into that definition. Some, like plumbers and electricians are more skilled than others, and may indeed be getting paid more than starting salaries of programmers. Despite those few highly paid skilled jobs, blue collar usually has connotations of lower income jobs such as manufacturing assembly compared to white collar jobs such as sales, marketing, information technology and banking.
Thus it would seem that analogy of builder to coder stands. Yet, code is dynamic. The code one writes and the code that is written to interact with something else changes, and it is up to the coder to make those changes as they write the code. To use the analogy of a building, coding is like the worker who takes iron and makes his own beams before putting it into place — all while other beams change size and shape around the space this beams goes. There is a high probability the beam, with all the planning in the world will not fit, and will need to be reworked to fit. That is the world of real programming. For the lower-wage blue collar workers used to pieces just fitting and not having to be that creative, is this dynamic world too much? Can they handle their work always being wrong? For a programmer that is the way of life, You cannot be just the builder here- you must understand all of the architecture. While the glazier might seem to have nothing to do with the electrician, in programming they must know what the other is doing, or the project finds conflicts and fails. Such conflicts happen all the time in programming.
Blue collar workers on mass production lines replaced another type of worker: the artisans like blacksmiths and potters. An ironworker might be able to mass produce beams, but only the blacksmith can make the custom iron grill. A potter on a wheel throws pots that require years of knowing clay. It is not just working with steel or clay, it is knowing steel or clay to work with it. So too with application development and programming. You cannot throw people into a boot camp and expect them to be proficient programmers. Programming requires time and experience, knowing how systems work — and all systems are different. Just knowing basic Java or Swift or Python is not enough: there’s how libraries work, how programming patterns can organize code, and most importantly, how this code performs best for the user, the system, and those who will maintain the code. While programming might be “elitist”, it is for good reason. Code and systems are not something to trifle with, as DDOS attacks via cheaply coded appliances, the threat of remote hacking of pacemakers, and failures of space probes have demonstrated time and time again.
While I believe the “elite” college learning disparaged by the author is an important part of a programmer’s education, what is learned there is the same as what the apprentice potter learns from the master — they learn the world of application development as the apprentice learns the clay. Both college learning over a period of years and apprenticeships work. Yet unlike clay or iron, the medium of app development changes. I learned to code in Pascal, COBOL, C and Basic during my undergraduate days, none of which I use today. The medium changes constantly. I published my book Practical Autolayout for Xcode 8 only for it to became obsolete four days later due to a critical change by Apple to Xcode. The factory worker learns their job once and never has to learn again. The craftsman be it a potter, blacksmith and even more so a programmer must always be learning. The craftsman or craftswoman must be learning what is new and what is yet there but undiscovered. A thirst for learning must always be there. While those highly skilled blue collar jobs such as plumber and electrician and auto mechanic might merit being called craftspeople and must have that higher thirst for knowledge, it is the assembly worker that does not learn well, refuses to learn, or whose organization refuses to invest in constant learning which provides the biggest obstacle to blue collar workers becoming coders: every month they are obsolete.
At the core of all this is learning. A developer is always learning. I admit my bias as a Linked in Learning author, author of several iOS books and a website about iOS learning that I ‘m preaching #alwaysBeLearning. But any developer with their salt knows that application development is very much like the Red Queen of Alice Through the Looking Glass: we must keep running just to keep in place. Unless there is a strong culture nationally and organizationally and an infrastructure for learning, any attempt at blue collar coding is doomed and those workers will quickly fall behind.
Article by : Steve Lipton