The Myth of the Genius Programmer
Profession and Career
· Brian Fitzpatrick
· Bus factor
· Google I/O
In this pleasant talk of the Google I/O in 2009 Brian Fitzpatrick and Ben Collins-Sussman address the subject of “geniuses” in the world of programming. They reflect on whether these geniuses exist and/or do as often often as we may think. Who has not heard, during his/her time of study or in his/her professional career, that so-and-so is a genius. Geniuses have been in history, but it is not such a common thing, much less. Another very different thing is that there are people who are very good in their profession, apart from having capacity, as a result of their effort and dedication. The reading we can make of this is that we all have the possibility of becoming very good developers (focusing on the world of software), if we intend to and if we take the appropriate steps.
Brian y Ben talk about the bus factor in software projects. This concept is an indicator of the risk that we have in our projects if the knowledge resides in few people. Therefore, it is necessary to increase this factor so that the more people with knowledge in the project, the better. It is common to find areas of a project with a low bus factor, because some people are very territorial with “their” code and it is not easy for other people to acquire that knowledge. I remember having encountered several cases of these in the past:
“A modification on this or that program is needed… John Doe to the rescue, who is the only one who knows what to do…”.
Our lecturers today already had it clear in 2009 (and certainly, a decade before): developing software is a collaborative task in which you have to know how to accept criticism and understand that one may fail. The important thing is to fail soon and learn quickly from it: fail fast and iterate quickly. They also comment on the concept of small fish: it is convenient for us to be a “small fish” where we are working, in the sense that if we are the ones who most know something and this situation is maintained for a long time, we will not be able to learn No one we have around. Another interesting idea that has emerged from this talk is that you have to start projects with some code working, so that we attract the attention and collaboration of other people. If, on the other hand, we develop and develop … and we do not make other participants in our projects until they are at a very advanced stage, it will be difficult for other people to want to be part of them, because they will consider that the most important part of the project has already Been decided and surely implemented.
Brian and Ben have participated together in various conferences and are the authors of the book Debugging Teams: Better Productivity through Collaboration, published by O’Reilly in 2015. Moreover, Brian is also one of the first designers and programmers of Subversion, Apache’s well-known centralized version control system (Subversion history can be found here).