Get More Freelance Clients By Using Face Time & Free Stuff

Business has been great for my little custom software company.  We’re not ready to take over the world or release a product, but things are doing OK.  I’m happy.  And I’ve been pondering the means by which I’ve managed to grow the business and get more freelance clients.  Sometimes I wonder if success in any endeavor just boils down to luck, a happy accident.  But after a talk with a good friend and colleague, I think I understand what has happened.

How does any business get customers?  By advertising?  Nobody pays attention to that anymore.  By clever PR?  Sure, there’s always the odd person who will hire you because he saw that newspaper article about how you donated 100 hours of your time to build a website that takes donations to help cure those poor kids in the oncology ward of the local hospital.  But as I talk to other solo and small businesspeople, an interesting trend reveals itself:  the #1 way small freelancing firms get get more freelance clients is by utilizing the “face time and free stuff” technique.

I can hear you already – “Wha-a-a-a-t?” Just bear with me for a moment.

People like to do business with their friends.  Period.  Finito.  End of story.  Go out and ask 100 prospects if they’d rather do business with SuperMegaJumboCorp or with their poker buddy Bob.  Go ahead, ask them.  I guarantee you that if Bob is even remotely competent at doing what SuperMegaJumboCorp does, 100% of the time, the prospect will choose Bob.  Yes, he could get hit by a bus and take the project to the grave with him.  Yes, he’s only one guy and can only provide so much support.  Yes, he could get hired away.  But Bob will get the business in spite of all this, because he is the prospect’s pal. Being a friend and a known quantity is how Bob can get more freelance clients than you can.

I’ve actually had prospects tell me outright that yes, Bob has royally screwed up our database, and yes, it’s hard on our business sometimes, but we’re not going to fire him because well, we’ve known Bob a long time and he’s just a real good guy.  Competency didn’t even figure into the equation!  What can we learn from that?

When I first moved to the Central Valley, I didn’t know anybody.  Not a soul!  But here I was, with a new home to pay for and a family to feed, one of about a dozen people freshly laid off from a company that came thiiiiiiiiis close to going out of business (but later thrived and got acquired by PeopleFluent).  I had a handful of small clients, but in early 2003 nobody was hiring developers and nobody was taking on custom dev projects.  Obviously, I had to make something happen.  So what was my first move?  Did I take out a Yellow Pages ad?  Did I spend $75 to have a bunch of business cards printed up?  Did I paper the business district with flyers?  Did I go running to the Chamber of Commerce?

Nope.

I sat down with a copy of the Yellow Pages and hand-wrote – yes, hand-wrote, the same way your grandmomma hand-wrote letters to your grandpappy way back when he was serving in the Big Red One – a series of personal letters to the principal of every business in town that appeared to be even remotely technology-related.  But I wasn’t asking for work.  Oh, no.  That would have been sad and small and would have gotten my letter tossed in the trash immediately.  Instead, I introduced myself, briefly summarized my industry experience, and asked about the principal.  I offered to take the principal to lunch and talk shop.  I didn’t approach anyone as a supplicant looking for a favor – I approached them as a peer looking to get to know his fellow tech industry workers.  I forgot all about my predicament and focused on striking up a few new friendships with these interesting new people I was about to meet. In short, I embarked upon a friend-building campaign.

I paid for sushi.  I paid for Tex-Mex.  I paid for American Chain Cuisine.  I visited offices.  I talked, I joked, and I listened – oh, I listened.  People really, really like to talk about themselves.  And in the process of all this, I became friendly with some people.  Friendly enough that eventually a local business owner I’d introduced myself to confided in me that she was unhappy with one of her employees and wanted me to take over his position.  I politely declined that particular bit, but soon ended up doing some other work on contract for her.  Revenue at last!  Pleased, this business owner introduced me to some friends, one of whom I really hit it off with.  I ended up doing a little bit of work with him, too.

Around the same time, two other unrelated local principals took me up on my lunch invitation and I ended up hitting it off with them as well, the result being a little but more work.  Then a sweet lady from a local charity caught wind of my presence in town and invited me to bid on a project.  I took her to coffee, talked about her project and her charity’s mission, and eventually won the bid. This was the start of me beginning to get more freelance clients.

What’s the commonality?

I got face-to-face with these folks.  I got friendly with these folks.  I shared space and time and broke bread with these folks on my own dime before I ever asked anything of them.  In most cases, I never actually asked anything – eventually they just pulled me aside and gave me the “Hey, do you know how to do X?” routine.  But why me?  Why not the 72,566,985 other guys out there with similar qualifications?  Why did I end up getting the business and not them?

Because 72,566,984 of them didn’t bother to reach out, get face-to-face, and hand over a free lunch, that’s why.

When I bid, I’m usually the most expensive bid.  My rates are reportedly higher than most for the local area.  I’m neither handsome nor charming enough to leave people starry-eyed long enough for me to conk them over the head and lift their wallet.  But by golly, I seem to do an alright job of making a new friend over a good meal.  And that appears to be enough to put me in the running for most projects I want to be involved with.  Everyone likes face time – a real conversation with a  real human being.  Everyone also likes free stuff – a real, honest-to-goodness, no-obligation freebie, like lunch at your choice of restaurant or your favorite flavored latte delivered to your office, just to say hello.  And the best part is, everyone can do this to get more freelance clients.

Just take yourself back to the schoolyard for a moment, when you were young and open and not conditioned to fear rejection.  What did you do back then to make a new friend? “Hi, you wanna play with me?” or “Here, want half of my sandwich?” were both perfectly acceptable ways of introducing yourself as a kid – unless the sandwich you were offering contained baloney.  Thankfully, the adult world isn’t THAT different.  Baloney still doesn’t fly, but a simple hello and a lunch invitation can work wonders for making new friends.  And if you take care of getting out into the community and making friends with people, the business will be more likely to come.  Sure, it’s not going to come from every person you meet, nor is every new person you meet going to become a friend.

Even so, you’ll certainly become friendly with many people, have a lot of interesting conversations, and pump a lot of “you” presence into the collective mind of the local marketplace.  Eventually, when there’s enough “you” in the mindspace of the market, the pressure will cause something to pop, just like a closed system that’s been pushed beyond capacity.  And that pop can end up putting dollars in your pocket once you start to get more freelance clients.

Face time.  Free stuff.  Get out in front of people.  Open up.  Make some friends.  Don’t ask for business, just get out there and befriend people – become a known part of the local business community.  Give somebody lunch, or a t-shirt, or a free hour of your time to fix a problem, or shut your yap and listen to someone tell you about himself.

It takes time for this to work.  But for truly small businesses – especially those who are not located in prospect-rich environments – face time and free stuff is a great way to operate. If you’re not having conversations with new people regularly, you may be missing out on a lot of otherwise-hidden opportunities. This alone won’t build a business for you, but it pays to make this habit a part of your overall strategy to get more freelance clients.

The Thrill and Agony of Working From Home

I’ve been running my consulting practice from my home office for about 2.5 years now.  Primarily, I interact with my remote team members via email and IM. After spending the previous 10 years in actual office space, it’s been quite a change. Along the way I’ve learned a few things about myself and my work style in my few years of working from home. Perhaps these things will apply to you too.

These points should apply to both entrepreneurs or freelancers working from home and people who telecommute to work.  Just pick out the items that apply to you and ignore the rest.

If your family is unwilling or unable to respect your work time, you are in deep dip.

For about the first 4 months of my working from home, my wife would pop in to my office for a visit once an hour. She’d pop in to tell me about some interesting fact she just heard on Oprah. She’d pop in to tell me about some cute thing our son did. She’d pop in to tell me who she just talked to on the phone or to tell me about something cool she just read. She didn’t understand why I got so upset about the interruptions. I broke out a copy of Peopleware and explained what it takes to go into a productive zone.  I explained how much time and ground I lost every time I was interrupted.  That didn’t really have the effect I wanted.

Then I showed her my billable reports for the days when I was interrupted and the days when I was left alone.  She understood that.

Now she’s a champ about respecting my office time when I’m working from home. She does a better job of playing defense against my 5-year old son coming to visit me too. In return, I make it a point to take a break in the middle of the day every day to hang out with them for a little while. But those first few months…I was working WAY too hard for my billables.

If you are unable to respect your own work time, you are in deep dip.

Family aside, when working from home everything is a potential distraction. The fridge is ten paces away. So is the cookie jar. And the beer. And the TV. And the PlayStation. And so on. There’s always something that you could be doing instead of working. And some days, that’s a tough obstacle to leap. When you have a regular office, you’re surrounded by work stuff, so at a certain point you just give up and do some work. When working from home, it’s orders of magnitude easier to say “forget this” and go for a swim in the backyard.

Laser-like focus is a must. As for how to get laser-like focus, well…all I can say is you better be doing work you really care about, or at least be doing work that has a payoff you feel passionate about.

Dressing the part is a big help.

I have absolutely noticed a difference in both my demeanor and my productivity when I dress like I’m going to work in a real office. When I roll out of bed and pull on the nearest sweats and T-shirt, it’s not quite the same. Sure, it’s nice to be able to work in sweats and a T-shirt in the privacy of my own home.  But without fail, if I get dressed like I have a real office to go to, I am more professional and more productive.

It might sound silly, the idea of getting dressed “for real” just to work in your third bedroom, but it really does help. There’s an old saying:

“Dress for a dance, and you dance. Dress for playing football, and a game breaks out.”

I believe in that saying completely. In my case, it’s more like “Dress for work, and you’ll work. Dress for lazing about, and you’ll end up lazing about.” Besides, the process of showering, shaving, and dressing is a nice ritual for helping me get into my game-state.  I don’t have a problem with comfortable or even casual dress – I’ve billed plenty of hours wearing jeans and a T-shirt (clean and ironed, of course).  I do have a problem with people being slobs when working from home, which is what “casual dress” usually devolves into.  Dress sharp, feel sharp.

I’m not advocating wearing a suit & tie just to work in your spare bedroom.  This post is being brought to you by Levis and a plaid shirt.  My company isn’t not a formal operation by any means.

Getting OUT of the home office with regularity is a must.

It is easy to shut yourself away and go overboard on the billables. It is also easy to slip into a state of deep depression and apathy while doing so. Some of my highest-grossing weeks while working from home have also been the most agonizing.

I make it a point to go to lunch with colleagues a couple times per week.  I visit clients a couple times per week (even when I technically could deal with them via Skype or some such).  I take a break to play with my son daily. I’m a relatively social guy, and I found that being away from the interplay of an office environment was difficult for me.  Getting out regularly was a non-negotiable “must have” for my work schedule. Even the most introverted of the introverted will stagnate and grind to an intellectual and emotional halt, being shut up in a home office all day every day.  As distracting as it sounds, even a few hours working from your local coffee shop can go a long way toward combatting feelings of isolation.

Even if you’re not a people person, regular changes of venue and human contact will keep your engine at a higher idle than pulling a Kaczynski will. And for the love of all that’s holy, open the damn window and breathe some fresh air!

Getting IN to the regular office with regularity is a must, too (if you have a regular office).

This one is for you remote workers who have an office you could go visit – not only can you begin to feel detached when working from home, but your co-workers can begin to feel detached from you.  This is not good and can result in people forgetting to tell you about meetings, it can leave you out of promotions due to lack of visibility, and in the worst case scenario it can create resentment amongst your co-workers who work in the office full time.  So pop into the office once a week, even if it’s only for an hour.  The social aspects of the workplace are very important to your career and your mental health.

At my last job, I was one of the people who ended up working at the satellite office because it was closer to where I lived than the corporate HQ was.  What a mistake that was!  It didn’t take very long for poor communications to render everyone in the satellite office out of the loop.  The additional overhead of fighting to make sure people remembered to include the satellite folks in things that pertained to them added an un-needed burden to our daily workloads.  Now, this was 2 professional offices having such difficulty.  Can you imagine how the issue can be compounded when working from home?

Don’t skimp on tools!

Just because you are working from home does not mean that you can get by with an old laptop on a folding card table, sitting in a chair you stole from the dining room.  Crawl off the dime and make sure you have dedicated space – or, at the very least, comfortable, quiet space that you can have reasonable control of during work hours.  Make sure you have a development-class machine (if you are a developer), and a printer – hey, sometimes you really can’t avoid printing some things out.  Get any non-work-related stuff out of the room if you can; it will only serve to distract.  When I first began my consulting career, I was working from a $99 computer hutch from Target, stuffed in the corner of the dining area of our 700-square foot apartment.  If that’s all you have to work with, that’s one thing.  But you need to be looking to set up a real workspace as soon as possible.

Please don’t take this as an excuse to go splurge on an Aeron chair and the highest-end machine you can find.  Your gear must be appropriate, not splashy – splashy will drive you into the poorhouse.

Set expectations for yourself.

Have regular work hours.  Take regular lunch breaks.  Set performance benchmarks for yourself, and stick to them.  If you need to, publicly commit to some goals in order to motivate yourself.  And when you’ve hit your goals for the day or the week, stop and re-evaluate.  Can you knock off for the day?  Are you ahead or behind?  Working from home means working from home, not “hanging out in front of the home computer,” so treat it like you would treat office-based work, and adhere to good performance standards.

Be thankful for working from home.

You don’t “have” to work from home, you get to work from home – never forget that.

Necessary Rudeness and the Effective Use of Your Time

Pop quiz, hotshot – you have a task of known importance in hand. You have an interruption (phone call, eMail, fax, someone hovering in your doorway) ofunknown importance coming in. What do you do? If you’re truly interested in being effective, you turn off your ringer, close your office door, and shut down your eMail client until you’re done with your task.

Here’s a scenario – tell me if it sounds familiar. You’re diligently trying to maintain your focus on a critical task, only to hear your phone ring. You answer the phone, provide the answer to a co-worker’s question (a questions could have been answered by Googling), then return to your task. Blinking your eyes twice, you get yourself back in the groove and continue. A few minutes later, another phone call with another question pertaining to an issue of low urgency. Again, you breathe deeply and slog onward with your task…until another phone call comes in. And an email with the little red flag indicating that the message is "urgent" pops up in your Inbox, so you start reading it while you’re on the phone. Then you notice Bob from Accounting hovering in your doorway, asking if you "have a minute" as you try to type an eMail reply while finishing up your phone call. Then a phone call comes in on your other line before you are done with the call you’re on. Wait, what was I trying to do again?

Let’s look at the culprits here:

  1. The Phone. The telephone is, without a doubt, the #1 most ruthless time-waster in business life today. And not only do we have them on our desks, we strap phones to our belts and carry them with us all day! The specific problem with the phone is that while you know exactly how important your current task is, you have no idea if the next phone call you take will be a trivial question or a bona-fide emergency. Here’s a hint: true emergencies are few and far between. To paraphrase Dan Kennedy, never interrupt a task of known importance for a potential task of unknown importance.
  2. eMail. Ah, eMail. I love eMail. But even eMail has a dark side – when someone sends you an eMail in an office environment, they know that you receive it more or less instantly. This often leads people to expect a response more or less instantly. Every office has at least one person who follows up every eMail with a phone call “just to make sure you got my eMail”. If you are going to make effective use of your time during important tasks, you must not allow anyone to pressure you into providing a reply according to any timeline other than your own. Shut down your eMail client when you’re working on important tasks. Fire it up when you’re not. It’s simple, but so few people do it.
  3. The Person Hovering in Your Doorway. If you are in the midst of working on a truly important task, your office door should be closed. If you do not have an office with a door that closes, it is acceptable to simply not acknowledge a person who hovers in your doorway. Let the person announce himself or herself. Then you have a few options. I used to offer “5 minutes now or 30 minutes by appointment later”. I found that almost everyone prefers to take the second option, which is good. It allows you to continue your task, and it gives the other person a chance to gather some info and bring you a well thought-out issue to discuss, rather than some extemporaneous doorway rambling. It also sends a message to other would-be time-wasters that they need to have their game in order before approaching you when you’re in the middle of an important task.

 

I will go so far as to say that if you are not 100% unavailable for at least 2 hours a day, you probably aren’t getting much done that’s of any importance.

Now, despite the title of this post, I do not advocate being rude to people; quite the opposite. The term “necessary rudeness” is meant to acknowledge the fact that if you make yourself unavailable while working on critical items, some people will perceive you as rude, and this is OK. Most people – the ones who are themselves effective – will understand. Those that do not understand are likely to be the same people who don’t accomplish much. Open-door policies and their ilk sound fantastic in corporate seminars and on the dust jackets of business books written by guys who’ve never really run businesses, but in the real world being too available rarely does anything but allow people to take advantage of you. Ours is such a culture of accommodation that we often forget that getting things done is what keeps us prosperous. During times of critical work, it is acceptable to demand that people respect your time. During times of critical work, it is acceptable to demand that people call ahead rather than hovering in your doorway, trying to interrupt your task. During times of critical work, it is acceptable to refrain from answering faxes and eMails immediately – that the message is delivered instantly does not entitle the sender to an instant response.

I can almost hear all of you lone-wolf, “slide pizza under the door until I tell you I’m done coding” types rejoicing as you read this, ready to print copies out and tack them up in your cubicle in an attempt to justify your teamwork-avoidant behaviors at work. Don’t worry, I’m about to burst your bubble. 😛

The flip side of all this is that you must be able to determine which tasks can afford no interruptions, and which ones can. If you are unable to make this determination you will either fail to get the truly important tasks done, or you will fail to provide sufficient value to your colleagues and customers to keep yourself employed for very long. Nobody works in a vacuum, and it is critical to strike the right balance between single-minded focus on critical tasks vs. availability to support your team and customers. When you know that your task is of the highest importance, by all means turn off your ringer, shut down your eMail client and close your office door until you are done. But be surgical about it – when you switch to working on relatively routine tasks, make yourself available. And remember to extend as much respect for the time of your colleagues and customers as you demand they show for yours.

It is a difficult balance to find, and being able to find it is one of the marks of a true professional. Finding this balance it will make you more productive and much less frustrated.

The 5 Pitfalls of Estimating a Software Project

Updated June 27, 2016

People often ask me why estimating a software project is so fraught, why software projects are chronically late and/or over budget. Naturally, I always take that question as an opportunity to brag about my current level of skill at estimating projects.

It took until I was 6 years into my career to learn the art of estimating a software project so that it was acceptably accurate.  Along the way I discovered a set of behaviors that always lead to blown estimates and broken budgets. Avoiding these pitfalls will put any organization on the road to more accurately estimating a software project.  This will lead to happier clients and profitable projects.

Before we get started on the list, I want to make one thing clear:

Estimating a software project well is hard.

Know-it-all articles that tell you “just do this and everything will work out!” annoy me, and they probably annoy you, too.  Prefacing any kind of advice-giving with “just” is reductive and unhelpful.  Understand that what I’m offering you here are my particular experiences, offered in the spirit of “maybe try this?” rather than “just do this!” – because I acknowledge that what we’re trying to do when we develop estimates is hard.  In other words, these 5 pitfalls have been true for me and for the teams I’ve worked on, and I suspect they’ll be true for you too.  Ultimately, it’s up to you to try to fit them to your experiences as a developer and see if they work for you.

All that said, here are the 5 behaviors that I’ve seen consistently contribute to bad estimates:

1) Allowing non-technical staffers to give estimates.

You think I’m about to launch into a typical software developer’s tirade about how talent-less the people on the “business side” of the house are.  I’m not a typical software developer, though.  I value the business side of the house as much as I do the engineering side.  That said, a non-technical employee estimating a software project makes no sense.  You wouldn’t allow a software engineer to commit the company to a marketing plan of his own design, would you?  Of course not. Despite this, non-technical staffers giving technical estimates happens all the time.

To be clear – NOBODY should be estimating a software project except for the person who is actually going to perform the work.

Specialize or Die

Remember Adam Smith? He wrote an little book entitled The Wealth of Nations, maybe you’ve heard of it. In this book, he argued for the specialization of labor, using a pin factory of the day as an example:

…where each of a dozen workers engaged in only one part of the process of manufacture, so that together they produced far more pins than if each worker produced whole pins; the price of pins then fell, and more pins could be used by more people.

When businesses violate the principle of specialization of labor with regard to creating their product, trouble is soon to follow. It is far better to allow the specialists to do work that falls within their specialty than it is to placate a client by giving a totally fictional estimate.  Estimating a software project is specialized work, and should be treated that way.

Be Graceful Under Pressure

Because of the Iceberg Effect, a salesperson out in the field (assuming you work for an org large enough to have salespeople out in the field), who is under great pressure to close deals, is likely to think “Well, that’s just a couple of screens and buttons, it shouldn’t take very long“.  So the salesperson gives the client a number, and the number may as well be 1 hour or 1 million hours, because it cannot possibly have any connection to reality unless it comes from the person who has to build the thing being estimated.

Let your salespeople sell, your marketers market, your executives execute, and your developers develop…estimates, that is.  If you happen to be a small shop where people wear multiple hats, that’s just fine so long as the person who has to build it is also the person providing the estimate.

2) Being afraid to look in the mirror.

Most development shops I’ve interacted with do not do any “post-mortem” reviews at the end of an over-budget, past-due project (or even a successful project, for that matter). Therefore, they never learn what went wrong, never disseminate information that can other staffers avoid what happened, and thus promptly repeat the exact same mistakes. This causes the next project to be over-budget and past-due, and that project doesn’t get reviewed either, so the same mistakes are made on the project after that, and so on. Even seasoned developers can fall into this trap.

Don’t be afraid to take a look in the mirror and ask “what did I do wrong?” – this applies to everyday life as much as it does to software development. Always analyze your projects for both mistakes to correct and best practices to carry forward. Failure to do so is the equivalent of flying a 747 without visibility or instrumentation through the Himalayas; way too much risk for most client’s tastes (and checkbook). And again, if you’re a small shop without much in the way of formal review processes, take notes as you go; all you have to do is document the things that went poorly, and the reasons why.  When estimating a software project, having this kind of info at your disposal will help you create a better, more accurate estimate of the work to be done.

3) Underestimating design time and debugging time.

Many software developers are not in tune with The Business, they are in tune with The Thing – that is, they focus tightly on the act of construction and sometimes miss the other, equally vital, things that go into a successful project. In my experience, design is one of the most commonly underestimated things.  Yes, I just said that only the person who builds the thing can estimate the thing, and that counts for design work, too.  This is why it’s important for design and dev to work together when estimating a software project, rather than being silo’d away from each other or, even worse, being actively at odds with one another.  I’ve seen it happen in some dysfunctional orgs, and it is as ugly as it is counter-productive.

Figuring out how to build something takes more time than it took to figure out what to build. On the other end of things, debugging and refining and polishing up the code takes more time than anyone ever anticipates – in fact, in all my years in this business, I have never seen an accurate debugging estimate when estimating a software project. Never. Not once – not even my own!

Budgeting 50% of total development time for debugging is absolutely reasonable, if not necessary. Any developer who fails to accept this is still in the Age of Unlimited Wisdom (more on that later).

4) Inadequate/unclear requirements.

Before estimating a software project, you have to do some requirements-gathering.  There are many ways to do this, but gathering requirements at all is difficult. Gathering requirements well is rare, and gathering requirements in the correct quantity and level of detail before asking a developer to start work is just this side of miraculous. I would estimate that 90% of my pre-consultancy projects suffered from inadequate requirements.

Developer vs Analyst

Every developer has war stories about dealing with unbelievably poorly-written specs.  Every developer has war stories about requirements with more holes in it than Swiss Cheese.  Most developers like to blame the Business Analyst for this.  To be fair, most Business Analysts have war stories about OCD-affected developers.  Stories abound about devs who suffer from analysis paralysis without impossibly perfect specs.  That’s just the nature of the beast sometimes.

It is tempting to rush the requirements gathering process. It is tempting to just assume the answer to questions that are not addressed in the requirements. Mapping a client’s business process is hard, and very few people want to do it – those that actually relish the task are of a rare and strange breed. Uncovering and documenting every relevant hidden nuance of how a company operates is difficult.  This is why estimating a software project is difficult – it encompasses other things that are difficult.

Satisfying the Stakeholders

It’s downright hard to ensure that the high-level details are an accurate representation of what needs to be built. Inaccuracies will creep in if you let them.  This is doubly true if you are in a rush.

By slowing down – just a little bit – and making sure that the requirements gathering is done right (as in, not too detailed and not too vague) before construction begins, everyone will end up happier and the project is infinitely more likely to be a success.

5) Taking too large a bite from the apple at once.

I cannot count the number of times I’ve watched in horror as a Project Manager approached a junior programmer, asking “How long will it take to do X?”, only to hear “Not very long – maybe Y hours” in response from the young know-nothing.  My horror, you’ll note, stems not from the fact that the junior developer was a know-nothing (we all start someplace), but rather from the fact that the Project Manager should know better than to put a junior dev on the spot for something like that.  It’s bad for estimating a software project, it’s bad for whatever downstream politics the project is likely to run afoul of, and it’s exploitative of the junior developer.

Finding the Right Side of the Line

Regardless of what feature X might be, there’s only one correct answer to “how long will it take?”.  That answer is, “Let me see the requirements”. If you don’t have requirements, you need to get some, even if they’re super-lightweight. Even then, you can’t commit to anything better than a “plus or minus 50%” estimate until everyone has agreed that the requirements are on the right side of the 80/20 rules in terms of accuracy. Even then you cannot start estimating a software project until you break down those requirements down into bite-sized chunks.

Making Your Project Chunky

That, my friends is the secret weapon of estimating a software project – the more atomic you can make the requirements, the more accurate your resulting estimate can be.  This is why I love user stories – they’re super atomic (maybe too atomic for estimation purposes, but we can argue about that another day).  That said, the truth is that most people are lazy. Analyzing requirements is almost as difficult as gathering them, and again – very few people want to do it. Those that do will consistently deliver more successful projects than those who do not.

I’m not saying anything here that people in the industry don’t already know. But I am saying a lot of things that people in the industry don’t do. I wish that were not the case, but I can only control my own projects.

 

Photo Credit: Luis Fernández García (license)