6 month long projects are so last century

Hourglass with spider web Recently, I received a company-wide email complimenting a few groups of people for excellence. Those groups worked hard together for a project and successfully launched it. There was this particular one praising about 10 people for giving their best and sticking it out for 6 months.

That, is freakin’ long.

I can’t believe anyone going through a lengthy project like that in these recent times. A console game, I can understand, and it typically takes about 2 years for a game to be completed. It’s extremely hard to correct mistakes after a console game is launched, so there’s a lot of coding and testing to do. I mean, how can one apply a patch after a game is out?

Start-ups are even more taxing. I was working in one such start-up software company, and the implied timeline given was one year. At the end of that one year, some product had better be launched and profits coming in, or the start-up company’s going under. Rent, programmer salary and flagging confidence of the entrepreneur will slowly drain the resources of the company for anything longer than a year.

The world is getting flatter. Individuals now hold as much power as large companies. Open source projects are on par with proprietary software, and sometimes at a fraction of the cost (some even free). Software management and development needs to move faster.

6 month long projects are just so last century.

If not for the fact that my company is large enough, I doubt that project mentioned above would have done anything to the bottom line. It would have taken longer to reap the rewards of that project. And sometimes, that’s a luxury smaller companies and individuals cannot afford.

6 months. 10 people to be paid. And nothing to be gained in between? Those rewards had better be good…

[start of small digression]
My colleague recently gave birth to a healthy baby girl (congratulations!). Nature has designated that 9 months is sufficient for a human baby to be fully formed enough to be born.

Baby in blanket
A baby doesn’t have to be born extremely clever. A baby doesn’t have to be physically strong. A baby just needs to be as complete as possible at the point it’s born, and have the potential to grow.

And no, that’s not my colleague’s baby girl…
[end of small digression]

How can a baby grow further? Be out here in our world. How can individuals, small businesses and large companies grow further? By putting themselves out here in the world. How can software grow? By being tested in our world.

All the documentation, design, coding, testing, meetings and discussions and opinions mean naught if the software doesn’t work in the real world. And you only know if it really works when it’s out here, in our world.

Faster iterative cycles

That’s why agile methodology recommends smaller and faster iterative coding and testing. Code, launch, test, get feedback, code better, relaunch, test again, get more feedback, and so on. Of course, there comes a time when launching into the real world works better than launching into a test environment. Well, release the software product, and get back to making it better.

Launch your software with as complete a feature set as possible, and as soon as possible. My users are usually ecstatic over a small launch into production, be it just a new interface that really helps their job, or a small web application catering to a customer need.

Why? Because with faster launches, they can garner more businesses at a faster rate. Sometimes, customers don’t need a million dollar application with 100 plus features (most of which will never used). They just want a 3-screen interface application that does a really good job of retrieving data, because that’s all the customer really wants. Anything else is fluff, nice to have but hardly earth-shaking if absent.

And when the application is launched, there will be real-world feedback from the customer, real suggestions and improvements to be made instead of the hypothetical business cases when planning the original million dollar application.

How do you get faster launches with your projects? Break it down into the smallest, most complete application that satisfies the requirements, and launch that. Then move to the next phase by implementing the next most complete superset of the features you cut out from before, and launch that.

In the process of doing this, you may find you no longer need some features, because then, you’ll really and truly look at what provides the most value for the customers and users from the application.

My real life example

There was this one project I did. My whole team had rescheduled everything else, because the customer was a huge deal, and the time given was one month. My users worked hard to obtain that customer contract. Sales people selling, customer service people servicing and administrative people administrating. My team was tasked with the IT part, porting data, managing data, calculations and processing. Me? I was in charge of the web application, the very interface that customer has with all that data.

During that period, I was in the middle of helping two teams with development work. Two teams, two projects. Torn between two teams and faced with looming deadlines, multitasking was definitely out of the question. I had to focus all my energy into completing one project before the other, because it’s the fastest way to complete both within the time period.

For my main team’s project, I had to come up with a fresh design from scratch, all by myself, and I had to make sure that it’s scalable. Knowing my users, they’re going to add more features so their customer remains satisfied and they remain productive. For the other, I had to do code reviews, code improvements and some documentation.

A one month deadline. Somehow, I managed to come up with a usable, scalable web application. Somehow, I managed to complete the development work for two teams. All in one month.

You know what? After the launch of that web application, my users started asking for more features. I’m sad, because I had to go through intense deadline cycles again. I’m also glad, because it meant the customer was satisfied, and my users found the interface useful. No corrections, just improvements.

Wrapping it up

Shrinking project deadlines forces you to think about the software, from requirement to design to code. Deadlines measured in months are for consultants. Deadlines measured in weeks are for real programmers.


First dance with Elance

Outsourcing is becoming a major consideration for corporations, big and small. Even individuals are outsourcing some of their work. It has also caused concern for many people, who’re afraid of what will happen when their work is outsourced.

I, am a programmer. The company I’m working for does offshoring, which means work is given to other employees, but they are located in another country. I say that’s just a long-winded way of saying you’re outsourcing my work to another person.

So I’ve decided to experience being an outsourcer. The project I had in mind? A custom WordPress theme for this blog. I am totally capable of creating simple graphics, working out HTML/CSS and even going through PHP (which I’m unfamiliar with). I might even enjoy the design process.

However, the whole point of this exercise is not the blog theme, but the experience of handling a project with an outsourcee. I’m lucky in that I’ve prepared documents and work requirement for my offshore colleagues, so I leveraged on that experience. Now to find a freelancer…

There are many web sites I can use, such as Elance, Rent A Coder, Guru and Odesk. First, I need to know if the site can service my WordPress theme project. I spent some time browsing through the web sites, doing searches on “custom wordpress theme” and see what comes up. Using the unscientific method of gut feelings, such as “Do I like how the site works?” and “Do I like the general feel of freelancers at the site?”, I decided to use Elance as my base.

Hereafter I detailed some suggestions and advice for you, after I went through the whole thing.

1. Sign up for an account only
Elance gives you the option of posting your project and signing up for an account all at one go, if you’re a new visitor. DO NOT do both together. I strongly suggest you sign up for a new account first.

If you’re like me, you’ll spend an inordinate amount of time thinking up a user ID, and another chunk of time thinking up a password. Having to figure out how to post a project is going to add to your stress level.

2. Verify your credit card
The moment you login to your brand new spanking account, go verify your credit card. Elance requires you to have a valid and verified credit card, because that’s how you’re going to pay your service providers. The verification process takes 3 to 5 working days, depending on the credit card company and your bank.

What does your bank have to do with it? Elance actually charges you, through your credit card, two small amounts. You are supposed to login to your Elance account, where you’ll enter those two amounts, and thereby complete the verification process. If you don’t do Internet banking, you’ll have to either wait for your credit card bill to arrive or call the bank to ask for the two amounts.

Be at ease, because Elance will credit the two amounts back to you, minus currency conversion loss. I lost a few cents due to the US dollar and Singapore dollar conversion. I’ve decided to accept this level of loss. It’s a one time thing anyway.

The verification takes time, and service providers like to know that payment is assured. A project has a payment icon, featuring “Credit Card Confirmed” and “Elance Billing and Payment Confirmed”. The latter, which means your credit card is verified, is more likely to attract more and better service providers. Which is part of the reason why you should just sign up without posting any project, until your credit card is verified first.

3. Posting your project
There are quite a few options available. Depending on your project, you’ll have to decide which category to post it to. Choose one major category and the sub category. You don’t have to post it to multiple categories, because the service providers will be able to search for new projects. The last thing you want to do as a new buyer of services is to project spam.

3a. Project description
Be specific. Describe your project in simple, clear and unambiguous language. Even if you want ambiguity, state precisely that, as in “The requirement for the image is deliberately ambiguous to encourage your creativity.”

Note that your potential service providers may not speak your language as their main language. Be precise in your requirements. Do not state anything that might possibly be construed as having any meaning other than what you mean. Believe me, it saves time and anguish to do it right the first time.

Your project description will be seen with a shortened version when searched. Make full use of this short version. I think it’s about 240 characters in length, so put your main points in front. Full versions are seen when service providers log in. Some might just glance through projects, looking at only their brief descriptions without logging in. Just my opinion.

3b. Bid period
The default length of bidding is 7 days. I set it to 12 days, since I thought I could spare the time. Wrong move! 7 days is actually quite ideal. Any shorter, and you might fail to get enough good bids. Any longer, and you lose urgency. On hindsight, I should have set the bid period to 8 days. This should give prospective providers a full week, in case they don’t check every day.

Again, on hindsight, I should have posted on a Monday. I posted mine on a Saturday, and I felt I could have given my project a better chance if I had waited two more days. You can only choose the project post day if you signed up without immediately posting your project too. See, point number one is very important…

3c. Escrow
If your project has a justifiable high budget, consider setting it up as an Escrow project. What it means is that you pay Elance first, which holds the payment. Upon completion of project milestones agreed by you and the service provider, Elance will then pay the service provider. Since you are the new kid on the block, service providers are more likely to trust Elance to pay them than to trust you to pay them.

Of course, service providers can bid with an Escrow option. If you then choose them, your project payment will change to payment with Escrow, even if you initially set it to Standard payment.

4. Managing bids
Check out the service providers bidding on your project. Check their portfolio, their Elance history, their web site if any. Most importantly, take note of their payment agreement or timeline. This gives you an idea of how their business agreement will be phrased.

Then send them messages through the Private Messaging Board (PMB) provided by Elance. You are basically conducting interviews. Ask them questions just as if you are hiring them. Hey, you are hiring them. Now that your money is on the line, you should be questioning them.

The PMB records all correspondence between you and the service provider, and is used to settle any disputes or misunderstandings.

5. Be firm with your budget
Don’t have a rubbery budget. The first service provider I chose had a different idea of what they should be paid versus what I was willing to pay, even though I’ve stated my budget when I posted my project. Be careful when a service provider says the bid is there as a placeholder, and the budget can be discussed further in the PMB.

There’s nothing wrong with that. I’m just not ready to dish out tons of cash with a non-existent budget limit. I was willing to pay a bit more, so I negotiated a higher budget and still the service provider was unhappy. In the end, the service provider dropped the bid, and I had to choose another one. This cost me two days of messaging back and forth. Because I had a rubbery budget.

Perhaps I didn’t do enough research checking out the average prices for doing WordPress themes on Elance…

6. Note the time zone
Your service provider is probably from a different time zone than you. Take this into account when you communicate with them. Your service provider has their country listed. Just find out what time it is in their country.

I’m in Singapore, and my chosen provider is in India, so they are about 5 hours behind me. If I send them a message at night, I can expect a reply say 1 or 2 pm the next day in Singapore, assuming they start work at 8 or 9 am.

7. Be clear in your correspondence with service providers
Having clear project descriptions helps reduce correspondence time. Sending clear messages in the PMB helps too. Once, I said the heading was too “bold”. I meant that it looked too obvious, too in-your-face. My service provider took that to mean the font was bold, as in the font was bold. Always say what you mean.

8. Paying your service provider
Surprisingly, payment was easy. My project was posted with the Standard payment option, so I don’t know how the Escrow paying process is like. For the Standard version, all I had to do was enter the amount I want to pay the service provider and click “Submit”.

The business agreement between the service provider and me was half of payment at the start of the project and the rest upon completion.

So far, my experience as an outsourcer isn’t too bad. Elance is actually quite easy to use and navigate. From my experience dealing with my offshore colleagues, I’ve learnt to ignore certain levels of quality in the work. In this case, the payment wasn’t high, so I decided not to badger the service provider for too many changes.

This doesn’t mean you should settle for sub-par quality work! I’m just saying you get what you pay for. For me, this was a learning experience. Besides, I’m probably going to tweak the design further. Doing the changes myself is faster than sending a message to the service provider, have them do it, send it back to you, and it’s still not what you want.