What I’ve learnt being entrepreneur

Posted: September 1st, 2015 | Author: | Filed under: Personal, Perspective | 2 Comments »

Being entrepreneur, aka being boss of your own, is certainly not conventional. For some, having a structured job and proper career path set out from beginning is clearly the right option. For me, paving my own path is the only choice I know ever since I’m aware that I need to do something about my life.

The journey has been no doubt full of challenges and occasionally I turned to what I classify as “entrepreneur porn” to give myself a pat in the back, since no one can. It’s not exactly easy to explain the daily or weekly shit-storm one must get through, much less expecting someone else to empathise.

So despite having only computer-science background and only ran my businesses for couple of years, I’ve reach a point where the past small achievements brought me enough confidence to pen down the thoughts I’ve learnt from the process and hopefully it won’t be just-another-entrepreneur-porn piece. My observations are usually controversial and I expect no less from what follows next.

On communication


The number one most important lesson I’ve learnt and validated over and over again is one need to become excellent communicator. It doesn’t matter what you do, which title you are holding, where your expertise lies, if you are unable to communicate well, you are not going to be seen as valuable.

I have worked with and interviewed many great developers. Ones that stood out are certainly the ones that made me understood their work, not the one with the best coding skills. When I look at the test codes, an average developer with clearly documented README easily wins over a seasoned one that shows no care to who’s going to inherit the project.

Take a moment and reflect on the people you admire and ask yourself: How do you know that they are good in some ways?
The answer is surprisingly simple: they can sell what they have done or will do. And selling is a form of effectively communication.

For a long time, I used to think that communication takes two. But if you want to raise above the rest, to be known, you need to make damn sure that people understand you, at every single different levels. Whether it’s your boss or your colleagues, if they hold a stake in your work, it is your fault if they don’t see or can’t comprehend the effort you put in.

On sacrificing

Beyond the glory of having flexible time and work place, every entrepreneur probably knows that the other side of being your own boss is that you must very often give up your nights and weekends.

Those are rather expected and will soon become no more than memorable experiences. Those sleepless nights sometimes could even be more fun than tiring. Not really something I’d brag about too much. Indeed, from my experience, I would discount someone who talks to much about superficial suffering.

The real sacrifices are like battle scars: it’s ugly, it hurts inside and people might not want to talk about. Would you even brag that you needed to give up your family time for business? or would admit that you let your work affected your relationships?

I’m no exception. It is agonising to give up on personal priorities at times and leave regrettable mental scars behind. There’s no fix to it, you will have to do what you have to do. Life has just got a little better once I came to terms with the fact. For every decision made, I just needed to make sure that I would be able to recover from it somehow, soon or later.

On baggage

Everyone comes with emotional baggages. And life as an entrepreneur often amplifies those as one’s limiting factors. These baggages are often emotion ties that one has with people/places/things, almost irrational and unspeakable. They are neither good or bad. For some it could be the desire to stay close to a place for inconceivable reasons, it could be the mental glass ceiling one has from previous failure. It might not translate to any economical value directly but occasionally I had to forego certain opportunities as I couldn’t bring myself to do it because of past struggles.

There are 2 choices, either to deal with it and unpack, or let it go. Neither are simple. I chose to let go once and paid the hefty price. But that helped me to learn to look at things more objectively. Take a few steps back and question whether your “irrational” reasoning is indeed worth keeping. Consider the decision you need to make as a form of long-term investments: What if you would be better off several years from now despite the scars left behind? You’ll never be ready but at least once the time comes, you have a way to answer to yourself.

I have met a couple of entrepreneurs seeking advices on general business direction and I could sense some of their personal hesitations. I didn’t know how to suggest a way forwards then, now I do.

On timing

Timing is everything! You have a great product but you launched too late or too early, it would most likely fail. A email sent to the right people but half a day too late could be catastrophic. A text message sent one minute too early or too late could make break the deal. I’ve been through more than enough instances of that on both ends to appreciate the fact.

What others consider as lucky, I consider as timely. Regularly, and sadly, I have had people closed to me missing out on the time window when huge opportunities come knocking. Either they took too long to decide or they failed to recognise how short the window stayed open.

Saying the wrong thing at the right time is equally damaging if not worse. Making sure the work you need to deliver or the message are right, that take times but don’t take too long. Every “luck” comes with expiry date.

With this, it connects all of above together in one theme: I believe that being entrepreneur is about making great sacrifices to deliver the right messages at the right time.


4 short years

Posted: February 15th, 2015 | Author: | Filed under: Personal | 1 Comment »

Facebook- Feb 15 2011, 14-51-47 UTC

Exactly on this date 15 Feb, 4 years ago, this was my work corner. First real job ever as a fresh computer science graduate. I don’t really own anything in the picture. The macbook and mouse were company-issued. I have just started learning Ruby on Rails and has not even began iOS yet.

Fast-forward to today 15 Feb 2015. This is where I work now.

4_years_later

I still suck at RoR, became much better at iOS, and know very little shit about Android. But I own my 5th Macbook, I decide when to issue one and I kind of “own” what’s in the pictures :p

Taking a look back before making the next leap of faith. The dots connected.


How did I keep doing the impossible

Posted: December 31st, 2014 | Author: | Filed under: Personal, Perspective | 1 Comment »

On the verge of new year, looking back at the larger-than-life moments of 2014, I thought perhaps sharing one of the lesser-known rules that I live by would be a good way to close off the year. I’m not young, neither am I old-old, and clearly I can’t claim I already have everything figured out in life. What I am about to theorise is definitely not textbook-wisdom. But if you have enjoyed my previous post on handling stressful time, then I’m pretty sure you will love this one.

There’s one aspect that contributed much to my career and personal achievements: having discovered precisely where my strengths and weaknesses lie; and one of those strengths is having a special knack for doing the seemingly impossible again and again. At first, it seemed kind of random to me. I credited those early accomplishments partly to luck, partly to the fact that I took advantage of the opportunities. Then there are times when I was so sure that I was going to over-deliver again but I didn’t, it kept me up at night. Fortunately or unfortunately, those self-doubt periods rarely happened. And that’s why only recently, I was able to formulate a thought process that governs the actions I took.

Let me share how that powerful process worked for me by walking you through a simple task most of you could easily relate to: decorating lights for the house. I break this down to 4 steps:

1. Establish the baseline

I start with what I want: I need to buy the right type of light bulbs. I don’t really know what is the “impossible”, I often don’t even know enough to define the possible. So I set my mind to draw a baseline. I do this by reading a lot, not from books but from Wiki and online articles. In this case, I read about lighting technologies, about different bulb type, calculation of brightness, pricing of different types, even went into a bit of interior design techniques related to lighting.

It is no doubt overwhelming for any new field of study. It helped me a lot observing what the ‘norm’ is and more importantly get to an understanding why people are following the norm. The approach I take usually involves identifying only a few realistic variables of the problem, keeping all others constant. When I discovered that the typical light bulb used for indoor night lighting is CFL bulb of 600lm, I knew that is my baseline.

Another great source of information is from domain experts. I did ask the electrician to make a recommendation and he gave similar observations. While I don’t have much time to read books cover-to-cover, I enjoy reading great deal of bite-size scientific articles daily. Over the years, I also found that experts of the highest calibre are often the ones with the simplest explanations; and strangely, they are also the friendliest.

By constantly broadening my knowledge horizon, things connect in the weirdest possible ways without me trying too hard. I often immediate know what is the baseline or the ‘norm’ when it comes to most subjects and matters. In this modern world, where vast knowledge is just one search keyword away, the question is how much of that could you really digest everyday?

2. Raise the bar

Now that you know where the line is, simply take what you found, tune that up by a lot, doesn’t have to be realistic … yet.

You might wonder how one even know what to expect when I said that. The way going about this is rather simple and systematic, this is where I have spent a lot of time putting my thought process into words: don’t think too much, take the variables you found, kick one of them up higher by a notch, validate if such combination exists, and repeat.

Here’s the example: with the baseline of 2 parameters (CFL & 600lm), I then set out to raise the bar: can I replace CFL with something else newer, more energy saving. Previously, I’ve read that LED is the new ever-lasting type of light and it is also more energy-efficient. That’s one. Next, can I find a brighter light that is of perhaps 1000lm. Here I guess I started to form the seemingly “impossible”.

I divided the processes into discrete steps but in reality, what you have found as the ideal solution might have been a shortcut of both step 1 and 2 as I described here. It is a natural tendency to find the alternative approaches right from the start, but in my opinion, if you could clearly separate what you have from what you want, you would be better aware of the effort needed to get there.

3. Get down to earth

At this stage, I usually tone down and consider the feasibility of what I have formalised in the previous step. It usually involves adding another variable that I considered secondary in step 1. For most of us, we can’t simply throw a pile of money at the problem and expect it to work. Cost and time are usually the critical limiting factors to a perfect solution.

In my example, while LED bulb with brightness rating of 1000lm is not new in the market, it wasn’t available where I needed it, or at least not available cheaply and readily. I didn’t want to pay double and just only getting half of the quantity I wanted. So I looked for oversea shipping options. After a few cost calculations, connecting the transport routes and asking around, it turned out that the fastest and cheapest option was to get it air-flown, piggybacking on a friend’s travel plan. And I did just that, bringing the light bulbs home from overseas.

When bounded by the reality, things certainly become more difficult and this is the chance where I practice my out-of-the-box thinking. With limited resources, I got creative and sometimes went to extreme measures to get things done and surprised even myself. The way I keep myself down-to-earth is again by reading extensively. Previously, when establishing baseline, I read about the Whats; to stay grounded, I look out for the Hows, Wheres and Whens: If I come across a newer, cheaper, faster way of doing something relevant to my work, I do a bit of brain exercise and imagine the what-if plan of actually making use of the approach. And when the time comes, I already have the solution in memory, ready to impress.

4. Execution and follow-through

The plan is ready, let’s carry it out! If only it’s that straightforward…
At the beginning of this article, I acknowledged that it took me quite a while to get the thought process proper, this is where I struggled the longest. The plans I made usually involved a critical window of opportunity and naturally that means a very tight sequence of events need to happen in the right order. For example, it could be a colleague asking for help getting work done before X number of days, or it could be a client asking for insane deadline. Whatever it was, when I failed to deliver, it struck hard and it’s not the easiest thing to admit oneself’s mistakes, blame human nature.

So the missing key I found was: inability to follow through. I might have came up with a perfect 10-stage idea, each of the pieces in the execution plan was absolutely do-able, but I failed to see it through from start to finish. Just a missing piece or a tiny screwup along the chain was enough to put everything down. This was where I failed to admit to myself.

In my personal example, there were so many things that could go wrong. What if the purchase of the bulbs didn’t happen, or what if the delivery to my friend’s place was not on-time, or my guy missed the flight, or even the amateur packing damaged the bulb on arrival, etc…

Of course I learnt, and that’s how I am able to write this article: To do the impossible, I need to stay alert, assume nothing and make sure there is no weak link in the plan. Even when certain something seems out of your control, do whatever it takes to gain control or have a backup. Objectively, people might consider that aggressive / control freak / PITA, to me, I see it as focus, laser focus. As long as you are doing no evil, you’re good to go.

Having said that, it doesn’t mean things won’t go wrong, they will, according to Murphy’s law. You can only do so much to minimise the uncertainties, the rest is somehow relying on luck. Here’s another interesting observation that I made from my personal experiences: you can factor in the luck as a plan A and make it sound like you know exactly what you are doing, once it happens you got yourself a big win. If it didn’t happen, you still got your less-than-impressive plan B. Just don’t tell everyone it’s luck ;)


Staying sane while managing multiple projects

Posted: August 25th, 2014 | Author: | Filed under: Development, Personal | 2 Comments »

Managing several projects at the same time is definitely not an easy task. Doing it remotely is an even greater challenge. The most consuming task of all is no doubt communication: getting updates, reading reports, spotting potential the roadblocks, knowing critical events, etc…

I’m running a relatively large remote software development team of 40+ people. At any one time, I’m having my eyes on no less than 10 projects and I need to maintain detailed mental status of every single one. On top of that I also need to be involved in strategic planning, sales, accounting discussions, remotely. At the end of the day, I’m still doing coding and bug fixing for some of the projects.

Most people would tell me that’s an insane level of concentration and a lot work.
It is not true. Since the introduction of Slack, I believe I’ve finally formed a system that keeps things well under control and allow me to run the team with extreme confidence everyday. I still have some spare time to enjoy what I love to do.

I hope my experience in the form of specific & practical steps could help you to reach a high productivity level and most importantly: staying sane.

Some numbers

To begin, if you are not familiar with Slack, please do some Googling and try it out. Here are some numbers extracted from my team’s dashboard:

slack_20082014

On a normal day, I’d actually read about 80-90% of the messages including the messages from external integrations. The active number of people using the platform is close to 40 all the time.

On the day Slack was released to the public, as a team, we switched over (from Skype) completely in less than 48 hours. I gain nothing by promoting Slack but I have to say it’s by far the best team communication platform we have ever had our hands on.

Channels, groups and the water coolers

I’m assuming you are aware of the different concepts in Slack. We did not deviate too much from the intended setup:
– Channels as public discussion topics such as #design, #ios, #android, #ruby…
– Private groups are project groups consist of specific people, by invitation only.

What makes the team special is that we adopted the concept of digital water cooler. In our setup, we have several ones such as #general #music #games #dailyphoto. They are essentially public channels with gossiping intentions.

The digital water coolers are an engaging, asynchronous and non-distracting way to keep everyone connected in an informal context. When often about half of us are not in the same physical space, it has became invaluable. It also keeps the fun and work in the same interface.

Getting all the tools in one place

Similar to a typical development team, we have a handful of tools for different purposes. Normally, we would need to setup email notification for each of the tools. It has always been difficult to get notified about smaller, trivial events such as when someone pushes code commit or when a comment is made to the task-card. Imagine multiply those by factor of 10+, things get out of control pretty quickly. Most of these bits are insignificant as we see them, but occasionally could be a tell-tale sign to a potential disaster.

So when the team switched to Slack, we wrote our own custom integration code, consolidating all possible events happening around a project into its specific channel. It is a major shift in how the team members work together. Individually, we no longer need to check for tasks assigned or new comments on Trello, or check for bug report on another system. We’ll know about them as they happen and we keep a history to refer back to.

Personally for me, I now have much better visibility into any project, It was simply not achievable before. I could see when a specific bug has been fixed, new version deployed, or I could choose to ignore them. It’s up to me.

Turning off distractions, partially

This is the secret of how I stay available and informed all the time yet I don’t have to really be online. It is probably the most useful and most important feature that Slack offers.

slack_notifications

What you see above is the non-default notification settings that I keep for most channels and groups that I’m in. By keeping the option this way instead of the default option, it reduces the distractions on my desktop and my phone.

I don’t receive the annoying pop-up message all the time when I’m working on something. I will read the backlog either on my phone or my Mac when I have some time in-between meetings. Usually it takes me only a couple of minutes to catch up.

Some rules I followed to keep it to a very manageable level:
– Water coolers: all notifications off.
– Private groups: partial notifications.
– Other public channels: only notify on desktop, no mobile.

If you are not aware about this setting now, try it today and maybe gain back your ‘peace’.

Staying alert of only what’s important

I turn on All Notifications for certain threads, they fall within the following categories, these usually require my immediate attention:
– Management group
– Finance/HR group
– Direct messages
– Project groups that are in delivery phase.

Another subtle yet brilliant feature Slack platform has is the delayed notification. If I don’t read the message on my desktop soon enough, after a short while, probably a minute, it will push the messages to my phone. And since I practically keep my phone next to me all day long, I would not miss out.

Notifications were PITA for Skype. All messages are pushed to the mobile app. It quickly became overwhelming and the non-critical messages bury the critical ones. There was simply no way to work around this annoying issue.

Catch the critical events

By default, if you @mention anyone in Slack, they will get a red badge next to the channel name on desktop or they’ll receive a push notification to the phone within a minute if unread. This has been extremely useful for team members to request for attention from other team members, whether they are online or not.

The underlying mechanism in Slack watches for your own username as one of the important Highlight Words. So to stay updated and be notified of all relevant conversations and events, I added a few more specific and generic keywords into the list: crash, structure, test failed, NoMethodError, different spelling of my names.

This way, I could stay informed about most of the critical events and decisions. I could also catch it when the team is discussing about architecture design and then drop in to give my opinions even when I’m not being mentioned.

Clearing the messages, quickly

I receive an enormous amount of messages at any time during the day. At first it was overwhelming, but gradually, I developed a systematic and efficient way to read and response to all communications.

Since I’m on the move very often, I would only try to read threads with a red badge on my phone follow a certain order of importance:
– Direct messages
– Private management groups
– Private project groups
– Other channels or groups

When I got back to my Mac, I’d use the hotkey combination: Alt + Shift + Up/Down to jump quickly to the next unread thread. On top of that, I use Esc key to mark the water cooler channels as read without scrolling through them. I would go back to read them when I’m done catching up.

Staying sane

This arrangement allows me to work through the daily communication effortlessly. I don’t need to actively spend time chasing people for updates and reports and yet I know when the code failed, why apps crashed and how the team would solve the issues.

With Skype and other platforms we’ve tried before, it was simply not possible. The model was still pretty much a pull model, that is I need to “poll” for updates. Since Slack came along, the game has changed. Now the updates are being “pushed” to me in smaller chunks, my job is to digest those on my own terms.

Not only it that, whenever I feel overloaded, I allow myself to drift for a short while. Simply turning on Do not disturb on my iPhone and let it be. Having an absolute peace of mind knowing that when I’m back, things will be waiting for me in the right priority.

TLDR;

I keep an eye on no less than 10 projects efficiently at any one time with the help of Slack platform. By default it has some brilliant features and smart notification but you’ll need to tweak it depends on your context. Once you formed your prioritisation rules and setup the channels, staying updated is no longer a time-consuming task.


My secret to getting rid of burnout permanently

Posted: August 2nd, 2014 | Author: | Filed under: Personal, Perspective | 76 Comments »

burnout

Having picked my own path for the last couple of years, there were times when I got completely burnt out as often as once every few days. Like everyone else, I was struggling and I needed to get back on my feet as quickly as possible. I have no choice but to figure out how to deal with burnout more effectively, my business needs me.

There is no shortage of articles about burnout and how to prevent it, yet I find most of those rather generic and not exactly helpful in remediating the situation. Only recently, I discovered a secret and since that “ah ha!” moment, things have changed completely for me when it comes to demanding times. As of now, I don’t even need a holiday trip to exotic destinations anymore and I am still able to keep my cool with ease.

I found the solution to be a very simple and repeatable process, so I decided to put it down into words with the hope it could reach out to more people. While my experience would not be applicable to all type of careers, I’m pretty sure it would help a majority to overcome stress and be content with current choices.

Knowing that you are burning out

Do you even know that you are burning out? I did not, not until my second job.

I found this article from LifeHacker to be pretty helpful to judge if you are having a burnout. Even if you are currently happy with your job, think about those times where you felt bad and see if the symptoms apply:

  • A generally negative attitude, often paired with the feeling that nothing is going to work out.
  • Inability to concentrate.
  • General apathy towards your work, chores, and other tasks.
  • Feelings of stagnation.
  • A lack of interest in social activities and being with others.
  • Difficulty with healthy habits like exercise, diet, and regular sleep.
  • Feeling like you’re never doing enough.
  • Neglecting your own needs (and putting the needs of others ahead of your own).
  • Personal values and beliefs lose their importance.
  • Short temper.
  • Constant exhaustion.
  • Feelings of inefficacy.
  • Feelings of detachment from people and things you care about.
  • Frequent boredom.
  • Psychosomatic complaints, such as headaches, lingering colds, and other issues with a cause that’s difficult to identify.
  • The denial of these.

(from LifeHacker)

  • The work you did kept having issues for several consecutive days.
  • What you expected to be a simple task has dragged for days.
  • Completely consumed by work and forget to pay bills or forget your date(!).
  • Lost track of time, it was Monday yesterday and it’s Friday tomorrow.
  • You work long non-productive hours and you wish to be efficient as you used to be on some other days.

(my additions)

If you only have one of these, maybe it’s fine although I suggest that you ask your colleagues, bosses or family and friends to help you. In extreme cases I came across, the person was so consumed by stress that he was not able to tell that he is burnt. The first step to any problem is awareness and acceptance. Once you have accepted that you are experiencing it, let’s move on.

Know what causes YOUR burnout. My epiphany moment.

Like everyone else, I thought that the common solution is to take a break and go on a holiday trip with loved ones or simply take a few days away from work once in a while. Holiday trips are always nice, but it didn’t exactly help me much, the effect didn’t last. Occasionally, I found myself to be extremely stressed just 2 days after I came back to work. It’s not because there were tons of work waiting, it’s not because the holidays were too short.

My enlightenment came after reading a short article about how Marissa Mayer prevents employees’ burnout (read about it here). I immediately realised an important misconception and NOT being able to take break is NOT the cause of burning out. What I have learnt to be extremely crucial in looking at the matter is another way of defining it: burning out is result of not being able to do what you love or what is important to you regularly.

Let it sink in a little before you read the next section.

Getting rid of burnout

The solution is actually quite simple: do what you love and is important to you regularly.

Another way to look at it is to ask yourself: what is it that you absolutely cannot miss out?
Do not try too hard to find the answer. You might not know the answer now, and might only discover it when you are actually doing the activities you love. It’s important to keep the question in mind all the time.

Fortunately for me, the answers came pretty easily when I knew what I needed to look for. I’m also lucky because I have been doing what I love all along. I just needed to separate the tasks keeping me happy while minimising the other mundane distractions. As a software developer, I’m passionate about writing codes and creating new things. However, as I also need to perform managerial duties, I had less and less time to do so. Repeatedly, I had to work for days without writing any useful code for the team, I became highly agitated. My solution was to simply make time to write some code every other day. I’m pretty certain many developers who are moving on to higher management roles would feel the same.

Everyone has a favourite hobby to boost energy, it could be playing a musical instrument, drawing, writing, or some kind of sports. But the real cause of burnout could be rather different. You probably can miss a practice or two without feeling resentful towards whatever it was that was stopping you. However, there would be other regular activities that you absolutely do not want to skip as they are important to you; you would keep tabs on people making you work through it, hoping for revenge one day.

The reasons are no doubt very personal, it could very well be work-related like mine, or it could be non-work related such as one example the article suggested: attending your child’s weekly event. If you still don’t have an answer, no worries, keep searching. Below is the list of questions I hope could help you to pinpoint your resentment:

  • Why do you want to take a break, go on holiday? What are you really running away from?
  • What do you love most about your work environment?
  • What do you wish to be removed from your work environment? Is it within your control to avoid?
  • How do you recharge your energy? Can it be done at the end of the day? In the middle of the day?
  • Is there any regular event/activities that you are looking forward to regularly?
  • Are there some people you want to meet but things keep getting in the way?

Though personal, if you are not able to seek into your inner self and answer these questions, find someone to help. Perhaps a coach, a person you can trust, they might know you better and ask the right questions instead.

Keeping sanity and staying ahead

Once you have found what’s important to you, keep them permanently in your schedule. Think of them as checkpoints or life-savers. You can’t stretch yourself for too long, you need to aim for the next checkpoint. Do your best not to miss it, or possibly, keep every sprint as short as possible. Over time, I have learnt to incorporate multiple re-fuelling events into my work month. There are small daily checkpoints, I get to do what I like without fail at certain times of the day. There are slightly more satisfying weekly rewards and of course, a most fulfilling activity monthly.

Having said that, it’s not always possible to keep to such a schedule. By setting up multiple rewarding activities, even if I miss one small one, I can always aim for the next bigger one as my “save game”. In the case when I really have to skip several of them, such as when I travel, I make sure to plan ahead and reserve one of the earliest day for “me-only” time and only do what I want on that day. In other words, I plan my burnout ahead of time.

Most importantly is to be aware of what you need constantly. The activities don’t need to be the same every time. As your life changes, maybe getting married or having kids, your ‘rewards’ will change. By keeping in touch with yourself, you’ll know how to line up the activities without much effort.

TL;DR

Be aware that you are burnt out occasionally and accept that. Keep a look out for what is important to you yet you kept missing out on. Make it as part of your schedule or find ways to make it up.


How long does it take to make apps nowadays

Posted: April 8th, 2014 | Author: | Filed under: Development, Personal, Perspective | 6 Comments »

Two years ago I wrote “Dear business people, an iOS app actually takes a lot of work!” and until today I have not really revealed publicly how it was the little accidental ‘overnight-success’ I had. So here it is: on the first day it stayed on HackerNews‘ front-page for a breaking record of more than 48 hours (a usual indie link wouldn’t stay more than a couple of hours). My server crashed more times than I could count and the highest live visitors on site recorded to Google Analytics was close to a thousand viewers, that’s 1000 concurrent connections at any one time. Until today, I still have few thousands view on that article every month without doing any promotion.

So I decided to write a “version 2.0” given the extensive experience I have had while assembling a great team and started building mobile apps professionally under Silicon Straits Saigon. Instead of looking at the various cost consideration factors of building an app (which the previous article still reflects very accurately in 2014), I would take a different approach by giving a sample timeline and rationale why things need to be done in a certain way.

The requirements

Let’s say you have decided to build an app that allows users to post and share cooking recipes but you want to own every aspect of it including servers, source code. You also have this super niche audience group that you want to target and it will need certain features that no other recipe-sharing app out there have it. Of course, you might have all those ideas in your head but there’s nothing written down in black and white.

And very importantly, this article assumes that you are serious in building a nice-looking and solid app, not just dummy or disposable prototypes. Moreover, I am discussing development of native apps and not cross-platform solutions. Sure they could potentially save time but nothing really beats individual native code when it comes to long term benefits.
It’s going to work for sure, you know that the idea is solid, right?!

The costs

Hopefully, after reading my previous article, you now probably accepted the fact that you are not going to get it done cheap.
To make things more realistic, I would also assume that you don’t want and can’t afford to pay for a huge lum-sum upfront to the developers/company you will engage. This is also true for SMEs/individuals/agencies who need to maintain a low monthly burnt rate to survive the longest time while working out marketing and launch plan. Sounds familiar?
With that in mind, what I usually propose to my clients is a monthly arrangement with bare minimal headcount of 1 for each skill-set needed to complete the app. And in this example, let’s say you need 1 back-end developer, 1 iOS developer, 1 Android developer. Make sense?
In case you are expecting one developer for everything then please stop reading this and go back to your day job instead. Unicorns do exist in some forms but you are no where near their league.

If you are still unclear, look at the Timeline below.

Timeline

make_app_timeline

Surprise?! I said only 3 developers but now there’re 5!!! What’s going on?!
Don’t freak out just yet, let me answer all that burning doubts one by one:

+ UI/UX Designer: Why do I need a UI/UX designer?
Don’t worry this is pretty common misconception. Most people when thinking about “making an app” they actually think of “copying” an existing app with similar design or maybe borrow a design from another app. Another gap in expectation is that decision makers think developer can also design, which is not true most of the time. Putting this together, the business owner usually assume it’s simple for the developer to plug design pieces from elsewhere and put in the app easily.
NO! You need at least a proper designer and the next guy (below) to even begin realising the app.

+ Product Manager (PM): What is this role and again why do I need him?
You don’t have any written documents, maybe you have some napkin sketches but that will not be sufficient to convey everything exactly the way you want it to be built. And developers, they don’t talk your business languages, they don’t care if you wanted nice design or reach thousands users, they can’t fill in the blanks for you. This PM guy will the interface between you and designers and developers. He will also help you to ask you questions that you probably have never thought of while drawing on those napkins.
Arguably, you can make an app without a PM for sure. But based on my experience, the project will drag much longer and you will never get to the satisfactory level that you hope for in the beginning. It wouldn’t be a smooth sailing experience.
There are also several reasons why I always refuse to call my PM as Project Manager, this deserves another long post that I intend to publish soon. The bottom line is Product Manager is more than just Project Manager. Subscribe to my blog and stay tuned.

Dependencies

I believe the explanation above toned down your doubts and you are ready to get to the real rationales behind my proposed timeline: task dependencies.

Kickstarting the app, you need the idea-guy (UX designer) to dream for you, then the creative guy (UI designer) to draw your ideas nicely, but of course, you also need the PM guy to help you put things together and plan out what is realistic and what might be too far-fetching. If you are lucky, at the end of first week you should have a very good sense of what the app will look like and what can be ready for launch based on a certain timeframe. My team has a unique creative process that make sure you can’t fly off too far from the reality within this first 2 short weeks (ask me how!).

Why can’t we just start building right away?
The issue is what should be building first? Logically, the back-end (Server dev) needs to start his work first before the “app guys” can do their jobs. A typical example why you can’t start building the “app” part immediately is this:
– You want a registration screen, but you have not decided what information to collect.
– The server dev can’t decide for you if you need to store Age or full Date of Birth, it’s up to you.
– The app guys can’t build the interface because Age is a year selection while Date of Birth is a date selection.
– Now you need to go back to the beginning to work with the PM.

So the fundamental of dependencies for making an app is this: you need concrete sense of what you want to do first, then the server work can start a little bit; after which the app can be build incrementally. It’s like the app developers will play catching up with the server developer and that’s the most effective scenario.

Your milage may varies, sometimes you might need a much longer time for UI/UX development because the exact flow is too complicated or not known in advance. My team worked with several media agencies and this is usually the case, the high-level ideas are there, but the end client (usually big MNCs), cannot decide how to do the UI and what are the functions to have.
In other cases, your server development might need a longer head-start due to complex overhead logics, example: integration logic with external servers, or in regulated industries. In the timeline above, I assume the developers are all in one place, hence reducing all possible delays and mishaps in communications.

What’s next

You can only plan so much. There will be several changes once you are able to see and test the beta versions on your devices. That’s why there are half-blocks on my timeline for the designer. You should expect to work with them occasionally to revise the design and user interactions of the screens. All other work will have to be reconsidered to fit the slightly-changed plan.

Most likely you will get your iOS app ready earlier than Android. Not only because of Android’s notorious fragmentation but also because of really weird and seemingly-stupid bugs which happen only on certain devices that you don’t have physical access to. I faced many of these over the past 3 years and eventually I learnt to accept the sad truth, it simply takes longer.

How long would it take to get it done depends on how complex and detailed the requirements are. A good Product Manager, in my definition, should help you to control this while you can’t. He/she should be able to tell you to set a date and stick to it. You should not change your mind half way and take a detour because of subjective judgements of market for example. He/she should help you to manage the timeline carefully.

Don’t expect your first version to be perfect, in fact trying to push the last 10-20% til perfection might get the project killed by lack of resources or missed deadline. Just get it out there to real users already while it’s good enough.

Conclusion

Making mobile app is still not as simple as it seems to non-developer. In modern days, when almost every new app is Internet-connected, the process consists of more than simply iOS/Android programming. You need strong server support, you need designers and equally-important product manager. Each of these components when carried out in certain order, it should help to achieve optimal time and cost for your first release.

If this article doesn’t scare you and you still want to make an app? Contact me and/or the team at our Facebook page.


rebooting 2013… half a year of change

Posted: March 4th, 2013 | Author: | Filed under: Personal | No Comments »
Tan Son Nhat airport - Sunset

Tan Son Nhat airport – Sunset

If there’s one photo to describe my whereabout the past half year would be the one above: juggling between Singapore and Ho Chi Minh.

A lot has happened since July 2012. It’s been a short yet life-altering couple of months for me and everyone else involved. No one was even close to predicting anything that is in motion today, and certainly no one was sure of anything would happen yet we did, once again, trusted our gut and went ahead.

Looking back just mere 3 years ago around March 2010, I’m still sitting in school, no clue what to do with the graduating thesis; despite the fact that I then already had my name as co-founder of what now has became a hundreds-strong corporation. So I took a break after graduation and find a full time developer job at Anideo. Up until late 2012, I was still happily pushing code and polishing a killer app while receiving a decent pay-check that is still a dream to many today. All that came to a stop abruptly for several foreseeable and unfortunate reasons including my boredom of a day job.

Fast forward just a month or two, after weeks of being in a trough and direction-less, I found myself hesitantly taking up the post of managing entirely new company on it own. Officially, that was shy of 5 months ago. Being an engineering spirit person, I have never had the need to run a company but this time I knew there’s no other choice. Today, the team is still small, and that didn’t seem to affect the fact that we have been and are still achieving some rather incredible numbers; we have just had a nice office that we truly call ours; great team dynamics; comfortable working environment…

I certainly had to make lots of decisions, the kind that you can’t learn or read from books. A lot of times it was based purely on instinct and putting everything as a bet, knowing that only time could judge. I had no management training, just a vast pool of technical expertise and that will continue to be the base of my foundation for the time to come. What I also have is the fact that I have failed several times and saw people failed even more miserably before they could start anything.

Obviously I’m no expert but I realised there must be something about the way I (want to) do things that people find interesting and inspiring, for that reason this rebooting entry will signify the focus shift of my blog, from technical development to a more managerial-sharing focused perspective. Mostly the context will be of Singapore and Vietnam startup scene, learnings through the eye of a first-time engineer-turn-manager person, occasionally some complains about shortage of devs, and hopefully some small contribution to the open source community when I’m bored.

I’m sure if you have come to like my previous writing style, you’ll love the next part even more. Subscribe to receive future posts using the form on the right side here.


End of 2011, the Lunar New Year version

Posted: January 23rd, 2012 | Author: | Filed under: Personal | 2 Comments »

It’s the new year of 2012, lunar calendar that is. In case you are not aware, in my culture, Lunar New Year celebration is a huge thing, as many as 3 days off before and 7 days off after, like in China. So while having a few days off, I thought I should write something about the 2011 and prepare my todo list for 2012.

My 2011 started with a fantastic closing off of super happening 2010: Laying down IT foundation for TGM VN, producing the best Final Year Project of the year with my brother, while finishing off my degree at NUS.

I wasn’t sure what I did was entirely what I wanted. I felt that I needed to take a break from all that and more importantly embark on a self-exploring journey for myself. That’s when I took the opportunity to work at Anideo, a private startup funded by Eduardo Saverin. It’s almost a year now.

To summary it all, there weren’t many significant events that I could recall over the year but I’ve learnt a lot of extremely valuable lessons both in the profession that I’m in and personally.

Learning iOS development probably is the best thing

I’ve shifted my interests from web development to mobile app development. If you have not read my previous post about how I started this, you should now. It is so much more challenging both technically and economically. And ofcourse, the more challenging, the more rewarding it is at the end. I’ve produced, in my opinion, a few amazing apps in the process.

Not only I’m getting more confident in my technical skills, iOS development taught me so much more about UX design, UI design, delivery process, handling users’ feedback and complaints.

Stay hungry, stay foolish

Well, I know this quote is boring as it has been quoted and requoted so many times since Steve’s speech in 2005. However, ask yourself this question: do you really live it?

A few weeks ago, I caught up with a friend. During our conversation, he told me that one of the projects that I’ve put together in 2010 is still in use today and still no one could really out-do it after more than a year. The next moment after hearing this, my mind shifted into excited gear and the very next thought that came into my mind was: “I want to rebuild it, better”. It never occur to me that I need to stop and receive the credit I’ve earned. I have always wanted to do the next ridiculous thing just because people think it’s not possible. Once I finished something, the following few days are always depressing because I have nothing to do.

It’s one of the greatest phrases that describes very accurately how I work. I’m always hungry for more and I always do the things that people considered impossible. So 2011 taught me that as long I am still walking, I could never stop, and somehow I can always pull off the stunts.

Working in startup is damn f**king hard

Every user’s complaint makes you feel so damn bad about yourself. Everyday, receiving bad daily stats is depressing. Every missed deadline makes you think there’s no tomorrow. Sometimes you do a lot yet it doesn’t feel even close to enough. Sometimes you want stop to think but it makes you feel so bad because you just want to do something.

You hear stories about how people can wear anything to work, coming to work late, and work wherever they want. It’s true but it’s just the surface, there are more than that. The responsibility is so much more than an office job. You can’t just stop working when your idea is half-finished.

You also hear so many success stories every single day and keep wondering when is your turn. The reality is that those are only less than 1% of many companies out there. The other 99% *will* fail.

In short, you’ll get so many more downs than ups, and it never ends.

Stop giving excuses and just do it

It constantly amazed me every single time I put my thoughts into this. Over the last 2 years, I’ve learnt to stop giving excuses for my mistakes, I’ve learnt to stop making complaints about things people do. I just shut up and find another way around doing things. That alone gave me so much more energy and getting so much more things done.

Look around you, look at people who you think are somewhat achievers, how many times do you hear they complain about their daily life? Once you realized this, the pattern is pretty interesting. Yet people just don’t get it.

My moto has always been: don’t ask, don’t complain, just f**king do it already. As simply as that.


… and that concludes my 2011. My 2012 is going to be explosive!


Hi!

Posted: January 1st, 2012 | Author: | Filed under: Personal | No Comments »

A few years ago when I was searching for my own domain, I found this domain but after a few hours trying to borrow a creditcard (I didn’t have one then), the domain was already bought by the f**king stupid networksolutions.com I used to check for availability. I didn’t want to be ripped off by higher price and bought nguyenkent.com instead.

Two days ago, I was reviewing my domains and something reminded me of it so I tried my luck. And here it is, my own KentNguyen.com that I have always been waiting for.

So as part of my new year resolutions, I needed to start a tech blog and begin sharing experience in my work and interesting skills I picked up over the years. A few people are sure very eager to read what I have to share. But mainly I just wanted to see if I can increase my presence and back links to my profile online.

For the start, if you haven’t known who I am already, head to my About Me page and see if you can spot anything unusual.

The cool thing about this blog is that it serves iPad differently and iPhone differently as well. Check it our for yourself.