The Biggest Trade-off
Published: 2021-02-15 14:28:53

# What is a trade-off?

A trade-off is, in its simplest form, a choice someone makes when stuck between two beneficial facts. You sacrifice one fact to have the benefits of the other because they __can't possibly co-exist__.

In software development, we make trade-offs __all the time__. They rarely ever are of great significance in terms of the program's performance, memory consumption, storage usage, etc although choosing the right one is important and usually depends on the situation. __But__ there are trade-offs where it is not related to the choices we make when building the software, but choices __we can't__ make when building it, which are of a much bigger concern to us.


# Things we can choose.

For example, in JavaScript instead of using `map()` you can choose to use a regular `for` loop where performance is critical. Or you might use a different algorithm that performs faster but uses more memory because even though you have sufficient amounts of memory you lack the processing power required to meet the demand.

Such decisions are easy to make, and usually take a couple of seconds once you decide what is __more crucial__ in the given context. However, there are:


# Things we __can't__ decide.

For example, let's consider a simple case. You live in a 3rd world country where the internet is awful & hardware is expensive as specially bred utterly fluffy dogs & cats.

- Can you run docker to learn it?
- Can you run Chrome with Vscode or Atom at the same time?
- Can you pair program with your mates whilst speaking over Discord and writing code using the great `live-share` plugin with other extensions you may need to write good code?
- __Can you even use a proper operating system?__

The answer is __no, you most likely can't__. You are stuck with a minimalist non-popular Linux distro that may or may not run your stuff, a Vim config which is next to nothing compared to an IDE feature-wise, and a very basic low-level compiler because interpreted languages with optimizing JIT compilation features on top with utterly broken & slow package managers are of a massive deal to your old crappy hardware and horrible internet. __You sacrifice your lifespan waiting for your project to get dependencies, compile & run. That's the biggest trade-off.__ Got no money for better equipment? Sacrifice a couple of hours of your life, that'll do!

Evidently, you are as invaluable as bok-bags to many recruiters. Not because you lack in skill, determination, experience, and all the things that __ARE significant__ for software development, but because you lack in __equipment needed__.


# What's the point then?

I ask myself this, __every damn single day.__ What's the point in embracing software development if you can't even do the simplest `Hello World`? Why forcefully try things that are impossible to do for you? Why?

The answer is always the same, __man do I LOVE it don't I?__

Yes, yes, I confessed. Pun me about it and all. But __seriously, I love it way more than I should.__ Every day I think about it, when I wake up, whilst eating, when sleeping in my dreams. I see videos about programming in my YouTube feed, I consequently have subscribed to all the subreddits about programming because I get to have so much fun reading, watching, reasoning about them. In all of my social media accounts, there is __at least one post__ that I've shared my happiness with the programs I've written & things I have learned recently that are about programming.

When all the odds are against you, and they give you only agony, seemingly massive in quantity, if you still hold on for some reason, __that thing is called love__. And if you love programming, there's no going back. For everybody who doesn't have those fancy Macs, with pretty setups or fast internet (or no internet at all) access, keep holding on. Because chances are, something will happen and you __will be__ in the place that you have always __dreamed & been longing__ for this long. Someday all your pain will become a genuine smile into your past. You'll look back and say "what days have begone". It all will seem like a dream. A dream where you fought, and won.

Keep fighting, your enemy is probably more stupid and less powerful than you think. Good luck in life,