Finally, I gave birth to my first child. It is a healthy boy (although I wanted a girl), it came at least two weeks before the expected date, but now I think it’s time to sit, relax, and grab a beer and a cigar. I have plenty of time, in the coming days, to worry about the cost of his university studiess, but now it’s time to just sit and enjoy.

It’s time to look back and think about what I have learnt in the last three months, the time it took me to develop both Arriba! and FND. Don’t expect any sort of revelation, maybe you have read the same words a thousand times before (and with a better implementation of the NSEnglighLanguage protocol), but this has been my experience (and I love to say this) developing my own apps.

You need a plan
Maybe this is the thing that most time took me to understand. You need to know what yo want to do. Obviously, that does not mean that, at the end of the process, the sales will come, but at least it heads you to the start of The Long Path to the Finished Product (TLPFP).

Every single day during this three months, I have had at least one nano-idea about a new application, nano-ideas that could not survive even the first minute of “let’s think about this seriously”.

That’s why I think that it is really important to know what you want to do, and go ahead with it.

Maybe, you need at least two plans
Another thing I have learnt is that sadly, having a brave heart and good will is not enough to walk through TLPFP. TLPFP is a long path, a very long one, and there are more than a thousand unknown dangers that can drive you to TID (The Ignominious Defeat).

I started to work on FND to fill up the moments when I needed to stop working on Arriba! (maybe because I have come to a dead end, or just because I needed to focus my mind on a secondary problem to solve the primary one). At the end, because of circumstances out of my control, that I still hope to be able to change, I can not release Arriba!, and I have released what I started to develop as a sort of entertainment.

Working in two apps at the same time can be overkill sometimes, but it is something I will always do from now on.

You need to be one of your users
I know what you are thinking: another rant about usability (or bad usability). Not exactly…

Developing a Mac OS X app is, to say the least, a complex process. I really like Cocoa, and I really wish I could, someday, develop such a neat, clean, perfectly encapsulated, high cohesion and low coupling framework as, for instance, AppKit, or Foundation, or any other of the Cocoa frameworks. But, to be honest, the learning curve of Cocoa is a bit steep, although at the end of the learning process, it is the most rewarding language I have worked with.

But, as I said, the learning curve is steep. The documentation is very detailed, but, well, it’s just an enumeration of methods and parameters (this is a generalization, and probably a bit unfair, I know). Anyway, there are a lot of moments in the development process when you just reach a dead end, and you can not find, not in the docs, not in google, not in any mailing list, any suitable solution for your problem.

And when that moment comes, when you have to find a workaround for something, or just when you need to think out of the box, is when you need to me extremely motivated, it is when you need to have a reason to solve the problem and finish the damned app. And the best reason you could have to do so is that you need the app for your personal use.

You need to know how and when to say no
Specially, to say no to yourself. The temptation is out there, telling you that TLPFP will be easy to follow if you throw anything into your app. XML import, html export, svg support, fullscreen mode .Mac sync, an embedded webserver… you name it. Of course, it is difficult to decide what goes into the 1.0 version and what goes into 1.6, but, well, that is your job, and that is also part of the fun.

I had to ship the app. And, the sooner, the better, because, well, I have to do some work that brings me some actual and real money. But I also want to charge some real money for my app, so it has to be functional. So, I have to leave some things out.

Obviously, there will always be some users that miss one feature, and in fact there will be some users that will not buy your app because of the lack of svg support (it’s just an example). Well, it is your job to try to listen to those users, and to provide what they need, but it also your job to decide the correct timing.

Some other decisions are even harder to make. As you probably (cough, cough) have noticed, english is not my mother tongue. I am spanish, which by the way, is a language that I don’t seem to speak properly, and I have shipped one app that is not localized into spanish.

Of course, and I must confess I agree with them, some spanish Mac users have complained about that, some of them in their blogs, some of them by email. What can I say? I just can not afford a localization in the first shipping version. It was a hard decision, but both Arriba! (if it finally ships someday) and FND will be localized at least after the first minor version release (what I want to say is that the 1.2 version will be the localized one).

Development is not the same as programming
The process of putting yourself in the position to start selling an app (TLPFP) involves a lot of different things. Of course, you have to develop the app, but that could be about the 70% of all the work you have to do.

You have to write the help book, set up the website, the online store, test the app, set up some support and bug handling system, design the app icon (or find someone who can design it for you), write the website contents…

And the worst of all, at least for me. You have to write the code needed to handle the trial periods and the serial number validation, code that someone will break sooner or later, and that takes you away from your job, which is no other than to add features to your app.

But, at the end…
But suddenly, one day, you find that you have walked the full length of TLPFP. And you realize that even although you don’t know if there will be some economic reward to your effort, the days that you have been lost in he dark into TLPFP, have been, form a professional point of view, the best days of your life. Even, for me, TLPFP has made proud again to say that I am a developer, has made me love again to sit in front of my shinny Mac and start trying to solve problems.

That is why, now, I have so many mixed feelings. I am happy, I feel the freedom that gave me to decide about my own product, but at the same time I am a bit scared abut what others will think about my product, and, of course, about the sales figures.

Anyway, seeing the arrival of the first sale has helped a lot to decide which is the dominant feeling: happiness, and some relief.