Dijkstra gave a speech in which he compares the artisan and the scientist as options for teaching programming and concludes that neither is good enough by itself. Proposal; use the technology of one and the claim of the other.

Without saying it, the order of the factors does alter the product in this case. To which Dijkstra warns us not to use artisan technology and the scientist’s claim. The only thing we will achieve in this case is to teach exhaustively the use of our tools for impractical purposes.

Unfortunately, I think that is exactly what can be seen today in our industry. We are full of startups and bootcamps that offer training that profess to teach programming, just because in them you can learn a couple of languages and a handful of tools. The result, many of the programmers who leave these trainings, cannot program outside the specific context they saw in the class.

On the other hand, universities focus on theory and often forget that most of their graduates will not dedicate themselves to academia. These end up constantly creating applications to solve non-existent problems or worse yet to develop utilities that little benefit us as a society.

I remember this problem every time I read a job offer. All companies look for programmers in “insert the name of the fashion framework here” and list by name the different tools and methodologies that the candidate should know as who could not learn anything new. The most ironic thing is that in each work they use each tool and methodology in a different way so even knowing it you have to adapt.

On the contrary, Dijkstra’s recommendation is that we teach with the technology of the scientist and the claim of the artisan. So that future programmers learn to think for themselves and do so in a pragmatic way. In other words, they are able to acquire any technical knowledge necessary to solve a real-world problem.

This obviously does not rule out the idea that we have experts in different branches of programming, or that we cannot do research and development. Everything will depend on the individual, his abilities and the context. Which requires thinking and analyzing, in order to choose the best option according to the limitations and conditions of the moment.

I would make a small modification to Dijkstra’s recommendation, and instead of taking the European artisan as a model, I would build on the Japanese “Shokunin.” Who, in addition to focusing on his tools and technical skills, also had a social conscience and an obligation to do his best work for the good of the community.