Just learn everything

Unsolicited advice for anyone seeking to learn computer science or software development in 2023.

It's no secret, in the facility I'm in, what I do for a living. I am the computer guy, and I have spent most of my life, as I am sure many of reading this have, as the "computer guy". This as you know has resulted in a life full of fixing every printer around me and being asked a lot of the same questions. My entire childhood I was absolutely fascinated with the family "windows 95" and then XP home desktop, I built my own and first installed Ubuntu at 13 and I pretty much lived on it until I finished high-school (I have a Ubuntu tattoo I've had since graduating in '09). I now have to live with the regret of giving up programming around 2010, when I decided to hastily run off on a 12 year vacation from computers by trying as hard as I could to ruin my life as fast as possible. I often think of where I might be, or how skilled an engineer I might have become if I had just not given up in exchange for prison time and addiction.


I decided to stop right around the time that smart phones and mobile apps were exploding on to the market. Coming off the tail of the '08 financial crisis, about to enter the most glorious decade for technology and interest-free VC startup money the world has ever seen. A decade where you could find an online way solve whatever trivial problem (most likely in PHP, Rails was just popping off), slap together a JQuery front-end and a MySQL database and you were IPO'ing in no-time. Just think, this is when it just becoming popular to sanitize DB inputs! ;)


That, along with before-mentioned back-end language would subsequently go on to spark a massive, overblown `cyber-security` industry, where new-grads who have barely opened a terminal, most of whom couldn't overrun a buffer if it was `strcpy`'d straight from an HTML form, would make 6 figures a year staring at GUI's and running scans on log files. Approximately 25 million people would end up becoming software developers by the end of this time, and a good percentage of them would go into the business solely for the tech salaries and might learn one or two high-level languages their whole career. Some, later on, wouldn't even learn a language, they would learn a subset of a language called a "javascript-framework". This would be great for millions of people this entire time, and their cups would overflow with blessings from the almighty moore's law, keeping most everyone from ever noticing the steady decline in overall developer performance and the ever growing layers of abstraction over abstraction between them and the gigabytes of all heap allocated, mark+sweep collected, and often, leaking memory.


Electron Go Brr


Sadly…This time is no longer upon us. No more is it expected that VC-backed startups must scale to 1/3 of the planet before becoming profitable. We are approximately either almost exactly 3 Days - 5 1/2 Years from Chat-Gippity doing the job of every 2nd or 3rd Web developer, along with UI/UX Designer, Data analyst, and Scrum Master 😉

Hey, didn’t you just say you started programming over again in 2021

Why yes. I did.

Why would you do that? If you have such a shitty outlook on the industry?

Great question, I’m so glad you asked…

Because I have a computer in prison, wtf else am I going to do I love it. If I had millions of dollars and never had to work again, I would undoubtedly be a FOSS dev.

Well whoop-dee-do… 🙄:

And wait a second.. Isn’t it pretentious to have a conversation with yourself like this in your own blog post?

You’re damn right it is..__ good call

My point here is that, in my opinion, as both unsolicited and completely speculative as it may be, this industry is no longer going to be a refuge for those who just want a cushy job, who were never really interested in CS or technology, to lie low at their huge corporate firm and collect a fat paycheck. I don’t think that I am alone in this opinion, in fact I think we are moving towards this being the accepted view at this point.

Says who? What do you know about ‘this industry’?

Damn I can’t sneak anything by you… Ok. I admit I pulled that out of.. Wait what did we say about talking to yourself in the blog post?

Jeez you have done way too much time in solitary.

Where I am going, and indeed the whole point of this post, like the title says, is to just learn everything. This is a post for those people who have asked me what they need to know or what language or framework they should learn. I am simply saying that it doesn’t matter (kinda).

Who in the *** would ask you for advice on anything?

I’ll let this one slide, because that is a damn good question. Who the hell would ask me for career advice?

One answer, as you might guess, is a lot of other currently, or formerly incarcerated people who are looking to not be resigned to manual labor.

The real answer, is that it doesn’t matter who asked me, or why. I believe that it doesn’t matter whether you are a high-school honor role graduate thinking about your College Major, or a 28yr old who just finished your first county jail sentence looking to finally straighten your life out. This brings us to our question:

So what do I need to learn?

The straight answer is pretty much all of it.

Even if you do end up being a web developer and never once in your career have to consider where your programs data lives in memory, actually have to use pointers, or other various lower level concepts. In order to set yourself up for success in the kind of industry this is turning into, you are not only going to want to know how to program and use existing frameworks, but you are going to want have to have skills and knowledge to separate yourself from 10 other people who can do the same thing all fighting for the same job. It may seem like the jobs are getting easier, due to innovations like copilot and other generative AI tools.

Yeah, It’s getting so much easier that the easier jobs will be done more and more by LLM’s, leaving the more difficult jobs and concepts (like debugging horrible chatgpt code) for the rest of us.

What I mean is, there is no secret to getting good at this and there is no one magic language you can learn in 2023 to get a job and make the highest salary no matter what you see on youtube. Why is computer science looked at differently than something like structural engineering or physics? Doubtless because you don’t need a degree, and really all you need is a computer and a whole bunch of time. My point is, if this was the case for any other kind of engineering or physics or chemistry, I don’t think people would be treating it the same, and thinking it’s something they can pick up in a few months and make a career out of.

Not only do you need to learn how to program, you need to learn about the endless icebergs of existing programs, technologies, frameworks, libraries and platforms out there, and the technologies all the way down the stack that those technologies depend on, that are relevant in our lives as devs.

Think about things like libgit2, nginx, glibc, libcurl, openssl, x11, QT, GTK, HTTP, REST, TCP, UDP and a million other libraries, protocols and programs are, you at least need to know what they are and what they do, and sometimes generally how they work or what their api looks like or what compatibility issues each might have. You need to know what a compiler, a linker, and interpreter, LSP, AST, and an API is, what a mutex, a hash-map/set/table, a linked-list, tree, stack, queue. You get the idea.

I’m not saying you have to learn and love every second of the frustrating and painful process by any means, but if you don’t enjoy learning new things constantly, if you don’t enjoy the logic and puzzles and problem solving… If you don’t enjoy a challenge that grows exponentially by layers and layers of complexity in each part of the stack, then it might not be up your alley, and that’s okay. There is absolutely nothing wrong with that, it’s really not for everyone, much like physics or organic chemistry or medicine isn’t for everyone either.

People might get upset hearing that, especially coming from me, and if I’m honest I’ll admit it absolutely does sound pretentious. Maybe it’s the fault of all the “Learn ${language} in ONE hour” Youtubers, or the tiktok influencers who say they got a 6 figure job after “learning to code” in 90 days, why they get upset and hearing this about programming in particular.

I believe that those who will be successful in the long run will be those who take the time to gain the experience and to learn their way around all the layers, not just their comfy corner of it. From the ground up, from the logic gate to the web server. So I think these days, the only answer to: what you should learn, is really you just need to learn everything.

(And don’t start with Python, but that’s a 🔥take for another post maybe)

</rant>

Disclaimers:

I have taught a bit of programming, and No: I'm not just giving people a short douchey answer like that when they actually ask me.
Also, some of my observations earlier in the post are because I was away not just from this culture, but the whole internet for over a decade, as the last time I was programming was '06-10'. Also, I'm absolutely not claiming that I somehow know all of this. I'll be the first one to admit that I'm an expert at nothing, and this is one of the biggest regrets I have about walking away for so many years is all the knowledge and experience I missed out on.

Thanks for reading this.

-Preston

If you have any comments or questions hit me up @ P@eza.rocks

2024

Magic isn’t real

6 minute read

Any sufficiently advanced technology is indistinguishable from magic.

Back to Top ↑

2023

Just learn everything

8 minute read

Unsolicited advice for anyone seeking to learn computer science or software development in 2023.

Gratitude

1 minute read

How I got here is already far too long, so I must include a separate post for all the credits and gratitude I need to extend to those who made this possible.

Back to Top ↑