I recently was meeting with a person who isn’t in the field of Software development. He was relating a story of friend who was in software development. This friend was comparing his work with another software developer who will spend time constantly re-working his designs. As we work more in our field of specialty we gain experience and expertise. Sometimes as software developers we start to think about our code as a work of art that must be perfect. This can cause delays and add to problems meeting deadlines.
I am not saying we should not strive for great software. What I do think we need to understand is that most of us work in a business or organization that have real deadlines. I have had experience with a few developers that over complicate their solutions. Sometimes we read a book or blog post and try to find a way to use this “great new” library. When we truly understand a use case of the new library we should tread lightly before adding it in. Perhaps running it by another developer first to see if it makes sense.
In my years in software development I see programmers all along the patience parallel. Some will find a solution and quickly finish with little coding and perhaps no testing of their work. They will probably not review the issue to find any lapses in the user story. This will be some work the Quality Assurance staff will cringe at. It can be riddled with issues. On the other side of this line is the developer who will analyze their design. They will test their code for all know cases and some even uncomprehendible scenarios. They will thoroughly review the user story and discuss it with the product owner. I won’t say that one approach is best only that each of these and many other people some where in between can learn something from each other. Sometime the right question can make clear a simple solution that will be robust and elegant.
Have you ever been guilty of trying to get the perfect solution?