State of Code

I have to admit I am rather close to being stressed out at the moment. In this article I will try to summarize all that’s going on in my head to find a strategy or guideline as to how to deal with a good problem to have “too much work”.

I made a promise to take one day off per week to recharge my batteries. Writing helps me do that and so I hope to share a few insights into my complicated brain while at the same time asking for your forgiveness if you have to queue to have me look at your code.

But first, I want to show off my new battery I had put into my MacBook Pro. It’s one of the first ones that no longer has a “user serviceable battery”. I could have sent it in to an authorized Apple repair center, but instead I opted to call upon a friend of the Austrian Cocoaheads who happens to be an “authorized Apple screw-driver”.

BSA Banner

Fresh Batteries

Pepi from MacLemon installed a new battery on my MacBook Pro (Summer 2009) after I kept seeing a “Service Battery” in the status bar for quite some time. The coconutBattery tool shows how fresh it is, it has even slightly more than the design capacity at the moment. I’m certain that it will soon dip below it.

Getting the old battery out was a bit of a hassle because of the Pentalope system that Apple employs inside to prevent regular people from exchanging the battery themselves. Took the better part of two hours, 3/4 of which where spent on trying to remove the final screw. The final 1/4 of the time the MacBook did not want to boot. This was “fixed” by reseating the RAM modules several times.

What about my mental batteries?

This morning, when I getting ready to walk the dog, I found my iPhone without charge. So I walked for one hour without a podcast to distract my mind. And boy it would have needed distraction. It kept circling about all the fires I have to put out.

In an effort to preserve my sanity I am trying to take off at least one day per week from coding. Recharging if you will. Writing blog articles does not count as coding, or so I am telling myself. Dear Diary, you are the friend I never had …

I should be happy about my iOS-based self-employment, but there’s a feeling of indecision that’s gnawing away on me. Once you had a bit of success in any field you always come to the crossroads where several paths lead into opposing futures.

Being a one-man-show means that you will always have a fight with your schedule. There will be important customers whom have something that is more important than everything else, say, because it needs to be done before a large trade show. Long term partners need some addition programmed. Friends who hope that you can make some time to help them build apps or spend time on their projects without compensations. There are large projects that you just would need to get started on, and then write monthly invoices.

And then there are all these small bugs in your own apps that are the most painful. Every bad review hurts like hell but the apps are not making enough money to warrant spending time on them as long as there are so many other projects underway. And if only I had time to continue on my rich text editing component. I’ve had like half a dozen enquiries already about when that will be available.

I’m in this situation myself at this very moment. Of all the work categories I mentioned above I have one or more examples burning at this very moment. The most important question on my mind is how to prioritize all of this. For lack of any better ideas I am using money and importance to decide on the order I am tacking the projects in.

An attempt at prioritization

How time-critical is the work? Is there some fixed deadline that if I where not to make it would irreparably damage my long-term relationship to a customer who is willing to pay an extra premium?

Next in line are projects that are long-term and that provide a recurring income. Partnerships where you share the profits be it either directly from the app store or via enterprise customers of your partners. In my case the iCatalog apps fall into this category because there I own the framework and ICS is selling this solution to catalog companies.

You probably have a couple of small apps, making in the order of 10-20 Dollars a day. Not enough to retire on, but still dear to your heart. Now it is time to spend a couple of hours polishing out the bugs that are a burden for your image. The apps in your portfolio might just be a playing ground to try out new technologies in. They cannot be much more if you cannot sustain yourself on them alone. But any bug that causes tons of negative reviews being written should be fixed because 1) it will ease your mind and 2) it is good for your image as a developer who cares for the quality of his code.

And then there’s always some work where you don’t make any money on at all. Open Source software that you are basing your commercial products on. Like the NSAttributedStrings+HTML project I open sourced while developing a rich text editor on top of it. I won’t ever make any money on the OSS part. Still this is important because projects like this and MyAppSales are benefitting my reputation. And truth be told, my customer ELO and my partner ICS found me because of them.

Short-term contracts and consulting work might cause some invoices to be written, but you can only take on these projects if there the long-term stuff is satisfied. If I troubleshoot an app then this will provide a bit of cash in the short-term but I won’t make anything on the app if it sells well. In work overload times like I am experiencing right now you will have to not accept such work or tell them to call you in 2 weeks or a month. When you start to work in iOS development this kind of work will be your lion’s share. But down the road, in my case after just one year of doing this full time, you will have to see that your own business grows first and foremost.

Finally there are the mostly egotistical things like writing lengthy blog posts like this one. Be it something philosophical or about some new iOS programming API I found out how to use, I am writing those for my own benefit for the most part. Yes, I am making a couple of bucks on the side via paid ads and Flattr, but not nearly enough to be able to claim that I am making money with my writing. Still, this is the only reason why around 1100 unique people come to my site every day.

So sorry…

I have to ask quite a few people for forgiveness these days:

Dear purchasers of my apps, I am sorry for not having the time to instantly fix all bugs. I understand that you are angry if LuckyWheel does not work properly on iOS 4.x, but please understand this: it will be some time before I can fix bugs like this since my apps are but a minor part of my income.

Dear partners, I am sorry for having to ask you to give me a bit extra time due to something more important that I need to get off my plate before looking at our project. We’ve been partners for so long, I promise you, that you are next in line.

Dear readers, I wish I had the time to write all the articles I have on my mind. If only you flattr’ed more or sent me more money… just kidding, that would probably not change much, as I still need to work on the more important projects to keep my income alive. I promise that I will try to blog more interesting articles as soon as I have a bit of time.

Dear friends, I am sorry that I cannot help you with your stuff for free at the moment. I’d love to play with you in our iOS dev sandbox, but unfortunately there’s a long and serious queue in front of you. If you are a true friend, then you’ll understand my situation. Next chance I get I’ll make myself available for you once more.

Dear owners of troubled apps. I am saddened by the fact that I don’t find myself able to make you happy as well. I hate to be sending you away, but there are other able iOS developers out there who probably can do as good or better a job of fixing your memory leaks. If you cannot find one, then you can still appeal to my ego in one more or so. Maybe then I can sell you a couple hours of consulting time.

The real crossroads

Everybody needs to make a decision sooner or later in his life what kind of work suits his interest the most. I am not talking about deciding on whether or not to do iOS development, that’s a no-brainer. I am referring to the decision that most HR people are mentioning to prospective employees in companies around the globe: do you want to be expert or manager.

The Peter Principle states that you will always rise to a level in an organization until further promotion would cause you to be incompetent. I suspect that organization in the context of self-employment does not need to mean that I can never be promoted. In fact I could always promote myself into a management position and instead let other experts to “the real work”.

But this is my real problem: I keep bouncing into this limitation of the maximum work that a single individual can accomplish. This prompts me to think that I would either require some employees to take on some of the workload. This would effectively promote me into a management position at which I would be highly incompetent. Peter Principle at work.

Would it make sense to stretch my limits? Other self-employed people (read: start-ups) are working way more than I am. It is rare that I can get in more than 8 hours of coding done in one day. If I sit down more than this, then my mood dramatically deteriorates, my eyes begin to burn and I find that I cannot clear my head at the end of the day. The suffering that this would impose on myself and – by extension – my wife and pets cannot be worth it.

This year I’ll be turning 37 and I suspect that the rule of thirds is around my natural physical and psychological limit. A third of the day is required for sleeping. A third should be spent concentrated on work. And a third should be non-work active time. Playing, spending time with family and everything else that is good for your soul.

I need to conserve my energies and brain power because I am not a teen or twen any more. My start-up train has sailed.

So I cannot work more. Or more precisely, I could work more, but the negatives would outweigh the benefits. And I cannot leverage other people’s work being my employees. Not just because I would be incompetent at leading them. Possibly I could develop these skills. But I simply cannot afford the risk of hiring somebody when the current income just barely fits my own needs. I have not just one mortgage to pay, I’ve got two.

Somebody on twitter suggested more partnerships. While those are at the core of several of my business endeavors already I don’t see it likely that somebody might turn up and tell me “hey Oliver, I want to work on your apps for free if you share 50% of the profits with me”. That would be something … who in his right mind would want to work on my apps for 100-200 Dollars per month. Not likely.

So what should I do about projects that people approach me with that I don’t have time for. Honestly I have trust issues. If I am forwarding a project to you, how can I know that you will be able to bring the project to a successful conclusion? I don’t know you personally. I don’t know what quality code you write. I don’t know about your skills dealing with difficult customers. Do you know this feeling? If you want something done right, you better do it yourself?

There’s also a language barrier. The majority of projects that landed on my desk recently is by German-language people and project descriptions are in German as well. That might be because German-speaking Central Europeans have little (positive) experience with outsourcing development work internationally. We see Eastern Europe as an enemy for our standard of living. Lot’s of cheap labour threatening to take our jobs away. Even cheaper is work in India, Israel and China, but these are seen less as a threat because they are so far away. In short the dilemma is this: if you speak German, you are probably too expensive. If not, then you’ll already fail at reading the project spec.

This is the reason why I am rejecting such projects at present and why I am not trying to make money on passing them on. If I were to take the approx. $1000 dollars in referral fee for a medium-sized project I fear that I would feel liable if it becomes a failure.

Strategy forthcoming?

Please forgive me if this article sounds like I am complaining or whining. I guess I am doing that a bit. But hey, I told you before that I am writing mostly for my own benefit. In this case to clear my head and try to come up with a creative solution to the “too much work” dilemma.

If there’s any conclusion to arrive at then only that I am keeping my eyes open for potential partnerships and deals where I have a long-term income from. At the same time I will continue to gradually raise my hourly rate as to reduce the demand for my consulting and contracting skills.

People say that this is a good problem to have. Here’s to hoping that they are right.

If you have any kind of smart ideas how you would deal with my situation let me know in the comments.

“One day the Buddha was sitting in the woods with thirty or forty monks. They had an excellent lunch and they were enjoying the company of each other. There was a farmer passing by and the farmer was very unhappy. He asked the Buddha and the monks whether they had seen his cows passing by. The Buddha said they had not seen any cows passing by.

The farmer said, “Monks, I’m so unhappy. I have twelve cows and I don’t know why they all ran away. I have also a few acres of a sesame seed plantation and the insects have eaten up everything. I suffer so much I think I am going to kill myself.

The Buddha said, “My friend, we have not seen any cows passing by here. You might like to look for them in the other direction.”

So the farmer thanked him and ran away, and the Buddha turned to his monks and said, “My dear friends, you are the happiest people in the world. You don’t have any cows to lose. If you have too many cows to take care of, you will be very busy.

“That is why, in order to be happy, you have to learn the art of cow releasing. You release the cows one by one. In the beginning you thought that those cows were essential to your happiness, and you tried to get more and more cows. But now you realize that cows are not really conditions for your happiness; they constitute an obstacle for your happiness. That is why you are determined to release your cows.”