I think we, as a community, have an issue with software developers and education right now. It’s no secret that new developers with formal training are not learning the right things.
As a developer without a CS degree, I would argue that you don’t necessarily need a formal education to be a quality developer. Although, I did need a push from a 2 year community college to get me started. It was pretty difficult to wrap my head around programming initially.
Stating the problem is easy
I sat in on an excellent discussion that was mostly a panel of people interested in progressing software developer education and communities. The panel was great. A lot of indicators of what’s wrong with developer education. The panel members were able to define the fact that most developers today are not high quality craftsmen, unfortunately, they seemed to be unable to define definitive indicators as to what makes a quality developer.
Let’s define quality
I’m a quality developer and I surround myself with quality developers. Because of that, I think I can start to define what makes a quality developer.
A quality developer is:
One that critically thinks about problems and composes efficient solutions that are easy to understand, update, and modify.
One that uses source control to maintain branches of a solid working state and an actively developed state.
One that separates code into a logical structure of classes and methods that perform a task simply and definitively.
One that documents his work for the next developer. (Not necessarily comments, but it can be)
One that sits just outside of his comfort zone and pushes his abilities daily.
This is in no way a complete list, but I propose this list gets us talking. I’d like to see this conversation go from saying most developers suck, to saying these are the things that make a developer a professional craftsman.