Professionalism in the Software Industry (circa 1985)
As the packaged software industry reached its middle age around 1985, it was difficult for an individual programmer to have an impact. Software had to be marketed via traditional media, burned onto a physical medium, put into a fancy package, and shipped to a retailer. Consequently, 50 or more people were involved in any piece of code reaching an end-user. It would have been tough for a software engineer to aspire to the same standards of professionalism that put Surgeon 3 over the top. How can the software engineer ensure that his or her innovation will ever reach an end-user if shipping it out the door requires 50 other people to be paid on an ongoing basis? How can the software engineer teach other programmers how to practice the innovation if the software is closed-source and his or her organization’s employment agreements mandate secrecy? The industrial programmer circa 1985 was a factory employee, pure and simple. He or she might aspire to achieve high standards of craftsmanship but never professionalism.
What were a programmer’s options, then, if in fact craftsmanship proved to be an unsatisfying career goal? The only escape from the strictures of closed-source and secrecy was the university. A programmer could join a computer science research lab at a university where, very likely, he or she would be permitted to teach others via publication, source code release, and face-to-face instruction of students. However, by going into a university, where the required team of 50 would never be assembled to deliver a software product to market, the programmer was giving up the opportunity to work at the state of the art as well as innovate and teach.
Professionalism in the Software Industry (circa 2000)
Like the MIT senior mentioned above, most industrial programmers have not changed their opinion of what it means to be a successful professional. The closer a programmer gets to Bill Gates in terms of wealth, the more successful a professional he is considered to be. Engineers in Silicon Valley worship John Doerr, a venture capitalist at Kleiner Perkins, Larry Ellison, and Bill Gates. There is some evidence that standards are shifting. Richard Stallman and Linus Torvalds draw large crowds of admirers worldwide. These pioneers in the open-source software movement are beginning to exhibit some of the elements of Surgeon 3 (above):
- they practice at the state of the art, writing computer programs that are used by millions of people worldwide (the GNU set of Unix tools and the Linux kernel)
- they have innovated, Stallman having developed the Emacs text editor (one of the first multi-window systems) and Torvalds having developed a new method for coordinating development worldwide
- they have taught others how to practice their innovation by releasing their work as open-source software and by writing documentation
The Internet makes it easier for an individual programmer to distribute work to a large audience, thus making it easier to practice at the state of the art. The open-source movement makes it easier for an individual programmer to find a job where it will be practical to release his or her creations to other programmers who might build on that work. It is thus now within a programmer’s power to improve his or her practice as a software engineering professional, where the definition of professional is similar to that used in medicine.
The new definition
We define software engineering professionalism with the following objectives:
- a professional programmer picks a worthwhile problem to attack; we are engineers, not scientists, and therefore should attempt solutions that will solve real user problems
- a professional programmer has a dedication to the end-user experience; most computer applications built these days are Web applications built by small teams and hence it is now possible for an individual programmer to ensure that end users aren’t confused or frustrated (in the case of a programmer working on a tool for other programmers, the goal is defined to be “dedication to ease of use by the recipient programmer”)
- a professional programmer does high quality work; we preserve the dedication to good system design, maintainability, and documentation, that constituted pride of craftsmanship
- a professional programmer innovates; information systems are not good enough, the users are entitled to better, and it is our job to build better systems
- a professional programmer teaches by example; open-source is the one true path for a professional software engineer
- a professional programmer teaches by documentation; writing is hard but the best software documentation has always been written by programmers who were willing to make an extra effort
- a professional programmer teaches face-to-face; we’ve not found a substitute for face-to-face interaction so a software engineering professional should teach fellow workers via code review, teach short overview lectures to large audiences, and help teach multi-week courses
Running: grep -r fuck /usr/src/linux/*– Linux may not be commercial but many would argue that it is definitely professional. Draw your own conclusions. (contributed by Edmund von der Burg).