Categories
Program Management Software Development

Do not overthink your project dates

“For yesterday”, “ASAP”, “we need it now”, “by EOD today”, “urgent matter”, “we can’t miss it at any cost”, “it’s committed so we can’t change it”, … 😒

Being under pressure to release something soon(er) or on the planned release date is how many teams operate. One may think that pressure is a temporary state. Another may see that as the rule instead of the exception and inherent in the company culture.

An aspect sometimes taken for granted is what success means for a given project. A more purist project manager may claim that if a project is released on time, with the planned scope and within the budget then it was a success. While valid and common, that approach is focused primarily on short-term results.

Shenhar et al. (1997) proposed a multi-dimensional model to define project success that aims to encompass both short and long-term benefits from projects, which includes 4 dimensions: project efficiency, impact on the customer, business and direct success, and preparing for the future. The first dimension is what most organizations primarily focus on and schedule is a major, if not the most important, component of it.

Even though there are truly time-sensitive projects (like an update to comply with new regulations not to incur in fines), there are also projects that are forcefully said to be required by a certain date for reasons that may be questionable. Whenever an unnecessary constraint is imposed, it may lead to wrong trade-offs that come at the cost of impacting long-term goals which could be more significant than the constraint.

The following picture shows that the relative importance of project efficiency gradually declines over time after project completion, i.e., the fact that a project was released on time may have little influence on what happens with it in the field. Still, we spend most of our energy to make that date happen and sometimes forget about the other dimensions. Although success in that dimension may represent a well-managed project, that alone may not guarantee actual benefits for the organization in the long term.

Relative Importance of Success Dimensions is Time-Dependent – Adapted from Shenhar et al. (1997)

As project managers, we should be challenging project requirements and asking why certain constraints are put in place to validate the actual boundaries of a project. That knowledge enables us to drive for efficient execution while keeping an eye on long-term goals to enlighten the customers, grow the business and sow the seeds for future opportunities.

Time-to-market is important but you should not live to make a date at any cost or for the sake of following a plan. Challenge your team to 1) think more about what comes after a release and to 2) value more the product quality and its usefulness to the end customer.

Keep in mind that releasing a product is just the start, not the end.

References:

Shenhar, A. J., Levy, O., & Dvir, D., 1997. Mapping the dimensions of project success. Proj. Manage. J. , 28 (2), 5-13

Categories
Software Development

Rails 5.0 is available!

It’s been 7 years since I had my first experience with Rails. Back in 2009 the version was 2.3.x (I’d guess 2.3.5, but not sure) and managing gems during that time was such a pain. Since then we got many different versions with features, bug fixes, security and performance improvements (yes, per-for-mance, if you’re still one of those skeptical haters that think Rails can’t perform/scale).

Last June 30 version 5.0 was released and it has few interesting features.

  1. Action Cable: A brand new framework for WebSockets. If you need to keep a connection open between a Web client and the server, that can be very handy. It’s definitely worth to take a look at.
  2. Puma: Instead of Webrick the development environment now comes with Puma.io server by default. Personally, I was never a big fan on Webrick. Making Puma the default server turns the development environment more professional and in case you need other devs accessing your env, it becomes less painful.
  3. Turbolinks 5: New version of Turbolinks. Great feature since developing mobile versions is a requirement for pretty much any app.
  4. API mode: This is the cherry on the cake, IMO. Creating a RESTful API skeleton has never been so straightforward. If you need only a backend app to respond some REST calls spitting JSON, that’s the way to go. By providing the –api parameter (rails new backend –api) you can create a basic backend app structure.

Give it a try and spend some time playing with it. Further sources can be found at the official page.