So I am back to writing about my work.
Anyway it seems I have to re-start at zero. I am – despite four days of vacation away from computers and home – quite disoriented about my work and the way I am supposed to work. So I start with nothing.
Here’s my question: how does a software developer work effectively? What tools and processes does he use to get his work done?
Of course I want answers that fit my basic working conditions and work environment: small projects and big projects and a single developer may have many things in common, but keep in mind that I have to do many things myself that may not be part of a developer’s work in a bigger project.
What I have:
– a 1.5 year old project assignment containing most of the requirements
– an overall design and a few diagrams with some details for the different 5 or 6 modules
– one nearly finished module
– one started module
– a handwritten protocol (6 months old) detailing the module that is not described in the original assignment
– some UI scribbles done by someone else (current)
– version control
– automated builds
– cruise control
– some unit tests (incomplete)
– a very long todo/issues list
What I don’t have:
– an up-to-date analysis of the project’s requirements
– code reviews
– tracking of the work that has already been done and what time went into what part of the project
– a realistic schedule
– high load testing
– user testing
– the ability to concentrate on a task seems to have vanished
– a clear grasp of what’s still missing beyond this list!
Up to today my way of organizing work was “chaotic”. I would make todo lists and hope for inspiration while staring at code. No it’s not that bad. But nearly. Sometimes I’d try to keep a current schedule à la Joel, or write tasks on small notecards that went into folders à la “Getting Things Done”. But often I just tried to complete tasks from my ever-growing “issues” list prioritized on a whim or whatever made me start on a given task. Some tasks I can sort into “later” with a clear conscience but I tend to avoid “big ones” that are hard to solve. Those are the ones giving me headaches and stalling my progress. Every day I re-write the list and try to analyze the “big ones” into “small easy tasks” but there are just some that defy my analysis skills that get put off and off and off again and each time they move down the list they become a bigger obstacle.
Second problem: time management. I usually have no idea where time went on a given day. Nobody ever asks either. I know it’s not good. But I don’t know wether I just haven’t found the right process or tool yet or what my problem is with that. After all I should be able to account for 8 hours every day. My estimates would probably improve if I could manage the backwards part of time management.