Joel Spolsky has posted his foreword to Mike Gunderloy’s new book, Coder to Developer. The foreword puts in very simple terms what it takes to be a software developer, which is more than knowing how to writing code. As Joel puts it, a software developer can “take a concept, build a team, set up state of the art development processes, design a software product, the right software product, and produce it.” I’ll add that a software developer should understand various development methodologies and how to apply them, and the importances of QA and testing even though these are assumed to be part of the state of the art development process.
The interesting thing here is that a software developer still does not know it all, and a good software developer knows this. A software developer will take lessons learned from past experiences, and will enhance and improve on those experiences for future project. The good software developer is always learning. Much of the learning comes from hands on experience, which I personally believe is very important, while lucky ones will also learn from more seasoned software developers who are willing to coach and mentor.
I find interesting though, that in my field of work there is the large number of individuals who think they know software development but don’t know the first thing about being a software developer. These individuals think that because they know how to write code they know how to develop software. I know how to drive a car but I don’t know how to build a car. Nor do I think I know how to build a car. But many in the software development world think because they know how to write code they know how to build software. The truth is these individual do not get software development, which can typically results in a poor quality product, a product the does not meet the needs of the users, or even worse a product that never sees the light of day.
Being a software developer is more than writing code. Being a software developer is knowing how to bring a concept to life within the computer through software and code, applying the right techniques and processes, ensuring the maintainability for increased life expectancy of the product, selecting the right set of tools for the job, building a team right for the project, and ultimately producing a quality product that meets or exceeds user expectations.
Posted in uncategorized. Tagged in .