The Light At The End Of The Tunnel

Have you ever found yourself walking down a long passageway only to meet a dead end sign? How about completing a form, tapping submit and only then finding out some fields were mandatory? If you’re a developer, how many times have you ended up with data in a weird state?

What do all of these have in common, other than being incredibly frustrating?

In all of these cases, someone decided to wait until the last minute to tell you something was unexpectedly wrong.

Don’t be that someone. The solution is simple. Fail early. Inform people of issues as soon as you can. Don’t let them waste time and effort to find out.

Put the sign on the entrance to the passageway. Mark mandatory fields. Throw an exception as soon as you encounter an invalid state.

Few things are more disappointing than finding out the light at the end of the tunnel is a train.

Do Nothing

When buying or signing a contract, I am often pressured to make an immediate call.

Do I want to lock in the price? I have to pay now. Do I want that contract? I have to sign it now. Can I commit to this deadline? I have to do it now.

No, I don’t. There will always be another sale. Another contract. Don’t let your fear of loss decide for you. If it’s a good opportunity, it is likely to be there later, too. And if it isn’t – so what? A better one would come along eventually.

When faced with a demand to decide on the spot – I developed an automatic negative response. I will not decide now. I will think about it. I will sleep on it.

By accepting that I must decide now I am, in fact, relinquishing control. I am letting the other party decide. They have their best interest at heart, not mine.

An interesting TED talk stipulates that intelligence is measured by one’s ability to keep as many options open for as long as possible. In that sense, not deciding now is the intelligent thing to do.

So when forced to decide on the spot, I do. I decide to do nothing. I’ll get back to them later. Or not.

Promotion Is Not A Bonus

I work with managers of varying levels on a daily basis. CEOs, CTOs, team leads – I’ve worked with them all.

One emerging pattern I noticed is that many of them are simply terrible managers. They may have been very good at their previous role. They do not seem to be half as good at what they do now, after getting promoted.

This is a known and very common phenomenon. I mentioned it before. Its called The Peter Principle and it basically says that people rise to their level of incompetence.

Imagine someone who’s very good at their job. Her managers want to reward her for her contribution and success. What do they do? They promote her.

In many cases, that is an unfortunate mistake. First, because you stopped a capable employee from doing what they do best. Second, because you now have a mediocre manager at best.

Of course, this isn’t always the case. The individual may prove to be a great manager. What does the company do then? Promote her again. This keeps happening until she no longer performs well, and so won’t be promoted.

What’s the lesson here? Think twice before promoting someone to a managerial role. Are they fit for the role? Can you afford to lose them at their current role? Can you find another way of rewarding them for their contribution?

Just remember that a promotion is not a reward. A promotion is a business decision that should benefit the individual and the business. A reward would be recognition with a nice side of bonus. I’ll have that sandwich any day.

Grab Success By The…

I grew up believing my success depended on how hard I tried. That it depended on the number of times I fell and got up. That successful people had to go through the same.

I am older now, and understand statistics better. The numbers tell us about two thirds of the world’s billionaires are self made. On the other hand, it tells us there are 2,755 billionaires in the world. 2,755 out of 7.674 billion people. That’s one billionaire for 2.78 million people.

The only good news here is you’re more likely to become a billionaire than you are to win the lottery jackpot by a factor of almost 20 (see here). However, the odds are still incredibly low.

So, being realistic, I set my bar a bit lower. I would still like to be able to retire early and focus on my passions. Not an easy goal, but achievable. How do I go about achieving this goal?

I recently came across an interesting formula. Entrepreneur Jason Roberts suggests you can control your luck, to a degree. He suggests you can increase your odds of getting lucky by taking more action around your passion and sharing it with as many people as you can.

Roberts coined the term Luck Surface Area. It is the amount of action you take multiplied by the number of people you shared your passion with. Increasing any of these two factors improves your chances of success.

It makes sense, really. The more time you spend on your passion, the better you get at it. The more people you share it with, the more likely it is you’ll reach someone who can make a significant change in your life.

So, what are you waiting for? Go out there and get lucky!

Don’t Talk Just KISS

I love efficient code. There is an odd type of satisfaction to writing well-performing code. Faster! Shorter! Less memory-consuming! More power! MORE!

Well, it’s easy to see how quickly this gets out of hand. Before you know it, your code is a hot mess of high-performing, totally unmaintainable blocks. What started as a beauty ends up being hideous.

There is an extremely important guiding principle I learned to appreciate and adopt (almost religiously!):

Keep it simple, stupid (K. I. S. S). Always prefer clear code to optimal one.

Once your code works, see if it requires any optimisation. You may be surprised to find it doesn’t. Your easy to read, easy to maintain code may be good enough.

Keep your heavy guns for when you encounter performance issues. Try to contain the “smart” bits. Extract them to a clearly-named function. Assign them to a well-named variable. Don’t let optimisations destroy the readability and maintainability of your code.

And always, always opt for the simplest solution.

Lastly, I have to say this rule seems to apply to everything else in life. Don’t over-complicate things. In most cases, you will find the simplest explanation is the right one. The simplest way to perform a task is also the easiest.

Simple is easy. It’s easy to remember. It’s easy to repeat. It’s easy to explain. It’s… Just that simple.

Goodbye Yellow Brick Road

I consider myself a creative person. It’s hard to be a developer without a passion for creation. I love inventing new things and exploring new ideas. Being open-minded is important to me.

There are things in life, though, that are better kept unchanged. Reinventing the wheel doesn’t always work. In fact, a new wheel is hardly likely to beat the one we already have.

I’m not saying we should stop exploring new ideas. We would probably still live in caves had we not explored new ideas. However, for the most part, we already have it figured out.

I’ve seen people try to implement a click event by measuring the time between a mouse-down and a mouse-up. I won’t go into how unnecessary that was or how buggy.

Before you try implementing your own solution, check if there’s a known one that works. Quite often, you would find the existing solution is rather elegant.

Opting for an existing solution will save you time twice.

The first time is when you solve your problem quickly. The solution is already there. It’s tried, tested and it works.

The second is when you face problems with the solution you implemented. You will likely find many others who faced the same problem and solved it already. Reddit, Stackoverflow, even Google. They’re all there to the rescue. You’d find an answer.

When you implement your own solution, the situation is different. You’re in uncharted waters. No one, or hardly anyone, has walked down your path before. When you get stuck, you won’t find easy answers. You may not find answers at all. You’re on your own.

So this is my advice to you. Stay on the beaten path. It’s beaten for a reason. Avoid isoteric software libraries. Look for common solutions before implementing your own.

Stay on the yellow brick road if you want to get to Emerald City. Stray and… Who knows what you may face. There be monsters. You have been warned!

Cover photo taken by Seph Lawless¬©, from Bizarro: The World’s Most Hauntingly Beautiful Abandoned Theme Parks

Upgrade Complete

This is a blog about constantly improving. It’s about getting better, at least in some way, every single day.

The number one factor when trying to improve is experience. The more experienced we are, the better we become.

But not all experience is as valuable. Not all experience improves you in the same way. I see two main types of experience: constant and variable.

Constant experience is gained by doing the same thing for very long. It makes you very good at that one thing. Quite often, it also means you would struggle with change.

Variable experience is gained by changing your scenery regularly. It means facing new challenges and new opportunities regularly.

Both types of experience are valuable. It is important to be conscious of the type of experience you wish to gain, though – because you can’t have both. You know, time and space constraints and similar annoyances.

I opted for gaining variable experience. I feel it helps me develop. While I don’t gain the depths of knowledge some gain in a very narrow field, I gain a broad range of tools I can apply to new challenges. I also get to meet new people. This usually leads to more learning experiences.

This is partly why I enjoy contracting. Every few months I am faced with a new challenge. Every project is different. Every project provides new problems to solve. Each one introduces me to new people.

I owe a lot of my experience and skills to being a contractor. Depending on your life goals – are you gaining the right kind of experience?

To Find Love, Stop Seeking You Must

When I was young, I remember relationships seemed beyond reach to me. Everyone seemed to have a girlfriend but me. I was frustrated.

The years passed, and I’ve had a few reasonably long relationships. More importantly, I am now happily married and could honestly not have asked for better.

I spent a lot of time thinking about how I ended up here. I really wanted to share my experience in the hope it could help others.

I finally reached a conclusion. Almost every single thing that worked out for me in life, came when I wasn’t hungry for it. I know it seems counter-intuitive at first. When you think about it, though, it makes sense.

Investors find you more appealing when you’re not desperate. Your future spouse is likely not to be drawn to you if you seem to eager. The distress is a warning sign, and people detect it and keep their distance.

And so, my humble advice is this: before looking for a relationship, be happy with yourselves. Appreciate the value of being alone. Don’t concentrate on finding the one. When you feel complete, they will come. This works in business, too. Stabilise your business before inviting others in.

Not only will it make you more attractive, but you will be negotiating from a position of strength. So, my young padawan, stop searching. It is within you that you will find that which you seek. And may the force be with – sorry, got carried away again.

Behold My Creation

As a software developer, dealing mostly with virtual creation, I hold special fascination towards physical creations.

This is why I find 3D printers fascinating. Creating something tangible from bits and bytes feels like magic.

Unfortunately, I don’t feel 3D printers are quite there yet. They’re still too expense, too slow, too large. I am sure that will change with time.

In the meantime, we have accessible paper printers. It’s quite amazing what we can do with those.

Aside from the obvious printing of documents, a home printer is a great way to produce a wide range of other tangible things. From productive to decorative, the range of ideas is astounding.

For productivity, check out some planner templates. You can print sewing patterns or greeting cards.

You can print games, from crosswords to snakes and ladders to the more exotic Dragon Magazine’s Search for the Emperor’s Treasure and The Awful Green Things From Outer Space. You can print Dungeons & Dragons adventures and trendy Print-to-Play games.

For recreational projects, search for printable paper craft. You’ll find printable and foldable robots and other fun models. You can even download my transformable version of Optimus Prime.

I personally find the versatility of home printed content exciting. I hope you share the excitement!

Just Take It

Most of the time, I have to work hard to reach my goals. Nothing seems to come easy. In fact, it’s often an uphill struggle.

Every once in a while, however, this pattern breaks. Out of the blue, an opportunity presents itself. Often, it presents itself as a challenge. It would take me out of my comfort zone to accept it.

I love these challenges. They have proven to be my greatest opportunities to evolve and improve myself. This is how I ended up co-authoring a book (which you can order here). This is how I ended up getting interviewed for a podcast. This is how I more than doubled my contracting rate in under 8 years.

For opportunities to find you, you have to be out there. Get your CV out. Connect with people, both online and offline. Every once in a while, a proposal will present itself.

Be open-minded. Consider the worst-case scenario. Is there a risk involved? Can you afford to take that risk? What is the reward? Is it worth the risk? Once you did that, you might find it makes sense to take the leap. If so – go for it!

Life is full of opportunities. We can easily cruise through it missing them all. How comfortable are you with the notion of looking back and knowing you had all these chances to do something awesome and you let them slide?

Next time you are challenged out of your comfort zone, try taking on the challenge face-on. You never know what could happen.

I may get commissions for purchases made through links in this post.