Professionalism = Awareness + Principles
Software development needs professionals. But what are professionals? Those who earn money from software development? No, we believe there is something more to it than that. Professionalism in software development has nothing to do with money. It doesn't necessarily have any thing to do with the education that one has either. There are professional software developers that earn very little, or even no money at all from their software and we also know professional software developers who have no formal education in the area.
The minimal requirements for professionalism
We think it is based on the following two things:
- A professional developer deliberately shapes himself as a professional.
That means he reflects about his products, the way he works, his materials and his tools. A professional software developer is not simply satisfied when his boss or his customers are satisfied. He is also not satisfied to accept whatever a vendor supplies. Instead he observes, constantly checks his results and is concerned with both his own development as a professional as well as the profession itself.
- A professional developer has an internal value system.
He checks the way he works, and his results against this value system. Only when it lives up to the value system does he consider it "well done" and of professional standard. He is committed to being faithful to this belief system even under difficult circumstances or customer pressure.
This may sound a little old-fashioned or fringe. Does a software developer have to join a guild or swear an oath? No that is not we mean. Anyway without a general agreement about what "good software development is", we don't think a "lowest common denominator" will do any good. The community, and we are talking only about .NET software development here, needs a quality standard or at least a set of expectations for professionalism. The days when anyone who did some BASIC programming once was considered sufficiently qualified to work in a team are over. But neither can we assume that anyone with a computer science degree is skilled in software development. (Nothing against computer science, but who knows anyone who completed a degree without writing more than a few lines of code?)
Clean Code as a Basis
What can we do for more (visible) professionalism in software development? We believe that once the problem is known only a small step is required. It is not necessary to redefine the curricula of Masters degree programs, and we don't need to found a new society. It would be much simpler if we all just read the same book. If we expressed a unified opinion in favor of the advice of a single book, it would form an effective consensus.
We believe that Clean Code
by Robert C. Martin
is the very book worthy to fill that role. It is not perfect, and we don't believe unquestioningly with everything in it, but at least it is a book in the right spirit: it is an expression of profound reflection, and has the boldness to form the basis for a new value system.
In Clean Code it is not about platforms, technologies or paradigms. You don't have to be a fan of .NET, Java, ASP.NET, Subversion or OOP, to gain something from it. It is about an underlying foundation: Code as a source and as a structured expression of functionality. For code as a lowest common denominator between all types of software developers, Clean Code describes a lot of principles and "best practices".
It is not as if no other similar books exist. But Clean Code seemed to us
as something we wanted to use as the core of Clean Code Developer.
Finally none of this is written in stone. Tomorrow there may be an even better book. That would be great! But that doesn't really change what we are saying about the importance of professionalism. That's why we decided to just get started. "Don't chat too long, head in the neck" as the people from Hamburg, Germany say when they have a "korn" (a type of schnapps from north Germany) in the hand. And that is how we want to do it too: Just like the agile movement suggests, we don't want to plan this for ever, we want to do something. A small step in the direction of more professionalism.
Who else is keen? Let's get going...