Tuesday, August 2, 2011

Tip: Don't tie work together needlessly

Often times when working on a software project you might think to yourself, if we add this feature we need to add this other one.  Think carefully about the decision, are other features really needed now?  Often times you will find that many items are nice to haves but are not critical to the implementation of the first feature.

Try to think critically about if the user can use the functionality without the other "needed" features.  This avoids an avalanche of changes, which can often improve your time to market.  Usually you can iterate and produce future versions if it turns out it really would be nice to have those other features.

Friday, July 29, 2011

Development work sinking in process? Read on - Agile and more

More Process than needed, or just right? - Agile and more

Big businesses like fortune 1000 companies are well known entities. They already make a lot of money, and they have a lot to lose if things go wrong. These business reduce risk by adding processes that are designed to compensate for potential risks. The upside is it will hopefully really reduce risk, and the downside is it also may reduce productivity, and increase costs (processes often have costs, in terms of staff time it uses to follow and maintain). In big firms often the processes grow organically over time or are instituted when big failures occur and management wants a process in place to reduce the chances of it happening again. Over time the rules and regulations build up for each noted failure, a new process is added. Over time the original people that made the changes are no longer with the firm but their processes continue on, often continually increasing, also often the firm forgets some of the original intent of individual processes and the balance of the cost of instituting new processes vs risk.

Smaller and medium size firms have an advantage that there is often one person in charge that can make a decision: Is this process really needed for this?

Larger business often have so many groups there is no one person or even group to talk to about how processes may have overcompensated for the risk (or even to discuss rationally if they have), or have gone into areas that don't have significant risks. It is also hard for large businesses to manage so many differences of scale in their organizations.

Even if an organization is big or huge, often the departments/divisions responsible for maintaining specific products are smaller subsets that could be stressed or crumble under the weight of heavy process unless augmented to support it.  Even if an organization is large many times individual tasks they may do are small and handled by a smaller subset of people that can do it.

1.      If in a large organization in management what can you do to ensure reasonable processes:

Ask the questions for each process:

                Is this process really needed for this?

                How much will this process cost to implement?

                What is the real chance of the risk occurring?

                What would the real cost of not implementing the process be?

                Is this process worth the implementation cost?

                Is this a process that really needs to be followed globally or can it been done in just isolated divisions/groups?

2.       Scale the processes based cost to do the job (thus the risk), complexity, scope/size in enough granular enough  to handle all size groups and all sized tasks it is likely to encounter.

a.       Consider that often there may be very small tasks, how much overhead will the process add? Is the overhead worth it? 

b.      Think about tasks at different scales: hours, days, two weeks, 1month,2months, 3months,  etc.  Cover all of the scales you are likely to encounter.  Breakdown the granularity to limit unneeded overhead at each scale.

3.       If you are a senior manager, appoint or insist there is one person or group that understands the reasons for the process,so  its clear who people should talk to about the process, it should be clear what the processes were intended to address and not address.  If flexibility can be allowed, as long as the spirit of the process is allowed, then allow it. If it is ok the process can be altered allow either informal or formal exceptions (depending on what is needed).

a.       Have the team request feedback specifically on the processes – informally and formally perhaps twice a year to ensure feedback is collected, have the feedback aggregated and circulated to all and have the person/team responsible for the process work through the process with people that live it daily (or often). 

4.       If each new processes are suggested have people do the following:

a.       Estimate the cost of following the process (Money, Productivity, Time to market)

b.      Estimate the cost of not following the process (Money, Risk, Other)

c.       Decide if the benefit of the process outweighs its cost.

5.       Think about how to make a process fit naturally in with peoples workflow

a.       Automate it if possible

b.      Put it in a natural workflow so people don’t have to go outside of an interface/app they normally do if the process makes sense to put there.

c.       If the process requires or would benefit from implementation of a tool, consider if a off the shelf best of breed tool might be the best option.  (Often large firms try to build their own, and if it’s not their core business they often don’t have the experience, motivation or resources to build a world class tool.  Instead they get a version 1 product that they have to live through the usability trials and tribulations that likely will never equal the best of breed tool)  Consider if best of breed tools can be used and feed the processes needed or build into the workflow to seamlessly integrate with the way people work.

Why did I mention Agile in the title?  This whole thing doesn’t sound too agile.  Correct.  To compensate for overwhelming process many businesses seemed to have seized upon a relatively recent ALM management methodology: Agile for software development processes.  They seized upon this as Agile methodologies like SCRUM, XP nearly mandate limited process, so people have seized upon this to point to it: Partly to get out of a process mess, partly as it has gotten some acclaim as being beneficial, and because it can work (businesses with lots of process often still stick a bunch of process around Agile projects – in highly regulated businesses there could be some need).   Agile can be useful in improving productivity in these environments to get back to the minimum that is needed to do the job.  Ideally it shouldn’t require Agile to achieve this and process would instead be improved overall.  Agile did seem to help push back some of the unneeded processes a little, though often its not enough on its own in large process laden organizations, and real change like that was described above is needed.


Wednesday, July 20, 2011

Handle your email/task Flood with Outlook

I presume many of you are like me, are flooded with emails and tasks to do. Some of you have probably heard about various methods like GTD (Getting Things Done), that has quite a following as well as numerous other plans.
Through necessity of being swallowed by my tasks and email I started using variations of different techniques from I’m sure manyof the well known methodologies. I typically get over 300 emails a day, this methodology has helped me manage my email and my work.
Default Outlook View:
I changed my default view to only show unread emails. This way when I read them or mark them read they fall out of my view. Ctrl-Q will mark them as read as a shortcut from the main outlook view for the selected items. I keep them unread in my view until I have done something with them. You should change your view to not automatically mark them read when just viewed in the reading pane. I added a mark unread button to my toolbar to allow me easily to mark items unread to keep in my view. You can also use the Mark unread option from the Edit menu.

  1. Create 4 main categories for tasks: Daily, Weekly, Monthly, Yearly
  2. Create 4 Views that filter and only show each of the categories: Daily, Weekly, Monthly, Yearly
  3. Create 1 view that is grouped by category

Calendar items:
  1. Add to your calendar an appointment weekly, Monthly and yearly reminder to review the category items

  1. Don’t read your emails all the time, set up times if your jobs allows. I typically choose around 3 main times a day to go through email. Morning, Midday and about an hour before I need to leave. (Yes I sometimes read them more often then I should – and occasionally just glance to see if something looks urgent or not, if not a let it go until my regular review times)
  2. Couple minute rule – like another popular method if the email that came in requires only a couple minutes (like 3 or less ) do it then to get it off your list.
  3. Delegate – If you can totally delegate something and it’s quick ( couple minutes) do it, to get it off your list)
  4. Read – If you just needed to read it, read it if it’s quick and let it fall out of your view as read.
  5. If you could not do any of the above
    1. Is it something you need to schedule like a meeting – Add it to your calendar and invite the appropriate folks
    2. Is it something you need to do that has specific target dates and times you need to do something – schedule them in your calendar the time you need.
    3. If you need to keep track of any of the above items for any reason then add a task. After the below items have been done you can mark your email read
      1. Assign the categories to the task based on the period you wish to review: Daily, Weekly, Monthly or Yearly
      2. Also add any additional categories for the task that are appropriate
      3. If you like organizing tasks by time you could also create categories like 5 minute, 15 minute, 30 minute, 1 hour, 4 hour, 8 hour to be able to quantify how much time a task may take. (The category group
      4. If this task is critical and has important specific date deliverables add calendar items for those.
      5. If the task is fairly important and you want tickler reminders you could add the reminder for the task – just make sure the number of these you do is limited or you will be flooded with reminders.
      6. Create Project folders to copy emails you want to keep track of/organize (or instead use google desktop or another product to easily find your emails- I don’t use google desktop)
        1. For people that always work on the same project create a outlook rule that always moves a copy to this folder
        2. Use other rules and keywords to sort copies of emails into appropriate project folders if possible
        3. Manually moved other emails you care about organizing to the right folder

Daily review:
Pick a daily time to review your daily items. I usually pick the morning since it’s easy to remember and helps you think about what you want to do for the day.

Free time:
As per a popular method use your daily, weekly, monthly, yearly lists as well as if you tagged items with a category of an approximate time period to complete you can easily pick tasks that match your available current free time.
General :
Then just work your email box, add your calendar items and tasks. Review your Weekly, Monthly, yearly items based on your recurring calendar items for those review times you added.

Keeping track of your tasks anywhere:
I use my mobile phone to keep track of any home items I need to do. Where at the office I’m usually sitting in front of a pc, I needed something that was always with me to keep track. I found windows mobile or blackberry phones can work quite well.

Windows Mobile Users:
You can do most of the above on windows mobile. If you want to more easily categorize your tasks. The product named Agenda One worked well.

Blackberry users:
I’ve tried a few products but didn’t settle on one and decided to live with just the task list out of the box. It doesn’t have good categorization but I use my personal blackberry for home tasks, that I don’t typically have as many as I do at work.

I hope these ideas can help you dig out of your pile of emails, appointments and tasks and make you more productive.