And all that is fantastically interesting, but completely beside the point. I just fell into the classic programmer trap of exploring and learning about (what I find) fantastically interesting things that will address all sorts of amazingly complex situations, but which the learning of said things resulted in absolutely nothing of tangible value being created.
I have found that as I get more experienced, I am in danger of doing that more often. I can see all these possible opportunities or problems, and as I get more experienced, I can see more possible problems and opportunities that ever before.
How does one get around that?
While I spend many hours reading lots of lovely things about netty, I never actually accomplished anything because I wasn’t really sure what I should do first. I didn’t have a plan, and for something this complicated I was sure I needed one. As soon as I identified my goal, and set a time limit, what I should do next was clear. No plan required, not for such a simple goal.
These jaunts, where I see what I can develop, as fast as I can, are great for a weekend. I needed no plan because each goal was so small and separated by a week of rumination. Unfortunately, many seem determined to make such bursts the norm. Ken Schwaber had this to say about ScrumBan:
“God help us. People found ways to have slack in waterfall, to rest and be creative. With Lean and Kanban, those hiding places are removed. We now have a progressive death march without pause.”
A developer, or team of developers, must have time to reflect upon, and, subsequently, improve their implementation.
Direction is best determined by a destination. Sure, the journey is important. To quote the great Dave Marshak, “Its not how far you go, its how go you far.” But, direction is just as important.
I valued and enjoyed the few hours it took to create the software behind this little blog. However if blogging was going to be my business, I would most certainly not have hacked it together using python. I would have looked out to the future and surveyed the landscape, and seen that the shining, far-off city of a vast, automated blogging system would be written in Java or perhaps even C, and then I would have set off in that direction. That is not to say that I would not have hacked version 1 together. It is to say that I would not have set off in completely the opposite direction, i.e. python.
I once made the mistake of not setting a time limit. In my youth, I promised myself that I would not work on any other project until my game was finished. While my brilliantly imaginative friend Gareth create all sorts of wonderful demos, I plodded away writing my game. I did eventually ship it, three years later, and it was very satisfying. There aren’t many people who can say they’ve single-handedly programmed a video game, in assembly language, and less who can say theirs got great reviews. ↩