Handling tough decisions

First day on the job you probably, arbitrarily chose your first language or even more likely someone else chose it for you. Your path has so far been easy with what you need to do either being dictated to you by some kind of boss figure. This maybe literally your boss, a client or even market forces.

However as your career grows, you will find yourself having to make more and more decisions. Your decisions will have far reaching impact and will likely be affecting not only your but other individuals as well. As you grow into this new roles you might need some new tools in your tool set to help you deal with some tough decisions.

What makes a decision tough? The obvious answer would be a decision that has a huge impact. If you thought so, then you would be wrong. To demonstrate this, think, if you came across a person shot and wounded in the street, would the decision to take them to hospital be a tough one? Yet the impact would be huge!

So what does make a tough decision? You have yourself a tough decision when among the options there are no clear winners, one option is good in this way the other option is good in the other way.

Finding yourself in this position can be agonizing where at night you sleep having decided to go with option A and wake up feeling option B might have been a better option after all.

While there are no silver bullets, there certainly are strategies of dealing with such issues, one of which I am going to present today.

Weighted Average Decision Matrix (WADM)

WADM is decision tool that helps you break down the decision into decision factors which you can then quantify and compute to come up with an objective value of a better decision.

To work, the tool requires at least two decisions. In our case we are going to give an example of PHP frameworks.

Your team has been tasked with building a cutting edge SAAS application and you need to choose between using Phalcon with its super performance or Laravel with its expressive style. Which one will you go with?

Step 1: List out the factors

List out all the factors that are important in a framework when building your SAAS.

Step 2: Write relevant importance

On a scale of 1 – 10 write out how important each factor is in your decision

Step 3: Weight the options

For each option rate it on 1-10 on how the option fairs in that factor.

Step 4: Calculate Weighted options

For each factor multiply the relevant importance by the weight of the option. I have separated out the weight for easier computation in a spreadsheet.

Step 5: Compute the sum

Finally compute the sum of the weighted options to get your decision.

Using the WADM method, we have been able to establish that Laravel is the better option for your project.

Hopefully this technique will save you countless hours agonizing over your decisions.

How do you handle tough decisions? Tell us in the comment section below.

You can check out the spreadsheet used here.



5 ways to get to the top of your field

Have you just got the basics of a new skill and are now interested in ramping it up to professional level? Great then this article is for you!

All seasoned developers know that a key to thriving in our industry is to develop the skill to properly process new information. This skills has four steps ie:

    - Recieve information
    - Understand it
    - Process it
    - Apply it

On this entry we will only talk of the first step, you may want to look at this entry So you want to become a master developer? for the other steps.

Fire up the hose

In the sea of information that we live in, it is easy to loose track of what is important, however the following key sources always deliver.

Top blogs

Identify key players in your industry and follow their blogs. Most will send you newsletters, signup for that, if that is not available you can leverage Google Now or any other content aggregator.

Due to my busy schedule, I find Readability to be an especially potent tool to manage my reading schedule, may also work for you.

Follow key people

Unless you are in the music industry, the likes of Beyonce should not be in your list of key people. I am talking about influencers in your field. This maybe Taylor Otwell in the PHP community or Obie Fernandez in the Rails world.

By following them both on twitter, github or any other platform that they choose to express themselves, you will get the latest on what is happening in the domain.


I am willing to bet my last shilling that you have at one point or another found the solution to your problem on http://stackoverflow.com/, but I would not hazard the same that you have contributed to it.

By keeping an eye on new questions coming in to such forums you not only quickly gain knowledge on your field, you also establish yourself as an expert in the domain.

If you are unable to spent as much time on this task, check out CodeTriage, this guys will send you an issue a day to solve on your inbox, pretty cool right?

Local user groups

Don’t let the position of this entry fool you, this is one of the important tasks you can do. User groups present to you a unique opportunity to interact with people in your field who also operate under the same business environment as you do. This means that in addition to knowledge and skills you can also get tangible benefits like a job or contract.

Start from http://www.meetup.com/ look for your target group and join join join!


In your next review, consider requesting your employer to sponsor you to go to a conference in your domain. The costs are usually neglegible and the benefits gained both for you and your employer massive. I will let Chris Marr expound further Why attend industry conferences, seminars and events?

If however you can not make it to attend such conferences, you can probably find slides of it from sites such as Slideshare or SpeakerDeck. Video recordings are also usually available in YouTube or Vimeo.


Courses valued at thousands of dollars are available for absolutely free from organizations like Coursera, MIT, Harvard etc. It is insane not to aggressively cash in on all this freebies!

Commit yourself to at least one course every half year or so, the fruits will be worth it.

Turn down the hose

While all this new information is fun and exciting, it will eventually start eating into your professional and personal life. To get some work done you eventually need to down the hose of information down to a manageable level.

Remember your clients pay you to build them software, not to attend conferences.

How do you manage your own flow of information? Talk to us in the comment section below.


Metrics on quality of software

Quality is a term loosely used in the world of software development. I would be hard pressed to mention a project in which quality of the product we we’re building was not mentioned many times over. And while clearly I work with a super team we would be hard pressed to define what quality software actually is having long settled on the I will know it when I see it camp.

Still it does make some sense to at least see what informs our decision making. So lets start

Who is responsible?

The phrase the buck stops here has as much weight in technology as anywhere else. The management believes that quality should come from the developers and the developers believe it should come from management. The truth is, both parties play a critical role in the delivery of a quality product.

    Developers: Software is highly technical, the burden of ensuring its quality rests squarely on your head, this is why you are paid.

    Managers: We developers are not good neither do we care to be good in corporate politics, your job is to enable us do our job by paving the way and then getting out of the way.

Metrics of quality

Despite the amorphous nature of quality, there are still some measures which we can use to get a rough outlook on the product you are building

  1. Reliability

Your product should do what it was built to do dependably. I have put this particular metric as first on the list because if you do not achieve this then nothing else is worth measuring.

Think about this the next time you have a two hour meeting to discuss if the logo should be placed on top of the page or at the bottom.

  1. User Experience

The end goal of all software is to serve humans. I know humans are not nearly as cool as the tech your working on, but every once in a while make sure you have some of them actually using what you are building. You may be surprised at the insights you gain.

  1. Maintainability

Most of the time we spend on software development is on the task of maintaining it. In fact almost all design principles are written with the explicit goal of making it easier to make changes to existing code base or adding new features.

  1. Efficiency

I am saddened by the number of engineers who seem to believe that optimization is yesterdays problem. To this engineers a rude shock awaits them if ever their product is mentioned in a popular outlet such as hacker news.

And even if you have the money to quickly scale up your services perhaps that money would have been better spent elsewhere/

What are some of the measure you use in your own shop? Talk to us on the comment section below