What I Wished I Knew As A Full Stack Developer
[This is an original thought-piece by YK Goon; previously publishedhereand reposted here.]
Making computers do your bidding and getting paid for it is immensely rewarding, but picking a platform to master is like choosing a country to live in or picking a telco plan, you can’t win.
When you start out and is somewhat programming curious, you’ll probably wonder if you should just go with what the school taught you or have a fling or two with Ruby and Go just to taste what polymorphism and polygamy feels like.
Notice I say platform, not language. A noob question to ask would be “sir, which programming language should I learn in order to make money?”
A platform is larger than the language. Windows is a platform, C++ is one of the many languages within it, everything else Microsoft build are within the platform. Flash was a platform, ActionScript is the language, the web is the platform. Don’t worry if the wordplay confuses you.
Your career, if you ever have one, doesn’t solely depend in the language you master. It’s the life of the platform that keeps you in the game.
So what platform is winning you ask. Well, not Flash for one. But you can imagine by the device you’re reading this from. It certainly look like iOS, Android, and Windows 10 are winning. What about Chrome, Firefox or web in general? That’s a force to be reckoned with too.
Since they are all ‘winning’, how the hell do you choose? And what if you’re interested in robotics, and none of those indicators are of any help.
One approach is looking for the common denominators, and apply a principle on top of it.
Here’s a potential flactrum: the longer something has been around, the longer it tends to stick around. Think I-Ching, Shakespeare, and email. It doesn’t matter if you hate them to your guts, they possess the qualities of antifragilities not found in their alternatives.
So let’s examine the things that are common characteristics among your digital lives. Doesn’t matter which religion you subscribe to, be it Apple, Google or Microsoft, I can offer you one thing they can’t run away from: Linux.
If you use Android, it’s Linux. If you use the web, chances are they’ve been served to you with Linux. If you use Apple products, the OS was build on top of OpenBSD, which is compliant to Unix philosophy, some consider a cousin to Linux. Our digital world is increasingly run from servers. Linux rule servers hands down.
Not every good developer needs to be full stack, but anyone worth his salt should know the stack he’s working on as deeply as he can. Since there’s a good chance Linux is gonna be part of the stack in any project you do, it pays to make it part of your life.
If you’re a Windows boy that has never ventured the house; or you’re a Mac but has never dared touching the terminal, it’s time to get out of the comfort zone of point & click.
Start a small project of automating something you do by hand everyday. Here are some ideas:
- Replace Dropbox with BitTorrent Sync server.
- Host your own blog and/or email.
- Auto download TV episodes when they’re released.
If you need a machine that’s always online, one of the easiest ways to get one from DigitalOcean.
You can start a server cheaply and pay as you use. If you have no idea what you’re doing, pick a server combo that installs WordPress along with it. That way you get a blog running from the get go.
As you start programming your server, you’ll be wondering why on earth do they make computing so difficult. Get going with your small project, nothing worth doing is ever easy. Give it some time and you’ll discover the beauty of what they call the Unix philosophy. By then you’ll think how they made it so easy.
Playing with Linux exposes you to many languages, and they don’t require you to jump through hoops to install them.
Largely speaking, the wider your skillsets are the better off you’ll be. Before you embark on being the master of one thing, you can’t be a jack of all trades without knowing a bit of Linux.