HACKER Q&A
📣 keyboard_user_2

How to thrive as a self-taught developer?


Hello HN,

I'm looking for advice, opinions, or stories of similar experiences regarding where I am at personally both from a career, and personal development, perspective. In brief, I am a "self-taught" developer working a comfortable job that is not stimulating who is plauged by decision paralysis on what are valuable next pursuits.

I entered the software development world three years ago after being offered an opportunity to "Learn on the job" from a colleague. This ended up being a fantastic opportunity for me as it both increased by quality of life through increased compensation, but more notably, I felt massively inspired by all I did not know, and massively accomplished when pushing a feature to production. During this time I went on a learning rampage which resulted in both further career success (promotion) and a desire to write personal programs for hobby. I was hooked.

It's worth noting that the career success is possible not because I was some sleeper pro developer, but rather because the team I was moved onto had some code/product quality issues already, and hard work was eagerly rewarded, so I stood out. In fact, I'd still consider myself a pretty sub-par developer, at least by HN standards (more on this fallacy in a moment).

While it was great to learn on the job, I also learned how much I was _missing_. I do not have a computer science degree, and suddenly, the inadequacy perception crept in. I don't have a public portfolio of fantastic problems I've solved or products I've built. I don't have a score of one trillion on leetcode. I hadn't yet sold my first SaaS startup to Peter Thiel who then shook my hand firmly. I believed I must take immediate action to remedy these shortcomings.

This is where we land currently. A JVM developer who day in and day out at $BIG_COMPANY makes minor changes to SpringBoot REST APIs and does not currently have a plan for self improvement as it could be called. I know a single programming language with a below-expert-about-mid-high level of competency. I'm constantly thinking about various directions I could move in, including learning a new programming language, honing my current language skills to expert, improving my academic side (i.e. taking online courses on math, comp sci, reading SICP), working on some personal project, and more. The underlying issue that arises from choosing one of these pursuits is a tree of desicions to be made which ultimately results in paralysis.

I'd appreaciate any and all input/commentary. Likely best to focus on what I can do outside of work as it's not currently feasible for me to change jobs.


  👤 PaulHoule Accepted Answer ✓
I'll talk about side projects.

At any point in time I usually have three side projects, two of which I am really making progress on and the other is aspirational. I think that's fine.

For instance last month I wrote a Python chess program because it was something totally new to me but not that hard and there is a big literature on the subject (see https://www.chessprogramming.org/Main_Page) It is a good match for my tester and I want to take it to the chess club so I need to make it respect time control so I've been rewriting it in Java where interrupting threads is like falling off a log.

I code a lot of Python and Java and was able to code up the Java engine quickly because I really understood alpha-beta at that point and had a good set of test cases. If I get to the point where the Java engine is really refined it would be a good project to code up a faster one in Rust or Assembly or something, but it would be a disaster to try writing your first chess engine in a difficult and new language.

I have another ongoing project that involves making interactive cards like https://bsky.app/profile/up-8.bsky.social/post/3lbqfh7pesc2x

Some key ideas are:

Kanban: only have a limited number of projects in progress so your really finish them https://en.wikipedia.org/wiki/Kanban

Also choose projects that involve a certain budget of learning, risk and innovation. It is one thing to do something new with familiar tools and to do something old with new tools. Doing both at the same time is really dangerous. Think of how an athlete trains progressively.


👤 overu589
I have always thought it was the only way to thrive.

All of this processing you have to do internally. You can and should learn from others yet the work has to be done on the inside. Stop oversharing.

Your reliability is your only commodity. Someone somewhere will give you an opportunity, something will come along, being competent and prepared at that time is the winning strategy.

Don’t be a pain in the ass. Be like a monk with your own problems and inconveniences and others will grow to admire your composure and cool under pressure.

Don’t wait for good luck, continuously train to be that useful badass!