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.

A Debt That Can Never Be Repaid

I’ve been writing code for over twenty years. In twenty years, I’ve learned there’s never enough time to write all the code I want to write.

Developers have been struggling with the constraints of time since the first lines of code were punched into cards. There is never enough time to add all the code we want to write into the program.

I’ve seen this problem tackled in many different ways. TO DO lists, TO DO comments and tech-debt tickets are just a few. The principle is always the same: take a note, leave it for later.

And, without fail, the same thing happens. The software grows, the requirements change, new requirements are introduced. The tech debt never gets addressed.

This is a problem. Tech debt can only be one of two: important or unimportant. If it’s unimportant, keeping track of it is just noise. Why do it? If it’s important, we’re knowingly leaving a problem to fester. This is even worse.

If there’s one lesson I’ve learnt from experience, it’s this: don’t take on technical debt. If this means delaying a new feature, so be it. Be transparent with your constraints. Deliver a done product, not a patched solution.

There are few things more frustrating when coding than to find a three-year-old TO DO in the code. Is it still valid? Should I investigate?

If it deserves keeping track of, it deserves getting done. As Nike said, just do it.

Let Me Sleep On It

Experience has taught me there’s truth in the saying that location is everything. Having lived in amazing homes in poor locations and decent homes in great locations, I am sold. To me, the amazing home in a poor location is nothing but a golden cage.

Choosing a decent home has a price, however. It means less space to store things. Which means one needs to be smart about their storage solutions.

The most significant and efficient solution I have to date is my guestroom bed. It’s an Ottoman and I bought mine from IKEA. It has served me well for over seven years, and still serves me to date.

Other than its mattress, it really is nothing but storage space. It’s built as a hollow, sturdy frame. It has a compact mechanism allowing me to easily lift up the mattress. That mechanism also means I need no space around the bed to open it, as it opens upwards.

If you, like me, are looking for smart storage solutions – then I highly recommend checking out the Ottoman beds. Rest assured, you’ll have plenty of extra storage space.

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

Keep Your Comments To Yourself

I’ve been writing code for well over 30 years now.

In 30 years of coding, I learned my code has to make sense to me long after I’ve written it. Later on, I started working on code shared with others. My code had to make sense to them, too.

When code got really complicated, I used to add a comment to explain it. I thought that would solve the problem. It didn’t.

Comments rot. We update the code, and forget to update the comments. Sometimes, the change happens far from the comment but still affects its correctness.

Quite often, comments imply our code would not be clear without them. This, in turn, means when I try to understand the code where it is used I am likely to have to navigate to its definition to read the comment.

Other comments are just the result of habit and add no value. Worse, some comments just add to the confusion.

I have learned to avoid comments almost entirely. It took me years to understand what self-documenting code meant, but I get it now.

Be explicit. Name your constants, variables, functions and classes based on what they do. Make sure the name is accurate. Avoid abbreviations.

If a line isn’t clear – refractor it. Extract a meaningful variable. Extract a well-named function. Move it to a well-named class.

With this insight, looking at my earlier attempts at clear code… Well, I have no comment.

(You can read about this idea in depth in Uncle Bob’s Clean Code)

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

Watch It

I don’t watch live TV. The whole notion of being fed content with no control puts me off.

For years, that was the primary way to consume content. TV, radio, even newspapers. We had very little control over our content, if any.

Then came VOD. Then came music services that let us listen to whatever we wanted. Then came Netflix. Nowadays, there’s no reason to be force-fed content.

Admittedly, if you’re a sports fan, you have little choice. If you can’t wait to watch the next season of a show, you have a problem, too. These are probably the only cases where you need live TV.

The rest of us? We can save money. If you’re not watching live TV, it’s very possible, depending on your country, that you can stop paying for it. In the UK, it’s as simple as going here.

So if you’re like me and prefer to choose your own content – stop paying for a service you are not using.

If Only I Could Take Back Time

My time on this Earth is a finite resource. I can’t get any more to what I have. Sure, I can live healthy and make sure I live a bit longer and enjoy the time I do have more. But that’s about it.

This is why I grab every opportunity to avoid wasting time. If I can skip tasks, automate them or speed them up, I’ll do it.

This is why I find the “play speed” feature to be so great.

A lot of websites offer this feature. Most predominantly, YouTube does. Every time I watch a tutorial or a guide, I look for the option to play it faster. This makes sense because quite often, the videos are slow by nature. The presenter may be taking their time. They may be derailing. They can usually go faster.

Imagine a x1.25 speed on a one hour video. That video now plays in 48 minutes. That’s a 12 minute gain. In some cases, even x1.5 works. In those case, you save 20 minutes per hour!

So the next time you watch an online walk-through, look for the option to play it faster. You may get a lot of your time back. Magic!