Carpenters, Craftsmen, and Software
Before the 1950’s, the majority of houses were built by craftsmen. These highly skilled workers made everything onsite and by hand. A process that ensured every home was unique and specific to the owner’s desires. The downside was time to build, making cost very high.
As Veterans began returning home from World War II, Federally backed Mortgages came with them. Giving companies an incentive to build houses faster and at less cost. Instead of building one home for a client, these contractors created entire subdivisions at a time.
To keep up with demand, home builders needed to automate. They replaced hand tools with electric and gas powered devices. This increase in demand also meant that the pool of available craftsmen were not enough to fill the open positions. Thus, less trained workers had to be used.
Using less educated workers in an automated environment meant that many parts needed to be pre-manufactured and standardized. Instead of making windows for each home onsite, they were shipped to order from a factor. The same became true for doors, cabinets, and siding.
Today, the construction industry is focused on efficiency. Modern carpenters create processes to do things quickly with little wasted effort. The job went from making complex items to optimizing the assembly of pre-built components. Everything from the tool belt to the layout of materials is designed to minimize build time.
Software Construction
Software development has evolved in a similar manner to construction. Moving from meticulously hand coding complex systems to implementing prebuilt frameworks. In turn, replacing manual deployments with automated processes triggered by code checkin. Including testing by machine.
In home construction, there are still craftsmen to build cabinetry and other high end components for select clients. Likewise, in software there is still a need for craftsmen to build frameworks, compilers, and complex tools. However, they are not needed in most development environments.
Construction of exclusive homes starts the same as that of middle-class developments. Framers create the skeleton, an exterior crew lays bricks or hangs siding, interior crews place sheetrock, and finish carpenters install the trim. The difference only comes about near the end of the process. Here, specialized craftsmen make finishing touches with custom components too expensive for the average home.
These craftsmen are not needed for most builds. In fact, a Construction Contractor may never use their services. If the services of a craftsmen are ever needed, they are contracted. Having one on a crew would be a waste of resources as their skillset is not conducive to rapid development and their pay is much more than a standard carpenter. The same can be said for software teams.
Software Carpenters
The problem is that Software Managers are still trying to hire craftsmen when they need carpenters. In software, a carpenter is a developer who is well versed with a specific framework as it relates to a clearly defined domain. For example, DotNet Web Application Developer. A craftsmen is a Software Engineer focused on building complex systems from scratch and/or creating development processes. Such as one would find at Microsoft or Google.
Software Carpenters are those certified on their stack of choice. Be it Ruby on Rails, Cake, Angular, etc… Instead of understanding the nuances of traditional Computer Science, their focus is on the highly efficient use of a tool-set. Such candidates often come from Coding Boot Camps, 2-Year Colleges, and Certification Programs. Many have degrees outside of Computer Science and some never went to college.
For most Line-Of-Business, Mobile, and Website Development, the Software Carpenter is the best choice. A person trained for this role understands how to build the required application. They are usually very efficient with their time and solve problems at a practical level.
Software Craftsmen
In contrast, a Software Craftsmen usually has a degree in Computer Science, Mathematics or Physics. Often found in large technical companies and academics, he or she has a solid foundation in electronic systems. They know how computers work at the lowest level and solve problems on an abstract level using mathematics.
While there is a time and place for these experts, it is not in creating standard applications. This truth was illustrated best by a client building a niche ecommerce platform. He concluded, “everyone we talked to can do the web application part. It is the search system that is the dividing factor.”
Clearly, they are best served with Web Application developers making most of the system. It is only for the Natural Language Processing (NLP) and Artificial Intelligence (AI) based search where a craftsmen is needed. That way, the application can be built by the core team while the search expert creates the algorithms and systems to manage the complex part. Not only will it cost less to build in this manor, the time to market will be less too.
Conclusion
Thomas Edison illustrated this difference between these two types best when describing the first day of a Phd Scientist on his staff. When tasked with determining how much water a light bulb would hold, the Scientist spent the day creating a mathematical equation to solve the problem. Edison reportedly came back very angry. Taking the glass from a light bulb, he filled it with water then dumped the liquid into a measuring cup. Almost instantly, Edison had the answer.
Clearly, if Edison relied solely on abstract thinkers, he would of never invented so much. Not to mention the labor costs. The same is true for software teams. We need practical thinkers to do most of the work and analytical thinkers to fill in the gaps. One is not better than the other but each have distinct roles.
As always, thank you for reading. If you found the content helpful, please share it with a friend or network. To learn more, visit https://toddmoses.com.