Posted: September 1st, 2015 | Author: Kent Nguyen | 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.
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.
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.
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.
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.
Posted: May 12th, 2015 | Author: Kent Nguyen | Filed under: Perspective | No Comments »
Depending on which side you are, it could be a myth looking from the outside. Or it could be a hero story you are saving for your kids.
Imagine one day you are riding a bulldozer running at full speed smashing through whatever on the way, nothing seems to be able to stop it; and then the next day you are on a scrappy boat heading towards huge waves, a tiny shake feels like that’s the end of it.
One email could make for a bright clear day or it could break it before the day even begins. But despite countless of how-to-start-your-day kind of advice, you simply cannot resist reaching for the phone and check for new messages before even going to pee.
It’s amazing how a small bump on the road feels like a disaster in the beginning. And then you got knocked down so often to the point that every crisis feels like a to-do on a sticky note, waiting to be scratched off in a few hours. You learnt to stand in front of the problems smiling and handing out name cards as if nothing ever happened.
I don’t know if entrepreneurial mood-swing is even a common thing but I am quite certain that it is worse than a teenage undergoing puberty or PMS blues. An uptick in sales number of the month or a signed contract could be ruined completely by a slight change of plan due to unforeseen circumstances. Your mood is something you very often lost control despite making every effort keeping cool.
Despite the harsh reality, it is really quite a rush when you see the impact of what you did right. No doubt it is very addictive for an adrenaline-junkie like me. I wouldn’t trade it for a life in a navy battleship, analogous to having a stable corporate job, any time soon.
Fence sitters, do you want to take a side? Maybe this can help you to pick one.
Posted: February 15th, 2015 | Author: Kent Nguyen | Filed under: Personal | 1 Comment »
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.
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.
Posted: December 31st, 2014 | Author: Kent Nguyen | 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 ;)
Posted: August 25th, 2014 | Author: Kent Nguyen | 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.
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:
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.
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.
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.
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.
Posted: August 2nd, 2014 | Author: Kent Nguyen | Filed under: Personal, Perspective | 76 Comments »
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.
- 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.
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.
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.
Posted: April 8th, 2014 | Author: Kent Nguyen | 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.
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?!
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.
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.
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.
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.
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.
Posted: July 3rd, 2013 | Author: Kent Nguyen | Filed under: Perspective | No Comments »
My iPhone wallpaper for past 1 year
It’s nearly 4am and I found myself wide awake, reconciling the TODOs and meetings for tomorrow and couldn’t get back to sleep. These days I can hardly define what is the clock that my body follows. Honestly, I wasn’t prepared for any of what has happened during the past 2 months.
Back in Nov 2012, I and my partner, Andy, started TGM Tech, which is a subsidiary of TGM Corporation – now more than a hundred-strong group. Only 6 months into the game, we connected with James and took the plunge together to form what is now Silicon Straits Saigon (website WIP).
Building own tribe
We went from a lean 5-member team to a still-lean team of 20 today in barely two months. We were incredibly lucky to have in-placed a very effective talent scout process that allows us to put together the amazing team today. Everyone single one of us is a misfit ourselves but these pieces somehow fit together one way or another. That’s a 4x growth and obviously it is still something I came back to pat myself every once in a while.
I learnt to run a “start up”
Because of the very different path that I took, I only graduated less than 3 years ago; only trained in engineering; have never worked in a big company; worked in one small startup for a year. When I decided to “come back” to Vietnam, I hardly had a good idea how things would be. Most startups were formed because of an innovative idea and/or technology, we didn’t. Most startups start from zero balance or some form of positive cash investment, we didn’t. Most startups in Vietnam don’t have an office, we did.
In a sense, TGM Tech was not really a start-up in the traditional definition being thrown around these days. We figured out the hiring process early, we created a fun working culture, we partly solved the revenue math, we renovated the office into a much better one just 3 months into the run… not without lots of help from overly-supportive friends and partners all around. We stayed true to the vision of creating not just “company” but a place we can call our own; I stayed true to my gut feelings and guesses (phew! it worked!).
Of course it’s not rosy all the way, we made mistakes, we fixed stuff and moved on. There were many ups and downs. There were times when the next month’s cashflow is unpredictable and frankly it’s really scary. I learnt to trust the process, go with the flow; I learnt to stay detached with the occasional tough choices needed to be made. And it was still not enough to prepare for what’s next.
And then I learnt to learn
The problems started to get a lot more abstract a lot more quickly. In the beginning it was simply trying to get enough people to deal with the increased workload, then it became maintaining the right balance between headcount and project pipeline. Soon, it became guarding the current team’s vision and working culture with 300% fresh personnels. We now have a slightly more formal responsibility with board as well as partners/investors. Adding the office relocation and renovation to the mix as we already ran out of space a month ago (that, by itself is an excellent tale to tell).
Whatever we thought we knew about running a company didn’t cut it anymore. We merely problem-solving’ed as they came, one at a time. I needed to see things in a new light, I needed to see things from 10,000 feet. The issue was how to fly high. I was trained with 1s and 0s, not with big words like “strategic direction” or “service differentiation” or “productivity optimisation”…
So I made them up as I went, I learnt to question and take small concrete steps for any abstract issues. I learnt from shoulder-rubbing chances I got with the big boys who are many years more experienced than I am. I learnt to not jumping up and down on unexpected situations.
Most importantly both me and my partners learnt to deal with the down-period by looking beyond the fact and stay positive.
There are times when thing would have to get much worse before it gets better. Most people failed at seeing beyond the obvious and let their will power down.
It is not easy staying positive or neutral during tough times but the rewards are always exciting. Like people said, rainbow after the rain.
It does sound cliché but it’s true that when you are in the “trough” zone, it’s difficult to look beyond the “mountains” and expect some day you will be “up there” again.
Posted: April 28th, 2013 | Author: Kent Nguyen | Filed under: Development, Perspective | 8 Comments »
While taking client works, it’s not uncommon to have to deal with bad clients. There are of course many kinds of such: the ones that don’t pay, the ones that don’t care what you do, or the ones that never satisfied with your work…
However, even the good ones (pay in time, committed, respect your work, rational …) are problematic in their own sense. In this post I’ll share my experience about whom I call half-baked or semi-technical clients.
Who are they?
There is the kind of clients who doesn’t know anything about technology, very typical energetic business guy who have an idea and just want to get it done. This is good.
And then there’s the kind who is as enthusiastic, and think that they know what it takes to talk technical. I found this to be the most time-consuming kind of clients to serve.
It’s not easy to spot them, they often appear to be nice, understanding and excited about whatever you proposed … in the beginning. They might also keep what they know to themselves and you can easily mistaken them as the non tech-savvy client.
Until… the project started.
Clear requirement, messy execution
Again, things are ok with scope and requirement. Since most of the work is on high level, it isn’t exactly technical and their thoughts are aligned with yours and they agree with your architecture model, how modules are structured and how the APIs to be designed, etc.. At this point most likely you already received your first upfront pay-check. The project’s prospect is rosy and full of rainbow.
Here’s the turn of the story, it becomes real messy when they are involved in the execution! First they think that they are giving suggestions to save your time by sending you links to StackOverflow issues. Then they also do the research for you by giving you bunch of websites to look at and say “I want this here combine with that there”. What’s the real problem here is that those SO questions are usually irrelevant or outdated. The sites that they gave are the options that you already taken into consideration before proposing the final solution. Hence you find yourself spending too much time shooting email back and forth explaining to them your choices and why the others were not chosen.
It doesn’t end there yet. When they are not convinced of your approach, they try to twist their words differently to how they understand the technologies and then “confront” you with the new version. After a few times if you are good then their version will be actually the same as yours except it is phrased differently, more lengthy, more complicated… and they are happy because they think they “improved” your design.
So far, you have not actually done much work except writing emails and stretching your brain to try to justify the underlying technical choices. Naturally, you are behind your schedule.
Destined for failure
The moment you give in and accept their way of doings, you unknowingly gave them the power and credit to continue over-shadowing your decisions. From here, you can see how it goes badly: they would question your moves, debate “technically” with you the best way to solve a quirk, even give you “minor tweaks” to the architecture that would give your heart a little break; or if requirements changed inevitably, they want to help you to “smoothen” the transition by suggesting how you should code it (urghhh!!!).
Oops, you allowed the devil in your bed.
The point is …
In the last week, I have sadly classified two of my clients into this category, one of them is actually a long-time client. There were times I kept asking myself why it was so energy-draining to speak to them and couldn’t really get out of it. Now that I kind of “get it”, I’m hoping by leaving my general observation and share my rant here, it would do good to others who are in the same line of business.
Sounds familiar to anyone you know or a specific incident you have? Leave it in the comments.
Posted: March 25th, 2013 | Author: Kent Nguyen | Filed under: Development, Perspective | 1 Comment »
What was it like
Two years ago, when I just started exploring my first job after graduation, I was very fortunate to be part of Anideo – A development lab where I was free to explore many new technologies.
Not only I had the chance to get my hand dirty with new programming languages including Ruby on Rails and Objective C, I also had the chance to meet and speak to a number of startups in Singapore.
At that time, it wasn’t a big deal at all to me, I just thought that RoR and iOS was really cool and meeting/sharing with the people in the same industry is just something that you ought to do in a working life. Little that I know, I was living in the future!
I was working with the top developers, made friends with people in the know-how, seen the top-notch designers’ work. Naturally, I learnt and extracted the best from people around:
- I used soft-gradient, soft-shadow in all my designs.
- I tracked all my projects with Git. All my works were on the cloud.
- I wrote my web application in Rails, deployed to Heroku, stored file in S3. Ofcourse, I ditched PHP.
- I made several iOS and Android mobile applications, with native and non-native languages.
I began sharing and enforcing some of the practices to my teammates:
- Enforced low contrast gradient, no hash shadow in web design.
- Tried to get people to stop using PHP and move to Rails.
- Tried to teach people to use Git properly.
- Made a decision to stop an old Rails 2.x project half-way.
- Started a small team to make mobile apps.
The practices were not really successful, the decisions were not immediately clear. I didn’t have a solid reason to make a convincing statement to the people. Everything was mostly based on gut and my own experience, not at all proven. That was over a year ago and things had been kind of the same since.
In just the past month, the dots started to connect and strangely everything I ever did a year ago started to make absolute sense to people who heard about. In the past week, literally almost everyday, there was news or an article published that gave credit to at least one of the technologies I tried to educate people.
There was a recognised trend of flat-design; A huge emphasis was being put on Ruby on Rails, more and more people want to try it out; Articles on the explosion of open source software credited to Git infrastructure; The rise of true “living software” made possible by Git and Ruby on Rails; Several companies rushing to get my team develop mobile applications for them.
I don’t know but are you willing to seek and catch the next wave?