Managing Successful Projects

7
Oct

An economic slowdown is scary for everybody.  Daily newspaper articles and television features reinforce the general fears about how bad things are going to be.  Your company might be unaffected, but probably will slow down at least a bit.  Avoid the temptation to wait passively for the inevitable upturn.  Take the opportunity to make your company more agile, responsive, and efficient.  When things pick up again, you can get back to speed faster than your competitors and operate at a higher capacity than before.

The sequence might go this way:  adjust your attitude, analyze your business plan and operations as coolly and objectively as you possibly can, and then invest in technology which can lower expenses in the near term and build the long term value of your company.

Adjust your attitude

You have to want to succeed.  As Woody Allen says, “Eighty percent of success is showing up.”  Abraham Lincoln said the same thing in a different way, “Always bear in mind that your own resolution to succeed is more important than any one thing.”  Do you have the stamina to keep showing up?

If you want to stay in the game, you should decide to compete on quality, not on cost.  If you compete on cost, you’re stuck in a race to the bottom.  Peoples’ needs don’t go away just because the economic conditions are poor.  Identify what you provide that people still need, and be sure that this service or product is top notch.  Prospective clients will be more likely to risk spending their scarce funds to buy from you if they have confidence that their needs will be fulfilled on schedule and bug-free.

Resist the temptation to feel helpless.  You always have options.  Find them.

Sharpen the skills of your workforce so you can compete on quality

Competing on quality means maintaining a highly skilled workforce. Be sure your balance of younger and more experienced workers is effective.  The energy, drive, and malleability of entry level workers provide a good engine, but you need experienced, steady hands at the helm.

A number of studies specific to software development on the subject of cost vs. skill have concluded that value increases at a far greater rate than cost as worker skill increases. A worker with twice as much skill produces far more than twice the value in the form of productivity and lower defect rate.

This is a good time to provide mentoring and tutelage for your less experienced staff.  The faster and better each of them works, the better the company is.

Automate where possible

Business process automation has the benefits of greater speed and consistency. It also allows a business to gather information that wouldn’t be collected at all if it were done manually.

Automation tools add immediately to your company’s permanent infrastructure, and will provide new abilities which can then be offered to your clients.  The ideal use for automation would be providing these new abilities, rather than cutting your staff, though staff cuts may sometimes be necessary and advisable. Weak staff members, or areas of inefficiency in the company cannot be dealt with any other way when you don’t have the financial reserves to nurse them along.

Processes that require a minimum of special handling are most amenable to automation. Take some time while business is slow to determine which business processes are most-cookie cutter and look for a service provider to help you find ways to automate those processes.

Outsource where possible

Automation is generally preferable to outsourcing as a cost-cutting method, because you have more direct control in its creation and implementation.  It might be, however, that accounting functions, customer service, data entry, and printing could be outsourced.  Your particular company may be able to cut costs through outsourcing in ways you haven’t previously thought of – maybe that nobody has ever thought of.

Since outsourcing almost certainly involves the displacement of staff, and may undermine morale, it might best be left until last.

Make your decisions on the facts

Base your decisions on a clear-eyed understanding of how your company functions financially.  Good reporting systems will find the hidden and non-essential costs that you can strip out when cash is in short supply. Perhaps you will find savings which will save one valued staff member, or one initiative under way.

Invest in tools which will give you the information necessary to identify the strongest segments of your business.  When you gather the cold facts, there may be some surprises.  With the tools in place, continual re-assessment will be possible when you’re once again working overtime.

Identify what makes your company unique.  What can you lean on to pull you through the tough economy?

With the facts in hand, you are in a position to prioritize, allowing you to cut costs in the way which will be least harmful to your company’s mission.

Move Forward

You have a limited amount of time to get the most out of this effort.  Act while your competitors are still slowing down.  The longer you wait, the less leverage you will have when the weight lifts.

Focus on your own company and your own clients.  You don’t have to solve the underlying problems of the world economy in order to pull your own company out of an economic slump. For the moment, find a way for your profits to go up a little faster than the economy is slowing down.

You don’t have to think alone.  Unlocking the minds of your staff calls for leadership.  Inspire your staff to join you in resisting paralysis and moving forward.  (You might find the time to read a book written by one of those management consultants you can’t afford to hire.)  How best to light a fire under your staff?  More staff meetings?  Written reports?  A retreat?  Video presentations?  Something you never thought of?

Your new automation and reporting tools provide insight and, most importantly, infrastructure to catalyze new ideas that push an organization toward new streams of profit, even during a downturn.

Finally

Nobody knows your business better than you do.  Nobody cares more about the company’s future viability than your staff.  If you have the facts behind you, and a clear vision in front of you, you can make the investments and make the changes to get through this gloomy time stronger than before.  This is what being in business is all about — pulling through and staying in business.

Category : Managing Successful Projects | Blog
15
Aug

In the business of custom software development a lot of work comes in the form of people stuck with a technical need that they can’t figure their way around. This need is often unexpected. Often the people that are stuck are not technical.

In these situations the successful developer will quickly assess the need and write a proposal or estimate. To do this the developer needs to be able to ask the right questions, properly assess project scope, and quickly put together a team. The developer will also often need to speak with product vendors associated with the prospective client to learn the capabilities of sometimes unfamiliar systems.

As a developer, even if you have no experience with a specific tool, product, technology, API etc. you have to keep in mind that you still know more about how those sorts of things work than your non-techie client. This doesn’t make you an instant expert, but you are valuable because you can more easily and comfortably figure out how to use the troubling technology than your client.

The key to your value is making your clients seem to their client(s) as though they were as comfortable with solutions to the technical problem as you are. Your quick response is crucial so your client isn’t in the uncomfortable position of having to stall and dodge technical questions from his client while waiting for the solution.

In conclusion, dealing in custom solutions means dealing with the unexpected. Unexpected needs require quick fulfillment in order to prevent overall timelines from being thrown off.

So be responsive to your clients’ needs. They will come to depend on you and your business will grow because of it.

Category : Managing Successful Projects | Blog
25
Jul

As a follow up to our post a few days ago titled “Task Tracker Redux“, here’s a list of an additional 36 web-based task trackers that we didn’t mention.

Category : Managing Successful Projects | Blog
16
Jul

Key features

In the business of developing software, we usually work with many people concurrently and interactively. This context has peculiarities which make some tools more appropriate than others.

Some of the key features in this context are:

  1. Tasks are not static: Custom software development is more like driving on the highway than riding a train. Task definitions are more like the rails that keep you from going off the road than the rails that keep you exactly on track. As the software develops, clients get new ideas and requirements change.
  2. Deadlines: Again, guard rails. Being able to see what tasks are most urgent is helpful when working on many things for many bosses.
  3. Discussion is important: Each task begins as an intangible; then ideas and specifics develop and evolve. They are critiqued and reviewed. All mutations of the original idea should be tracked, archived, searchable and associated with related work items.
  4. Tasks relate: It’s not at all uncommon to be asked to do follow-up work for a task that was completed months earlier. All of the previous information about the task is still relevant and provides an excellent refresher while moving into the new phase.  It is important to be able to relate new work items to the old/completed work items.
  5. SCM (source code/control management) integration: All the code we write is tracked through a system that tells us what has changed in each version of a file. Files are “checked in” or “committed” when they’re working properly, or when we want to save some work. It’s tremendously helpful to be able to include a task identifier for committed work that can later be searched on to see what code changes relate to a work item or feature.
  6. Status at a glance: From a management perspective this feature is critical. Who is working on what? Who is ahead of schedule, who’s behind? What deadlines are closest? Etc.
  7. Clients: Multiple clients have multiple projects, each of which involves multiple tasks. We need to be able to provide access to all projects at all levels.
  8. Notifications: In order to have running discussions related to tasks, it is necessary to be able to send/receive notifications when a comment is posted, a new task is created, etc. This needs to be configurable on a user-by user basis.
  9. Team structure: When working in a team it is helpful to be able to define different roles and responsibilities which can be integrated into a workflow. “Lead Developer” and “Manager” would be two key roles. It is not necessary for every person to have a role. Only certain key responsibilities need to be assignable through some sort of role structure.
  10. Triage: The task tracking system is a conduit for communication which allows you to see concretely the intangible element of progress on a project, one task at a time. The first step in measuring progress is defining the task. Certain team members are assigned the responsibility for “triaging” new tasks, making sure they are clearly defined and that expectations are properly calibrated on both the client and developer sides before work begins.
  11. Invoicing: The ability to generate descriptive invoices from timesheets is essential.

Types of information

Some pieces of information are like signposts, staying rooted in place and guiding traffic around them. A wiki is the right tool for this type of information.

Some are like particles of magical, formless, floating pixie dust. A task tracker is the right tool to track this type of information. The key notion here is that progress can be quantified.

Some are the anonymous and non-descript traffic around the signposts. This is typically activity like people asking questions about how a feature works or asking for help solving a particular problem, configuring a system etc. This is “front-office” activity. It is questions asked of support staff as opposed to requests for features of or assigning work to developers. A forum is the right tool for tracking this type of information.

The lifecycle of the system goes like this:

  1. A person asks a question in a forum.
  2. Discussion ensues.
  3. The discussion outlines a feature that should go into a subsequent release.
  4. Tasks are created and related to the forum discussion. Features are described. Timelines are defined.
  5. Work begins developing the feature.
  6. Discussions related to the development process are tracked using the task tracker.
  7. Releases are issued.
  8. Just before a release becomes final, the completed feature is documented in the wiki.
  9. The new feature is released.
  10. People ask questions in the forum

Wash … rinse … repeat. I’ve left out the whole QA process for the sake of brevity. You can probably get a feel for how that might work for you, given the tools and types of information I’ve described.

Comparing the systems.

Now that the context is defined, how might various tools meet your needs?

In our experience, we have found it rare that a system satisfies all of the needs just described. Some systems are better for companies which develop a single software product (i.e. no support for multiple clients or invoicing). Some systems integrate the magic triad; forum, task tracker and wiki. Other systems don’t. Some systems license by the user, and are therefore expensive. Some systems are easy to install and use. Other systems require a lot of maintenance. There are many factors to consider.

Two main types of task trackers

Task trackers usually fall into one of two categories; “todo list” style or “urgency/priority/severity/percent-complete” (UPSPC) style, for lack of better names.

Todo-list trackers are loosely structured. They are geared toward small-scale and less-complex projects. Some people would argue that their simplicity makes them even more powerful than more structured alternatives. This is an arguable contention when viewed in general, but when discussed in the context of a specific task, the choice usually becomes clear. They are not the right choice for projects involving multiple contributors or management assignments.

UPSPC trackers usually enable developers to prioritize tasks. If this sort of system is used, it is critical that users understand the difference between “urgency,” “priority,” and “severity.” Even when they are understood, tasks are often mis-categorized.

Our Faves

Instead of exhaustively evaluating every possible system, we will give you what we consider to be the best of each type of tracker.

Jira (UPSPC style)

Product home page:

Jira

Made by:

Atlassian

Pros

  • Well engineered features, such as a killer work log which allows you to easily track time as a developer, and to monitor and manage time spent by the rest of the team. Atlassian even offers a hosted integrated platform, called Jira Studio, which combines their products as a hosted service. This is a powerhouse package.
  • Free licensing to open-source projects. This makes it a popular tool for open source java projects (particularly those centered around the products from Codehaus it seems).
  • Available either to download and install or as a hosted service.
  • Structured sensibly. It is integrated nicely with Confluence (their wiki product) and Fisheye (their source control visualization product). It has great features and macros, customization capabilities, and all sorts of other things.
  • It is fantastic for a company building software products for sale.

Cons:

  • Doesn’t well support tracking work for multiple clients.
  • Doesn’t integrate well with invoicing systems like QuickBooks, Freshbooks, or Blinksale.
  • Expensive. Commercial licensing is done on a user and feature basis. It is written as a J2EE application, and therefore should have a dedicated box for hosting.
  • It is not great for a company building software for other people. As already noted, it doesn’t have the ability to easily integrate the needs of multiple clients.

Basecamp (a todo-list style tracker)

This task tracker is really the combination of two pieces of the Basebamp suite, “Time,” and “Todos.” If you are familiar with Basecamp, you will know what I am talking about. If you are not, check out Basecamp to see for yourself, and maybe even sign up for a free evaluation.

Product Homepage:

Jira

Made by:

37signals

Pros:

Basecamp is chock-full of features. The task tracking is almost an afterthought. The way we use Basecamp focuses on the forum-like “Messages” area. We discuss and refine ideas until a project or task scope is understood. We then move forward, communicating using these messages, and recording our time with Basecamp time log entries.

  • It just works!
  • Tons of features
  • Well integrated with other applications. Many high-quality applications on the web have integrated with Basecamp, such as Beanstalk, Freshbooks, Harvest, and SpringLoops, among others. Thanks to Basecamp’s integration API, we have options in terms of how to use the various tools that make us more productive and reliable.
  • Flexible pricing
  • A total collaboration solution

Cons:

  • Customizability is limited because it’s a hosted service.

Put another way, Basecamp makes us a better company.

The Rest

There are a number of other systems which we’ve collectively evaluated over the years, but haven’t worked extensively with.

These include:

Conclusion

A task tracker is a core tool for a development team. It is important to find (or build) a tool that can be shaped to exactly fit your project and working style.

Take some time to experiment. See which features help most. Give yourself some time to see how well the tool fits

We are always looking for tools that can improve our productivity and communication. If you’ve used a tool that we didn’t mention, please tell us, and the world, about it.

Happy tasking.

Category : Effective Collaboration | Managing Successful Projects | Blog
15
Jul

There’s very rarely one big thing which can make or break a software project. The all-night “hail mary” hack session that you or your developer thinks saved your project was, although heroic and well-intentioned, most likely not the major contributing factor to the success of your project.

Here’s the secret to successful software development projects.

Start with an idea. Discuss it with everyone.

Listen. Be tenacious but patient. Above all, be honest with yourself.

Stay flexible.

Reward your successes and learn from your failures.

Enjoy each small success.

What you will learn is that the reward from success is the team you’ve built, not the product.

Lead that team on to other projects. As you succeed with each one, larger projects will come to you.

Succeed with each one and you will realize that all successes are small because there’s always a larger one waiting for you down the road.

Nurture, challenge and care for that team and you will find yourself, a long time from now, reflecting on many small successes.

Category : Managing Successful Projects | Blog