Archive for December, 2009

Developing Software when you are Technically Challenged

Tuesday, December 29th, 2009

Recently I read a blog post from one of the RSS feeds I subscribe to. The author was looking to create an iPhone app to promote his business. He researched a few options – one quoted him $20-$30,000, another $8-10,000 and he also came across a website offering to create one for $499.

From reading his blog, I assume he has little-to-no software development experience. This is a scary position to be in. How do you choose between widely varied options? What could the difference possibly be if the product is the same?

To the layperson, the obvious choice is the $499 option. The logic for choosing this option is sound – he wants an iPhone app; these companies all make iPhone apps; therefore the cheapest one will be the best option for me.

Unfortunately, it is not so simple with software.

After being involved in software development for the past five years I’ve learned that out of the full cost of developing software, only a part of it comes from the initial creation. To rephrase, much of the cost of developing software comes after the software has been created.

How can this be?

Many non-technical people put in charge of software projects do not really know what they want. Usually, they have a vague idea but as the product is developed, more ideas will come. These new ideas require changes to the product. If you’re not familiar with the way software is developed, you may think this is simply moving around text as you would with a text editor like Microsoft Word. Nothing could be further from the truth. In practice, software development is a type of architecture.

Let’s say you want to build a house. You have a general idea of what kind of house you want so you tell the designer you want a house with a certain number of rooms and so on. He designs the plans and begins building the house. Part-way through, you walk through the half-completed house and realise you would like the kitchen to be bigger and the bedroom to be moved to a different location. Is it going to be easy to make this change? No. Although software is not quite as inflexible to dynamic changes, it still requires the foundation to change which can be major.

Now a good software architect will try to design the software to allow easy adjustments along the way. However, these architects usually learn how to do this through years of experience. This means you won’t find them at the cheap end of the pricing spectrum.

So what is the $499 option offering? After taking a look at their website, they are offering a simple template option to create an iPhone app. This means you are locked into their system. If you want to add changes later, it is going to cost a lot.

If you are really, absolutely, positively sure that you will not want changes, then this option is a good deal. In my experience, this is rarely the case. Many clients come up with new ideas only after seeing the product in action.

If you go with the $499 option and you want custom changes, you will probably have to hire another firm as I doubt this company is in the custom-development business. That means that the new firm will have to invest time learning the system and implementing the changes. I’ve even worked on projects where it has been cheaper to throw away the original work and start over from scratch. This means the initial cost for developing the software was a complete waste. Either the company doing the work did not fully understand the client’s requirements or the client did not know what they wanted well enough to explain it.

Probably the worst thing you can do as a non-technical person starting a software project is to just go with the cheapest option. The initial development cost can be only a small part of the final cost.

Detail what you are looking to accomplish with the software. Spend time communicating with the vendor what your end goal is. Make sure any potential vendor has clear guidelines what they will support after development and make sure they are asking lots of questions to fully understand your requirements. Many software projects go awry not because of technical challenges, but because of communication challenges. Good communication will help your software project immensely.

Sneaky Pricing

Thursday, December 17th, 2009

Pricing is one of the hardest things to get right for your business. I heard a story the other day of a business that implemented random pricing to pick the right one. On their pricing page, they had the system choose at random from a pre-determined list of prices. These price points ranged from $5 all the way up to $200. Keep in mind, this was all for the same product. After analysing the data, they decided to settle around $20.

It was a very interesting way of using technology to your advantage. Marketers always want to hit that price point where price x customers will provide the most revenue. This company was able to leverage technology to help them do that. It’s just another way in which the web can help your business in ways that can’t be done offline.

This is a post about another pricing strategy.

Recently I signed up for Safari Books Online. On their subscription page, they offer two choices – the unlimited Library at $42.99/month or the limited access bookshelf at $22.99/month.

Safari Books Online - Subscribe

I can read up to 10 books per month for $22.99. Being this is about half the price of a technical book, I thought it was a good deal and signed up.

Today I received an email with special holiday pricing. Sign up by the end of December and I could receive access to the Full Library for just $29.99 per month. Since it was just a little more, I checked it out to see if it was worth it.

When I came to the Change Subscription page, this is what I saw:

Safari Books Online - Change Subscription

Notice anything different?

Now, they have a third option – the 5-slot Bookshelf for only $9.99/month. I imagine this option is for people who are considering cancelling their account. It is a way for them to keep their business by offering a reduced price for reduced services.

In my case though, their plan backfired. I was happily paying $22.99/month but since 5 books a month is plenty for me, I reduced my subscription.

In summary: Because of a marketing effort to get me to upgrade, I actually downgraded my account. I suppose the lesson is to be careful with pricing. It’s good to make an effort to keep customers but you don’t want happy customers paying less than they would have otherwise.

You, Inc.

Monday, December 14th, 2009

Are you an employee who dreams of starting your own business? You have an idea that excites you when thinking about it. You visualise the finished product coming to life. You imagine all the money rolling in from sales. That is great but it could be months or years down the road. Do you really need to wait that long to start a business?

No. You already run a business, and that business is You, Inc.

No matter if you are an employee or employer, you are operating a business. Each month you have revenue (income) and expenses. You have a balance sheet (whether you realise it or not). You have at least one customer. Sounds like a business.

One of the best realisations I have had in my career is that I am not an employee, I am a business of one. As an employee, I choose to provide my services to one client. As a business, it is quite risky to have just one client. However, if you choose to do so, you need to be aware of the pros and cons.

Thinking as owner of You, Inc. puts me in a different mindset than if I consider myself an employee. As an employee, the company is in control of the work I do. As a business owner, I am in control. It helps me question things like: Is this the kind of business I want to be in? Am I providing good value? Will my clients want to work with me again?

When you start thinking of yourself as You, Inc., different questions start to come up? Am I running my business well? Am I investing in the future of my business? How can I grow? Is it smart having only one client? What are the goals for my business?

It is important to run your business well because how you run You, Inc. today is the way you will run a “traditional” business. If you do not communicate well with your client now, then you will not communicate well with clients in the future. If you are running a loss every month, you will do the same with your business. Does You, Inc. operate with little or no debt? It is important to get You, Inc. running smoothly before moving onto bigger things otherwise you won’t be able to handle them.

A year after winning the lottery, most winners say they wish they had never won. Generally, life only lets you move on to the next step when you are ready. If you jump too far ahead, such as in the case of lottery winners, it usually causes too much hardship.

To run You, Inc. successfully, copy what successful businesses do. Just do it on a lower scale.

Good businesses spend money on sales and marketing.
Good businesses do not rest on their past. They are constantly investing in development of new products (skills).
Good businesses demonstrate values and try their best to live up to them.
Good businesses reward those who help them.
Good businesses treat others fairly and courteously.

To shift your mindset, spend a little time each day thinking about your business. If you were in control, what are some things you would do differently? Then realise that you are in control.

How to Torture Programmers

Monday, December 7th, 2009

Do you have a programmer in your life that drives you up the wall? Would you like to be rid of him forever? You can! Just follow these five simple steps and your programmer will run crying for the hills.

1) Put him in an open office

Remove as many barriers to communication as possible. Put the most talkative person – the person who can’t keep quiet for more than five minutes – as close as possible. It’s best if you have many non-programmers within earshot so they can chatter about topics of non-interest to the programmer.

Microsoft did a study that showed that for each interruption, it takes a programmer at least 15 minutes to get back into the focus they were in before being interrupted. If you have everyone in an open office, there will be more interruptions and chances for torture.

2) Lockdown his machine

Don’t let him pick the tools he wants to do his job. After all, security is paramount and programmers can’t be trusted. Instead, give him the tools that you choose. Preferably pick ones that companies with a large sales staff directly sold to you. Only let him use one browser – and that browser is IE 6.

When you hire a mechanic to fix your car, he would go nuts if you told him he could only use one wrench. The same is true of programmers. Limited tools means more frustration!

3) Timely Interruptions

Programmers generally work in 45 minute blocks. The first 15 minutes is gathering information, identifying the problem and coming up with a plan to solve it. The next 15 minutes is trying different methods and learning about which ones work. The final 15 minutes is putting the learning to use, figuring out the solution and implementing it.

If you want to torture programmers, you need to time your interruptions. Interrupt too frequently and he will never start work. Interrupt too late and he will have accomplished his task already. You want to hit that sweet spot around 25-30 minutes. This will break his state and cause him to lose much of the learning he has acquired to solve his task. Do this at strategic points throughout the day and he will leave feeling he has accomplished nothing.

When you interrupt, do it for some mundane reason. The more pointless and non-urgent the better. Also, be sure not to ask if he’s busy. You don’t want him to have the opportunity to put your interruption on hold.

4) Provide Pointless Work

Or, better yet, no work at all. Force the programmer to still come to the office and sit there all day. He can surf the Internet but isn’t allowed to work on anything challenging or useful. This might be fine for a couple days, especially if he has been overworked, so you may need to give this plan some time. After a few weeks, the programmer will be dreading the morning when he has to go to work and not be productive.

5) Shoddy Equipment

If the psychological torture isn’t good enough, it’s time to turn physical. Buy the cheapest equipment you can. Make sure his chair has as little adjustments as possible. Even better, have him sit on a stool. Gravity will do the work for you and strain will start to cause problems with the programmer’s spine, shoulders and arms. He will start developing back problems causing him pain for a long period of time.

Your company does not need to put up with happy and productive programmers anymore! Just implement these 5 simple steps and you will have broken their spirits. Productivity will cease and morale will plummet. Work will soon be torturous for programmers just like it is for you.

Read Books, Not Blogs

Thursday, December 3rd, 2009

“Spend 15 minutes per day reading about your craft and within 5 years you will be in the top 5% of your industry.”

I read this quote a couple years ago and have tried to live by it since to see if it is accurate.  I wouldn’t consider myself in the top 5% so it hasn’t worked yet.  I keep doing it though because I see why it can work.  To be in the top 5%, you have to do things only the top 5% do.  The top programmers continually learn new and better ways of programming and if you do that, then one day you will be among them.

What does this have to do with blogs?

It is tempting to go through RSS feeds and think you have improved your knowledge.  When you think about what you learn by reading blogs, have you really learned that much?  Blogs are great but there is a major problem with relying on them for learning.  How much time does it take for an average blogger to write up a blog post?  A couple hours?  Maybe more if they aim for higher quality.  Compare that with books.  Authors spend months and months writing the content for a single book.  Books go into much more depth than even the best blogger could provide. When choosing sources to learn from, pick the ones that have had the most effort and thought put in. Books > articles > blog posts > comments

A programmers job is on getting things done and getting things to work.  When you can reliably get things working with little effort, complacency can begin to sink in.  You start thinking that because you always get things to work, you know everything.  This is dangerous. It’s a good reason to read books to keep you humble.

Whenever I’m reading a technical book, I’ll always find better ways of doing things. It could be simple like learning a new function or bigger such as design methods. This keeps me from wrongfully thinking I know everything. If I can still learn new things, I am far from being an expert.

Can you really accomplish much in 15 minutes?

You would be surprised how 15 minutes per day adds up.  The first few days seem like nothing. After a week or two you realise how much you have picked up. 15 minutes doesn’t allow for excuses. No matter how busy anyone can find 15 minutes each day. This can be applied in other areas as well.  If you have a business idea but think you don’t have enough time, start doing it for 15 minutes per day.  You will soon start to see major progress.

But you say, “I don’t want to buy technical books. They will be out of date in 2 months and will just collect dust on my shelf.”

Luckily the Internet has solved that problem. I recently signed up for Safari Online and couldn’t be more pleased. There are thousands of technical titles to choose from for only $23 per month. Considering that just one technical book costs double that, it is an excellent deal. I can read as many books as I have time for and don’t need them cluttering up my desk afterwards.

There is no excuse not to develop your skills a little each day. Time and cost are not issues. Do yourself a favour. Read for 15 minutes each day.

——-

Link to Safari Books Online