What tools / methodologies / strategies do you use to keep organized in doing your work as a developer? Can you provide details?
closed as off-topic by gnat, GlenH7♦, Kilian Foth, user40980, Dan Pichelman Oct 22 '13 at 15:49
This question appears to be off-topic. The users who voted to close gave this specific reason:
- "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, GlenH7, Kilian Foth, Community, Dan Pichelman
I use a personnal kanban in each of my location contexts. For example: Home office, Home & Business office.
This answer is based on this blog post. I extracted most relevant info but you may be interested by the psychological part of the method that I will not detail here.
This is an extremely simple method of personal organization based on concepts just as simple.
Along with many other advantages it will help you to:
- Combat Procrastination
- Reduce general anxiety levels
- Increase visibility
The central element of your personal kanban is the backlog. The backlog is the list of everything there is to do. It is constantly evolving and to be effective, you must trust it.
Take the notes and begin to list all the tasks that are going through your head. Use one note per task. Do not worry if you forget something, one of the best things about this tool is that you can add things later to get them in the process. For more information on the collection process, refer to the description of GTD. Fans of GTD will see how you need to have a kanban for each “context”.
The way you describe your work is essential. The principle of "next action" should be used whenever possible.
For example if you need to call your telephone company to cancel your subscription, don’t write "cancel subscription", but "Call Phone Company to cancel the subscription."
The difference between these two descriptions is obvious. The first version describes your goal, while the second invites you to action. This technique is particularly effective against procrastination. Your mind is less likely to find avoidance strategies.
Once you have all your tasks on notes, you must prioritize them. Organize your tasks in order of importance. The strategy is simple: one task is always more important than another. When you set priorities, think long term. An important task that will become tomorrow's urgent task should be completed before it becomes urgent. Having urgent tasks always creates more anxiety.
You must "plan" a maximum of five tasks on your corkboard. In other words, you can’t have more than 5 notes in total on the board. To add a new note, you must remove one that is in the "Done" section, provided of course that it is “Done”.
Ideally, you choose the five most important tasks of your backlog. But it may happen that you decide to group tasks for practical reasons such as economies of scale. If you need to do some odd jobs in the garden, it might be more advantageous to plan to do them together.
When you decide to start a task, you take the note and put it in "In Progress". This indicates that you really will do the job. If for any reason you decide to put off the job without having begun it, replace the note in the first column.
Here is a very important rule: Never have more than 2 notes in "IN PROGRESS". This stops you from starting to do several things at once without completing any of them; one of the root symptoms of procrastination. This simple rule prevents you from having to waste more time choosing between tasks and means that you can advance.
You can browse your backlog regularly (every 2 to 3 days for example), and update and then re-prioritize if necessary. You add task notes to the "To Do" section as you take them from "Done."
You can add to the backlog but you should only ever take a task out of the backlog if its completion would no longer provide you with the intended value.
This process is perpetual. That is to say that there is no end. We will always still have things to do, that is “situation normal”. If you can accept this fact, it will really help you to reduce any feelings of stress.
No need to use electronic gadgets if old paper and pencil still works.
For things that needs to be remembered for a short time: Post-It notes. If it's no longer needed, throw it away.
For thinking: paper and pencil. Just use the clean back side of print-outs you no longer need.
For reporting to management: whatever they tell me to use.
Luckily we don't have a clean desk policy. :D
I have three main tools, with different benefits:
Fast - whiteboard - it's the ultimate for the short term, I can scribble anything on it and anyone local can see it. We use them for lab machine status, and I use it for collecting my thoughts when there's no time and no extra energy for user interface
Management-friendly - for anything that may have to get shared with upper management (# of tests that pass, # of features implemented, etc) - I use Excel. In my company we have a bunch of different required management-communication mechanisms - all use the same data, but in different formats. Excel is pretty much perfect for that - it makes me a chart for the meeting, a spreadsheet for the accountants and a list of things I can email around for getting status.
Team-friendly - I absolutely flipped for Rational Team Concert when I got to use it this winter. It has the combination of whiteboard (friendly for team), and Excel (management compatible), since stories and tasks can be rendered and filtered in a huge number of ways, while still being tied to checkins and ways that teams like to keep track of status. IMO, that was the ultimate, because people were able to communicate status to each other (and me, the team lead) in a way that worked for them, but I could render it in a way that worked for outsiders. Caveat - it's not cheap, setup is NOT easy, and there was some learning curve - but most folks rated the learning curve as "worth it".
Constant writing in OneNote is the backbone of my personal organization strategy. The following may or may not work for you but they have served me well:
- Writing is thinking. Write lots and lots, even if you throw it away later. It helps you conceptualize and remember things.
- Don't spend time curating your notes and making big hierarchical structures out of them. Such organization is needed for code, but it just doesn't work for writing, at least not for me. Hierarchies are fine for archives (but aren't even always needed, thanks to search), not or stuff that you want in front of your face all the time. Write first and organize later, if at all. Use search. Crawl and move things around occasionally, clean house every once in a while.
- Keep a page (not a tab, just a page) as a daily journal. Most everything should go in here, or at least start in here. Use lots of bullet lists and summarize weekly. Break away into a new page if you need more room. When it gets long, cut a few weeks off the top and put it in an archive page.
- I keep an notebook called "Learning." Each tab is a subject (what defines a "subject" is nebulous, but a few examples: Project Management, SQL, Virtualization, Python, Cryptography, Dependency Injection). This is where book notes and stuff learned from the web go. If you aren't taking notes on every book you read, start - not only do you get better comprehension, you end up with a searchable library of personally-tailored Cliff's Notes of everything you read.
- Instead of (or in addition to) keeping hyperlinks in your browser, keep them local to your notes in OneNote. I have pages in OneNote that are virtually nothing but topical lists of links.
- Don't be afraid to drag-drop stuff into OneNote, especially emails for later reference.
- Project Task List ... for me this is TFS, though bugzilla, fogbugz, etc. would work as well
- Personal Task List ... I use remember the milk. Here I put all my personal TODOs (along with recurring tasks), and the iGoogle gadget to give me a visual reminder of stuff I need to do.
- As far as time management, I try (though sometimes fail admittedly) to allocate blocks of time where I don't look at email/twitter/facebook. In that time, I try to crush my TODO list systematically, one at a time.
The separate task lists is quite by design. While I'm working, I don't want to be interrupted by personal TODOs. But when my context switches to personal time, I still want a system to keep track of the stuff I need to do as I'm notoriously scatterbrained. And RTM is less informal enough for the task (no pun intended) :-)
Many good tool answers already. I've found a few "processes" to help as well
- Get your inbox to zero and keep it that way. But only look at emails at predefined intervals (e.g. morning, lunch and end of day, or once an hour, whatever you can get away with)
- Work serially - don't take on two assignments/coding activities at once.
- Deliver/check in as early as possible. This is key, don't over architect your initial pass at solving problems. Get something that works first then refactor later.
- Keep a record of ideas as you work. I've found a notebook/journal invaluable for taking notes, drawing pictures, etc.
I use evernote for taking notes about just about anything and everything. Once we get to the meat and potatoes project phase, we transfer requirements into redmine which becomes the true taskmaster.
The level of things you have to do for self-managing in daily basis highly depends on the company ( organization / structure ) you work in.
If it is small business, then you obviously have to do all todo writings by hand using most appropriate text editor for your needs. As stated before - this can be done in OneNote / Outlook. Various reminding frameowrks and functionalities are now integrated in OSes either. Depending on Programming Language and IDE you work in, you have to use their offered code maintaining and your workflow monitoring instrumentation.
If it is medium company, then the company has to have its own IS, based on some Server software, for example, MS Exchange server running on MS Server 2k8 (R2) Datacenter, providing full enterprise environment for Outlook-based environment. You most likely woud use 3rd party tools like GExperts / CnPack / madExcept or any other tool company requires, resulting in no /or minimal usage of IDE built-in workflow managing functionality ... for example, Gant diagrams.
If it is large business / company / cooporation, there definelty is their own IS providing department-specific prupose running on some non-Windows* based server software and Mainframe-class server hardware. I cannot comment much in this area. If I would, I would either do it illegally, so ... sory, guys.
It is really hard to answer w/o providing either more precise scope of your targeted answer - OR - you input more detailed info of your current situation.
Why non-WIndows? Answer is simple:
Windows OS, since WIndows 95, has ALWAYS been single-user ; single-session Operaiting System, so it is not designed to be running for enterprise environment.
Unix OS, in comparsion, is built only for networking, so it mainly uses Transport Protocols ( Hyper-Text ; File Transfer ; etc. ) for internal - non-hardware-layer data exchange between system components.
NOTE: Mainly - #10 is the thing that makes biggest diff that has reasonable impact on data and work flow in each and every company.
P.S. I work in medium-size company.