There is a lot that goes on from 9 to 5 Monday through Friday. We sit at our desks, we program, we respond to emails, we sit in meetings, we go to backlog grooming, etc. Every day brings its own challenges, and its own opportunities for learning and growth.
What matters the most is how we choose to spend the time we’re given. There are so many different areas that steal precious time away. I’ve found that people love to complain about things that steal their time to the extent that the complaining itself steals time.
As developers, how do we make the most of the time we’re given? How do we take back our coding time? How do we get the most out of each and every day?
This is a topic I’ve been doing a lot of reading on recently. There are several different theories and paradigms I’ve seen expressed online. Some are good, some not so good. Combining them with my own experiences, I think I’m close to an answer.
The most common complaint I’ve seen from developers on this topic is that they hate meetings. There seems to be something mutually exclusive about being a programmer and wanting to be at a meeting. I am not sure where this trend started, or where it came from, but it seems to be ubiquitous with everyone I’ve ever talked to.
And I think that’s wrong. Meetings by themselves do not waste time. However, when a meeting is not well thought out, when the objectives are not clear, and when the participants are not bought-in to the meeting, the meeting as a whole suffers.
Developers who work at large companies have had to sit through so many poorly planned meetings in their career that the disposition against meetings is understandable. Wrong, but understandable.
There are meetings I’ve had where I’ve come out energized. I can recall meetings that helped clear up a misunderstanding a large number of people on a team had in a succinct and efficient manner. I have been part of some great meetings in my career.
In my first attempt to categorize the difference between a good and a bad meeting, I came up with a list of dozen different attributes. This was a good first shot, but not good enough. I kept digging, and digging, and digging until I found what I was really after.
The best meetings have a clear, actionable, and attainable goal, and inspire the team to achieve that goal.
When it comes to development, or life in general, I’ve found that time and time again there is a fundamental way of thinking that successful teams share. It manifests itself in every aspect of their life, and helps guide them towards being as productive as they can possibly be. When these people are in a meeting, it is always moving in positive direction.
This fundamental way of thinking is exactly the same as what makes a successful meeting. Great programmers have clear, actionable, and attainable goals, and every task directly works to accomplish a goal.
This is an idea I’ve dubbed “Goal-Driven Development,” or GDD. Rather than focusing on how to develop software, GDD is a philosophy on the role of a programmer itself. It is something I will expand upon in the coming blogs.
The post Goal-Driven Development appeared first on Zach Gardner's Blog.