In software development, planning is a necessary component regardless of whether one takes a traditional waterfall methodology or adopts a more agile mindset, such as SCRUM. As a project manager or scrum master, you often have to estimate how long a software release or product will take to develop. Given a set increment, such as a two-week sprint or calendar month, and the number of development units you have, it is possible to plan out a software project and estimate how much work can be completed. This estimation work is one of the many things that Microsoft Project excels at, however not everyone has Microsoft Project. Instead, you can use Microsoft Excel to do this type of work and achieve similar results.
Calculating Development Capacity:
To start with we have Development Units. This is a measurement of dedicated development hours which is what most project managers deal with in Microsoft Project, or you can substitute hours for Agile Story Points. For my example, I will utilize story points, but either hours or points will work.
Next we need to know the number of development resources that we will have available to us by Sprint or by Month. For this example, I am going to use 12 months (January through December).
The next value that we will need is how many units a single developer can complete in a given month.
Inputting these values into a table, will give us an estimated capacity for the project.
What we need next is the set of stories and their corresponding unit values. For this, we start with 49 sample stories, each with a different unit value, in this case story points. Our stories will be completed sequentially in Excel, and their story points will be totaled as we progress. This summary is used to calculate what month the work will take place in. If we are over the sum capacity of the 12 months, then we would have exceeded our percentage capacity and note this as “Over Capacity”.
We either can remove stories or increase the number of developers for a given month.
To do this in Excel, I created a Calendar worksheet with a table that listed out by month, the number of developers, the estimated velocity, and incremented story points. The calendar table does simple addition and subtraction. You can change the number of Developers and outside of the table, there is a value of Story Points per Developer that can also be changed.
In cell A4, we have 32 story points which we have already completed at the beginning of March. For the month of March we have an estimated capacity of 16 story points. Note, I have set the Story Points Per Developer value to 4 for this example. With the Calendar worksheet completed, we have a good overview of what our capacity for the next 12 months will be. We can now move on to story planning.
Next I added a Story Planner worksheet with another table that lists out the planned stories and estimated points. The Story Summary incrementally sums up the story points.
For the Estimated Month, a VLOOKUP formula evaluates the story points to the values in the calendar table. The IFERROR is used to display Jan instead of #NA values.
The Capacity column calculates a percentage and if over 100%, displays a warning message, to let me know we are over our story points.
The formula uses the IF function to display the percentage if it is less than 1, or display Over Capacity message. You can also apply percentage formatting to the column to make it appear like in the example above.
=IF((D2/Calendar!$A$14)<1, (D2/Calendar!$A$14),"Over Capacity")
Microsoft Excel is a very versatile tool and this tutorial illustrates some simple planning techniques that can be done using a couple of tables and some basic formulas. I have made a version of the Excel file, to use as a starter template:
Over the last year I have utilized Atlassian’s JIRA issue-tracking system for monitoring the progress of various scrum development teams. JIRA is a very versatile tool for Agile software development, however, like any other tool, the more you use it the more you find out about its limitations. In regards to scrum, I find the Active Sprint Board view to be rather cumbersome to use, if you are working with a large number of stories and sub-tasks. What we use instead for our larger teams, is a JIRA Dashboard. This allows us to view all the work in one screen and allows project managers to monitor the sprint progress as well.
Display Current Sprint Overview
To start with you will need to create three filters and share them with the project. The first filter is to retrieve all stories and task tickets for the current sprint. The next filter retrieves all sub-task tickets for the current sprint. The last filter is to retrieve any open bug tickets; this may be optional on how you handle defects in your project.
project = PROJ-X AND issuetype in (Story, Task) AND Sprint in openSprints() ORDER BY Rank ASC
project = PROJ-X AND issuetype = Sub-task AND Sprint in openSprints()
project = PROJ-X AND issuetype = Bug AND status != Closed
Now that we have our filters, we will create a new dashboard. I personally prefer the middle layout which gives you a smaller left column and larger right column; however you can choose whichever layout you prefer.
For the right column, add three Filter Results gadgets. Using this gadget, we can display Stories, then Sub-tasks, and then any open Bugs. In the Filter Results configuration, set the following columns to display for Stories:
- Issue Type
- Epic Link
- Story Points
- ∑ Progress
- Linked Issues
For Sub-Tasks and Bugs, you do not have to add as many fields, but you can see what works for you based on the fields listed above.
On the left column of the dashboard, some recommendations would be to add the Sprint Health gadget and Sprint Burndown gadget. I also recommend adding the Issue Statistics gadget to display Status for Stories. Although I am not a fan of the Pie Chart Gadget, you can also add this on the left column to display Sub-tasks and the Assignees.
When complete, this overview dashboard will provide a quick and easy view of the scrum team’s current sprint work. It is great for reviewing before or after standup meetings, or for product owners who need to monitor specific stories.
We all do it, right? In fact when we are not doing it, we are most likely talking about doing it, more specifically how much more of it we have to do. But what exactly is Work? Is it a simple equation or is it more than that?
Work = Time + Effort
More recently, in our information age obsessed culture, we strive to not just complete work, but to be proficient at it. We as knowledge workers have to be proficient, we have to learn to execute more precisely, to eradicate waste, be energy efficient. This is how we come to think of work, not as something we produce, but as to how we perform it. It is not satisfactory to think of work as something we do, but something we need to excel at, to become better at, to improve. It is vital that as individuals we devote ourselves to thinking about how we do work, and less about how much of it we produce. Productivity should not matter to us personally, because productivity is no longer a goal for the individual worker.
What matters is the How and not the What. This is why we learn different types of business improvement models, like LEAN, Six-Sigma, Continuous Improvement, Efficiency, Quality Improvement, improve upon processes and products. If you are thinking, this does not make sense, because my business cares about productivity, and while this is true for the business, it should not be true for you personally.
For example, I once had a fellow project manager relate to me how they did not like how a particular computer programmer spent their time. The project manager was equating a programmer’s work as the amount of time they spent in front of a keyboard, writing code.
Work = Time
My response to the project manager was that we did not pay that person to write code, we paid them to solve technical problems with our system. I then pointed out that the programmer had years of accumulated knowledge and expertise, and just because they were not sitting in front of a computer, did not mean they were not thinking about how to solve our technical problems. It was more important to me, that the programmer provided their best solutions. If I really wanted a quick solution I knew that they could also provide this, but if schedule was not a problem, I always preferred to defer it until later. My advice to my fellow project manager was to manage the project, and not manage how other people do their work, because no one likes that and it does not produce better results.
In the case of project management, I see work as a series of never ending issues, which I run through my own personal system in order to attain resolution.
Work = [Problem = (Knowledge + Communication + Execution + Monitoring)]
Issues come up every day, they arrive through email, in person, by phone, text, via your boss, customer, and sometimes by your own assessment of your project. In projects, everything fits into a Scope, Schedule, Cost category, but issues usually span some combination of the three. The other great truth is that in life all problems are people problems, because a process is just a series of steps. It is people who either do not understand the process or are refusing to execute the process, so in the end you have to deal with the people problems first.
This is the hardest part about life. You have to communicate! Ask questions, if someone comes to you with a problem, what is it that they are trying to solve? We are incredibly bad at figuring out what people want from us, if we do not ask questions. Communicate… define the problem, get agreement on what would satisfy all parties, and agree on how to monitor the outcomes.
Run the problem through your own personal knowledge system. Many people start out at a job and rely on the company to provide training and if that company has good documentation and processes, this is the system that people end up using. Long term this is not a substitute for a personal system. What I mean by that is that you should be a life-long learner and build your own system for being organized, focused, and having a proper toolbox of skills. There are tools that can help: task managers, Microsoft OneNote & Outlook, etc… try them out, take an online class, take a seminar, find what works for you. Next learn how to take feedback, get a mentor, someone who can give you honest criticism and who you can ask questions. Self improvement: focus on what areas you need for your work, my suggestions: improve your communication skills, learn how to give great presentations, get to know your customers, understand the entire cycle of your business, volunteer to help your peers. Coming back to my previous computer programmer example: accumulate knowledge and expertise. All of this becomes your personal knowledge system in time.
Once you have run through all the possible ways to fix the problem and had the discussions with the necessary peers or teams, go and execute the fix, the changes, the solution.
Monitor and Learn:
Solving for X is not the end. You need to take the extra steps to see what the outcomes and perceptions are. You will find that getting feedback is often difficult, but it is important to learn about your mistakes and your successes. For example, one of my favorite tools is Microsoft Excel and though I depend on it, I have learned the hard way to always keep a backup of my original data, to triple check my final analysis, and if at all possible, to have someone else validate my results. The worse feeling in the world is knowing you made a mistake in Excel, five minutes after you have delivered your file. Always have a backup, always validate, always incorporate lessons learned.
Feedback can be as easy as three questions: How am I doing? What could I do better? What can I do different? If you are trying to improve your team, replace the “I” with “We” and keep asking the same questions after every problem resolution, or on a monthly basis. Most of all do not wait to the end of your project, as most people tend to forget what happened in the past.
Make Everyone Better
A famous basketball player once said that it is not enough to be a great player, you have to improve those around you in order to truly win the game. This applies in the work place more than ever.
Success is a measurement that can be shared.
Backups are a necessary routine for computers. Over the years, there has been many trends in computing that promised to make backups easier, simpler, but as humans, we still tend not to do a good job when it comes to backing up our data. The best solution for home users is Time Machine in Mac OS X. Simply add a drive (usually an external drive), and setup Time Machine to backup your entire main drive. Time Machine is the most simple backup to setup, but it is not perfect. After multiple backups, Time Machine usually encounters problems and the easiest solution ends up having to wipe your Time Machine drive and start all over again. On Windows, there are third party apps that allow for Time Machine like backups. Their main benefit is that their user interfaces are easier to use than the built-in Microsoft Backup program. There are also cloud backups as well now, so you can use iCloud, Google, Microsoft, or Dropbox for your backups. For most of us though, the cloud backup should really be a secondary backup and not your primary. In general terms the advice is to have a backup plan and to automate it as much as possible. Eventually all hard drives and flash memory fail in some way, and so backups are always going to be needed.
As a project manager, one backup strategy that I have used for a number of years is to have a one folder backup strategy. For my business laptop, I create one folder under C:\Users\Username\My Documents\. This folder I name Projects and I then create a shortcut for it and place the shortcut on my Desktop. For every project I work on I create a folder underneath the Projects folder. As I complete projects, I then move these folders to \Projects\Archive. Anything related to a project has to be save somewhere under the Projects folder. This takes discipline, but is very easy to do once you keep to this routine of saving files to one folder.
Although every Operating System now provides a directory structure for users, most people have made the Downloads folder their main working folder! How many times has someone asked you to help them find a file, and you have opened their Downloads folder to discover thousands of files? This happens way to often. The Downloads folder was never meant to be a work folder. It was mean to help users find their downloaded files, but over time, people have treated the Downloads folder as their main repository for everything. It is important to remember that the Downloads folder is really a temporary folder for files. Nothing important should ever exist in the Downloads folder. Anything in the Downloads folder can and should be deleted. Move all your important files and working files to your main Projects folder and never work on any files outside of the Projects folder.
Now that you have all your files in one location, you need to copy your Projects folder and anything underneath to a secondary drive, backup location, cloud service. Although at the end of the day, you could simply copy and paste, drag and drop, it is best to automate this. In a business environment, there usually is a network drive or NAS that you can backup important files to. There are multiple apps or commands that you can script to accomplish this. The easiest way I have found is to use SyncBackSE. Using this application, I automate the backup of the Projects folder to run Monday through Friday, while I am at lunch. This backup strategy works well and is uncomplicated to use.
We have all been in this situation. It has been a busy work week and although you really need to get some work done, you find yourself in a meeting. The reason is usually the discovery of a problem and the meeting has been called to figure out a solution. After the first 15 minutes, you start to see just how effective your team really is. If what occurs next is an active and engaging debate between everyone in attendance, then you have nothing to worry about. However, if the room goes silent or if the list of ideas seem familiar and there are few of them, then most likely your team has issues. I am a big believer in the concept that all problems are people problems first. Regardless of how great a process can be, if the people executing the process don’t understand it (or their role in said process), then that process will ultimately fail. The same goes for teams. If you have a team where members do not understand what role they play or are not willing to actively participate within the team concept, then your team is not very effective at all. Not being effective, means not productive, not able to think creatively, not working at all. This is most often described as the Nonfunctional team. Nonfunctional teams are costly, don’t produce quality work, and force your most talented and productive people to look for another job. The impact on the business is immediate and sometimes irreversible. So what can be done to build better team?
Begin The Conversation
Recognizing that the team is nonfunctional is great, but the problems will not just go away by pointing them out. Team members will need to be communicated to individually and as a group. Convincing most team members that there are problems will not be hard, getting them to talk about it is what will be difficult. It is important that the team take responsibility and ownership over improving the team environment. Empowering your team is the single most important thing you can do. Take the time to listen to each individual’s point of view. Some managers take it upon themselves to do a day long meeting and hash out a team building event, but if the problems have been going on for a while, it is better to build up support before going to team events. As a team leader or manager, be prepared for obstacles. Remember that the status quo is not where you want the team to be and that feeling “comfortable”, means that you have not really implemented any change.
Once you have some support on your side, present to the team the plan. You should have some goals, as to what defines the team, what values the team will have, and how the team will get there. These should be written out and easily recognizable to anyone who reads them. Reaching your goals will mean changing the culture of the team, to work effectively, to focus, and to let go of old habits, processes, policies, politics, etc that get in the way of these goals.
For the first day long team event, you will need to tackle the first thing that most teams are not good at, namely communication. Effective teams communicate openly and honestly. In order to do that, as a leader, you have to put yourself out there first and talk about what difficulties you have as a manager or team leader. Communication is personal and so our instinct is to avoid anything that makes us feel vulnerable to each other, however, you have to share. Communication is a shared experience and until you share something, you can’t really communicate. Once you take that first step, the team will follow one by one. It will be difficult at first, but the more you share the better you will be able to communicate. Again, the communication has to be personal. There are simple exercises you can do, or you can simply have an open discussion similar to a talk show. For example, the statement “I feel uncomfortable when…” is a good start. The idea is to have the team get to know each other as people first.
Once you have a shared experience, next comes work. The idea is to communicate better and with better communication comes that magic word that everyone talks about all the time: trust. In effective teams, all team members trust each other. It sounds simple but a good working relationship takes a lot of work. In order to get there, as the leader in the room, you have to help the team to craft some ground rules on communicating with each other. Communication needs to be active and engaging, but you also need to agree as a team that once the team decides on something, that it is decided. You want to allow for individual discussions and points of view, but you also want to the team to be able to achieve consensus.
At the conclusion of your first day long event, you should have come out with ground rules for communicating and agreement to work with each other for the sake of the team goals. You won’t have the perfect team yet, but you will have something which you can build on in the coming months.
One of the most frustrating situations that I run into as a technology evangelist is observing people make poor technology decisions. As a tech guy, I want to advocate for the best technology solution possible, but you always have to consider who will ultimately use the technology, how much will it cost to implement, and over time how will it perform. In truth there is no perfect technology solution, all solutions have their negatives and positives; the best that you can do is choose something which satisfies all the requirements and that people are comfortable with. However, before you run out and spend your budget, consider the following to see if your technology choices are the right ones for you.
Technology Solutions For People Problems
Ironically, technology cannot fix everything, but that does not stop people from trying to use it in situations where it does not fit. The prime example of this is when you have a group of people that need to communicate but choose not to. You usually find that for personal reasons people do not get along and this causes the process to breakdown. All problems break down into two categories: you either have a broken process or you have a people problem. Most decision makers tend to ignore the people problem and focus on the broken process and this is a big mistake. In this scenario, any technology decision will fail because the people problem was never resolved. If people do not get along and stand in the way of a great process, the process will still break down. The best thing to do is to focus on the people problem first and allow the people that will work the process to be part of the solution. Involve everyone and communicate, communicate, eventually the solution will become obvious to everyone.
The Perfect Technology
When choosing a solution from a vendor, you will always get a sales pitch about how wonderful this solution will be for you and how it is so customizable that you cannot afford not to choose it. No technology just works. Everything is designed to work a certain way, and it takes time to learn new technology no matter how awesome it is. Do not buy the sales pitch, instead be prepared to spend significant amount of time when adopting new technology and balance it against how productive or how profitable it will make your process and business.
All of our advances in society have come about because someone had the great vision and determination to create something, even if it was by accident. It is those achievements that propel us forward. When it comes to technology we stand on the shoulders of these great visionaries and we sometimes lose perspective because of our admiration for such and such person. As much as I love all things made by Apple, I need to retain some perspective. Just because I love Mac OS X, does not mean everyone has to love it the same way. The right technology solutions are not always the ones that I want. Ask yourself, does it make sense to buy an entire rack server or will something smaller work just as well? As technology advocates we love our toys, but you want to be careful that not all your technology choices are your technology choices.
Avoiding The Status Quo
The tech world runs in cycles. At one time, the network server was cool, then all of a sudden it is not as trendy, and now it is back. As a decision maker, you have to study the trends and know when it is time to jump off and adopt something outside the status quo. Sometimes the new trend is not going to end well, I’m thinking mostly about those cheap netbooks that everyone was so enamored with a few years ago. On the other side, the tablet is something that just works and you will need to include them in your strategic plans. You want to be an early adaptor who picks sound and effective technologies and yes that is a lot harder than it sounds.