The art of staying on track

One of the most challenging things of trying to start something is to continually motivate yourself and stay on track. All people go through ups but also downs - points where their motivation is at its lowest. That's the time to take action. The longer you wait, the more difficult it is to make a come back.

The 'tenapes' project is a continuous learning experiment for me in the art of staying on track. Here's a list of six important things I have learnt:

1. Get into a simple everyday routine

It's simply not working trying to work whenever you have time. It is much better to set some time aside for your project. Try to wake up one hour earlier every day or go to bed one hour later and spend that time working on your project. One hour it's not enough, but the routine of it will force you to get into the mindset of "delivering" every day. A very powerful thing for staying on track.

2. Bridge the gap in small steps

One of the biggest problems in software engineering in general and in building something on your own is that people don't know how to bridge the gap between where they are and where they want to get. Usually the objectives are expressed in generic or abstract terms and people only realize that when they have to get them done. The key here is to build a mini roadmap of how to get from 'now' to 'shipping date'. Ask yourself the question ... What can I do next? Or, for a top-down approach ... decompose your abstract goals into very refined tasks that you can do next.

3. Stop reading and DO IT

In the information age, we're constantly bombarded with tons of information from all directions. It's so easy to get carried away and read blogs, watch clips on youtube or try to find the latest hype in the whole it will all give you a bit of competitive edge. The biggest challenge is to realize that your time is finite and all the time spent doing these things is time spent away from DOING. Away from building what you're supposed to be building.

4. Reinforce your vision every day

Guy Kawasaki in his book "The art of the start" used a very appropriate analogy between business/development attitudes and microscopes vs. telescopes. When you're DOING, you're working with the microscope. That can be tiring and it's easy to lose motivation and confidence in your own project, especially when you bump into problems. That's when you have to use the telescope, look at the bigger picture, think about what you're doing and why, think about the big vision that's motivating you. Once your energy levels are replenished, you can go back in front of the microscope.

5. Don't give up unless it's time to give up

Never give up for the wrong reason. The wrong reason is always lack of motivation, procrastination, not doing what you're supposed to or finding it much harder than you'd thought it would be. These are problems and there are problems in everything ... don't give up just because it's not a walk in the park.

However, giving up can happen for the good reasons. You might discover that you jumped into an idea before doing the proper market research and suddenly you discover people that do what you do but better. Then it's time to ask yourself ... how am I different from these people? If you can't find a satisfactory answer, give up and put your energy into something more useful.

6. Learn from mistakes
It's useful to write your past mistakes and/or conclusions on a paper. Externalizing the information makes you more aware of it. Think how these mistakes and conclusions apply to your current situation. Are you repeating them? Maybe in a different form but same root cause?

A moment of honesty with yourself can work wonders.

Friday, August 24, 2007 6:10:48 PM (GMT Daylight Time, UTC+01:00)#  
 

Outsourcing on rentacoder

Outsourcing is a big topic and rentacoder.com is an established company already taking advantage of the trend to outsource projects or parts of projects. They cater for the small to medium businesses. I have used rentacoder twice so far, for two small sub-projects and I have decided to write in my blog about it.

There is a certain attraction towards outsourcing. The very idea of getting some help from someone else and shipping my product earlier than planned is very attractive. In every project there are parts that are tedious, not very attractive or require a lot of time but they must be done. These are the parts that it is so easy to convince yourself that you'd be better off outsourcing them to someone else.

At the same time there's an inherent fear that comes with outsourcing and losing control over certain areas of your code. While the attraction is obvious, here is a list of my three main fears when it comes to outsourcing.

1. Quality

I'm not sure how good the result will be and while I can set some clear goals for the project, I definitely need to check that the goals have been met. That means writing extensive acceptance tests, test plans and performing extensive manual testing. Again, I could outsource this task too, but then we'd be going recursive.

Quality is not only restricted to the functional aspect. It is also the quality of the source code, how maintainable it is, how extensible it is, etc.

2. Detailed specs

Outsourcing forces you to write very detailed specs. You have to cover even the most obscure corner cases, otherwise you might get back a lemon. If you want control over HOW not just WHAT gets delivered, then you will need to write design/architectural specs in addition to functional specs. You might even have to write code templates.

The risk here are obvious:

      a. Provide too little and they might come back with too little or too badly designed/implemented (funnily enough, it might be exactly what you've asked for)

      b. Provide too much and it will take you more to write specs than it will take you to do the work yourself

The positive side is that writing specs forces you to think about use cases, even obscure ones. You might discover flaws in your thinking and in your assumptions.

3. Source code leakage

Giving away your source code is always risky. You can sign NDAs as much as you want, but in a global world, you soon find out that you can't enforce NDAs easily, especially if you work with developers located in places like India or Russia.

The nightmare scenario is to wake up one day and find out a clone of your software, doing exactly the same thing, sold at a fraction of what you're selling it.

The solution here is to break the project into mini tasks and hand them to different developers and never outsource the core of your software. Wednesday, August 08, 2007 5:21:47 PM (GMT Daylight Time, UTC+01:00)#  
 

Why do small startups write blogs before having a product to sell?

I think answering this question involves a lot of market research that I cannot afford both in terms of time and money. So I'll answer it from a very personal perspective. So let me rephrase the question.

Why do I write a blog before having a product to sell?

Well, here's how I convince myself to write entries into my blog:

1. It's good because you will have a 'mature' domain name. Search engines usually rank websites based on how 'mature' they are, among other things. That means ... how long they've been around for. Having something online, even if it's just your pre-shipping blah-blah-blah, it's good for enough for bots and search engines.

2. It's good to build up content that search engines can index and start ranking your website. Content takes time to build up. The sooner you start, the better.

3. It's good if you manage to grab attention or hype up your product before it is launched. Making your potential customers interested is great since that means potential sales from DAY 1. It also means you might be able to find beta testers more easily. But generating buzz is no easy thing to do. Blogs are no guaranteed recipes for success and if you don't know how to use they can have a dark side.

4. It's good to reinforce your vision and share your vision with the world, even if you only do it gradually.
It can be a tool to re-motivate yourself, primarily by getting back in touch with your vision behind the product, project and ultimately the main reason for writing the blog.

5. It's learning exercise.
The main reader of the blog is the writer herself. Writing can be a good tool to find out what you know and what you don't know, what you can and want to share with others and what you can't or don't want to share with others. It is a good exercise to force you to think about the dusty corners of your
endeavour.

Friday, July 20, 2007 9:44:34 PM (GMT Daylight Time, UTC+01:00)#  
 

Ten things about me

1. I'm a software engineer with a very technical background

2. I'm interested in the business side as well

3. I'm trying to combine 1 and 2 in my tenapes project

4. I'm in full time employment at the moment

5. Because of 4. I develop the tenapes project in my spare time

6. Because of 5. the tenapes project is quite late

7. I will be using my product myself - which is a definite plus

8. I'm struggling with this blog and trying to find interesting things to write without insulting the intelligence of my readers and without falling behind too much

9. Sometimes when I fall behind too much with my blog, I pre-date the entries to make it look like I'm not falling behind (Uh, that's a dirty trick!)

10. Points 8. and 9. work for now because not many people read my blog ... just this guy googlebot and some of his friends (sad I know!)

Wednesday, July 04, 2007 9:36:07 PM (GMT Daylight Time, UTC+01:00)#  
 

Five things about my product

1. It is a niche product

2. It is a specialized tool mostly for developers

3. It runs on Windows

4. It is written using C++, VC++ 2005 and wxWindows

5. It is still under development, so I will share more about it later on

Friday, June 29, 2007 9:34:15 PM (GMT Daylight Time, UTC+01:00)#  
 

Why Ten Apes?

If you are wondering why I have chosen "tenapes.com" for the domain name, this blog entry hopes to clarify that. Let me first dismiss some possible scenarios that might cross your mind:

 

1. I will not have anything to do with apes - selling, protecting, saving (not that it's not a brilliant idea!), feed or start an online zoo

2. I do not consider myself of my customers to be big, ugly, clumsy (ape - noun : 4. Informal. a big, ugly, clumsy person. Source: www.dictionary.com)

3. 10 is not my favorite number, although it sounds kind of sexy in "10 million dollars profit"

 

So what is going on then? To better understand my choice, I need to present you what my requirements were for defining a "good" domain name.

 

1. A short name

2. Most short .com names are already taken, so please, something that makes sense (that disqualifies zxppewmfwuh.com and the like)

3. I need a domain name that is memorable, a word that sticks - again the challenge is to find something that sticks and it is not taken yet

4. It is not important to be connected to my domain of activity. Simply from a branding perspective 1-3 (especially 3) are much more important that being connected to a particular area.

 

During my search for a domain name that satisfies all the above, I realized that it is difficult to find common names or combinations of popular names. Speculators snatched most of them, with a small minority of them being active domains with some useful web content.

 

However, I discovered that if you take a random popular word and add a number before it, the chances of finding that domain name available are highly increased.

So I took the word "apes", a short word, easily satisfying 1-3, added the number "ten", which is short enough and got "tenapes.com". I consider it quite memorable. I don't expect people to go ape over it, I only expect them to remember it and be able to simply type it.

Wednesday, April 04, 2007 8:23:12 PM (GMT Daylight Time, UTC+01:00)#  
 

Google spreadsheets

I have been using the google spreadsheets for a while and I think it's a cool idea. It's Web 2.0 at its best. It's fun to use and quite convenient. I especially like the fact they can export and import from/to Excel files. No wonder Microsoft must be fidgeting. After all, the Office suite is Microsoft's cash-cow.

But it also shows a problem which people usually dismiss too easily when they talk/dream about Web 2.0. It is quite slow! Initially you're ok with it, but then, especially if you update the spreadsheet often, it's a pain to wait for all those trips to the server. I think we need another dimension to the web software. We need Web 3.0 or something that transcends the whole concept of Web as we think of it now.

WPF and .NET 3.0 is a nice start, but again, it's just a start. And maybe the main problem is it comes from Microsoft. Usually technologies from Microsoft have a strong business agenda behind them, they're not open (as in standards, not source) and they're not very popular with people from other platforms, especially in the Linux camp.

Thursday, March 15, 2007 6:44:29 PM (GMT Standard Time, UTC+00:00)#  
 

focus focus focus

I dropped the other idea. You simply cannot chase two ideas at the same time without losing focus on both of them. You need to constantly focus on the project and reassure yourself all the time it's all for a good cause. In my efforts, the forum on joelsoftware was extremely useful. It's very motivating to be in a forum/group of people who share the same passion for software and for starting a small software business.

Friday, February 02, 2007 8:20:02 PM (GMT Standard Time, UTC+00:00)#  
 

Preaching and doing are two different things

I have sinned.

 

I have promised not to divert my attention to any other product before I ship my main product. But I just couldn't resist the temptation. Now I will spend the rest of this blog entry explaining my reasons. Of course, that wouldn't change the fact I'm a sinner.

 

In a previous blog entry, I was writing why having a new idea is a bad idea. I still believe it is and I still believe the most important thing in delivering things and getting things done is focus. Focus. FOCUS!

It strange how people usually write about things they cannot follow themselves. In fact, most people write as part of the strategy of trying to convince themselves that what they write is true. The advice they give is usually one they need. It's an advice for themselves.

 

Focus and getting things done is one of my areas where I know I need to do more. No surprise I put it down on my personal resolution list for this year. And for the last year. And the year before that. It's an ongoing thing, alright?

 

So I started. It was a paper based to-do list whereby each task is given a certain number of points. At the end of the day, you count the points you scored that day. It's an interesting game-like method to motivate you to get things done. It's not new and it surely is not rocket science.

But the funny thing is ... it worked. And my productivity soared.

 

The thing to keep in mind: Focusing and getting things done is not rocket science, it's all about discipline. It is also about breaking down the complexity of a pile of work into do-able tasks. And start doing...

 

So, I've decided to move the whole paper based system on the desktop and create something that would be easily used from a computer. I personally don't like to carry too much paper with me and keeping track all mountains of paper is not exactly a trivial matter. Last but not least, it might help saving some trees.

Friday, January 19, 2007 6:49:31 PM (GMT Standard Time, UTC+00:00)#  
 

Three things about numbered lists

First of all, what is a numbered list? Well, it's a term I used ad-hoc here, off the top of my head, for giving a name to those lists of things that people put together to express some lessons learnt (sort of).

Some examples of numbered lists:

10 Things about X

5 Tips when you do Y

7 Reasons why Z works

 

Initially, I realized this sort of articles/blog entries get more of my attention than other type of articles. I started to wonder why. I asked around and many people seem to think the same way. These type of articles are catchy somehow, most people agree. It was time to learn why. And what better way to write about it than writing a numbered list myself.

 

3 things why numbered lists work

 

1. They organize the information better

 

Numbered lists present the information in paragraphs, each paragraph having a headline and then a description. This format is very easy to use, understand, follow and skim through. A winner for everyone.

 

2. The message is clearer

 

The headlines are the messages that the author wants to send, while the descriptions for each headline is supporting the headline. The headlines are perceived as very condensed messages representing a sort of conclusion of a very thorough process of investigation, so the informational content of the headline automatically receives a lot of attention.

By comparison, in a traditional article, the message flows more subtly as each sentence tries to bring you closer to the message (when not trying to confuse you more).

 

3. The message sticks

 

Headlines always stick better than whole paragraphs. As numbered lists are collections of headlines, the message is clear and it sticks into people's mind more easily. Articles don't stick, headlines and slogans do. That's why marketing uses slogans.

 

 

That's it for now, I can extend the list indefinitely, but I choose to keep it short. The shorter it is, the fewer headlines it has, the more memorable. Now go write your own and don't make it look like a pure marketing exercise.

Wednesday, January 10, 2007 5:24:05 PM (GMT Standard Time, UTC+00:00)#  
 

Eureka, another idea ... and why this is bad

Today, looking at one my personal resolutions, I suddenly came up with a new software idea. It is so funny in some ways ... and sad in others.

 

The funny part is that it might be a professional defect, in other words, because I'm a software engineer. You know what they say ... when all you have is a hammer, all problems look like nails. Or something like that, I forgot the original saying. This case is no different.

It's no surprise that looking at my personal New Year resolutions, the first idea that pops into my mind is "Wouldn't it be nice if I had a software to help me solve this problem and achieve my personal resolution?"

 

Software engineers are so predictable. While that might be funny, let me tell you why I'm not laughing...

 

One of the sad parts is that in fact I'm diverting from my real target here, the personal resolution, to something else. A software idea. It is quite sad as it's a convenient way of sweeping resolutions under the carpet. I have to forget about that. Unless I come with an idea of a tool to automatically generate the software that will solve my personal problems. Or automate that automatic tool too. Well, you get the picture and it's not nice. It's recursion without escape.

 

The other part why this is sad is because it diverts attention from my main software idea. This is a serious topic and many people fall into that trap. It happens with software ideas. While you are working on your next software product, suddenly you think about another product. You think it's much better than the previous. Or much easier to do. In any case, you get excited and instead of focusing on continuing your work, you spend a lot of time focused on this new exciting idea.

If you're not careful, you end up starting working on the new idea thinking this one is for you, only to realize somewhere down the line that you have yet another cool idea that's even more brilliant. In the end nothing gets completed.

 

It's not something that happens only with ideas. It happens with tasks and things to do. If you don't clear your To Do list by actually Doing them, you end up with an ever increasing pile of tasks. The more tasks you have, the more tired you will be, as you will psychologically perceive yourself as being swamped with a lot of work which you can never finish.

At some point you feel you need help, you go buy a book that basically tells you how to get things done and ultimately feel good about yourself. It's amazing the relief when you clear your TO DO list. You really feel good about yourself.

 

There are many techniques to teach you how to do things. You can buy tons of books and/or software to help you with the problem. But ultimately it's all about focus. You get things done by focusing on them and Doing them. There's no magic potion that will do the work for you.

 

The key however is in the focus.

 

There's only so many things people can do concurrently. They actually need to focus on something in order to DO it. Many techniques suggest that you should prioritize things in your TO DO list, in order to reduce the number of tasks that fight for your attention. One technique reduces everything to one. Focus on the most important thing on your list, do it, move on to the next. It's all about focus.

 

Same goes for implementing a software idea. You need focus and perseverance. That's why I'm going to lock my new idea in the back of the mind (it's still a good idea) and revisit it a bit later, once I get my product out.

Monday, January 08, 2007 9:47:42 PM (GMT Standard Time, UTC+00:00)#