Ask HN: What are the reasons behind your success as a self-taught programmer?

41 points by newsoul ↗ HN
Considering that you started programming on your own as a self learner and have found success (whatever that means to you) as a programmer in life, what do you think were the reasons behind that?

Was it:

1. Formal CS or Math education alongside or later on?

2. Pure grit and consistency in completing stuff you started

3. Working in real projects at industry

4. Something else entirely

99 comments

[ 3.2 ms ] story [ 183 ms ] thread
Obsessive curiousity and geniune love for programming. Grit, work ethic and growth mindset follows pretty naturally when you love what you do :)
Came here to say this. For me it was just obsessive curiosity and loving building stuff with computers, whether it was websites, or trying to code up a virus.
Computing is such a wonder to me that I couldn't imagine my life without it. This invention fundamentally changed what it is to be human imo and if you can accept and embrace this fact then everything else comes naturally.
“Obsessive curiosity” is a fantastic phrase I failed to mention in my response - 100% agree!
Working in real projects at industry. Early on I was exposed to a large project in the airline industry, with an incredible architect. Lots of time had gone into preparing the project and codebase to make sure that developers could be productive without stepping on each others toes.

Being exposed to that project and an architect willing to explain not just what but why, really put me in the right mindset early on. I learned principles instead of technologies.

1. Working for a couple of small startups in the early years, which meant writing code 8 hours a day for 6 years and being responsible for delivering not just features but full products to users from the very first year.

If my first job had been at a larger company, filled with meetings and processes, I never would have built up strong confidence writing code, coming up with solutions and building things.

2. Starting out 20+ years ago, when Googling the answer wasn't possible also played a huge part. Coupled with a 1 above, it meant that the only way to solve a problem or to work out how to do something was to work through it over hours and days myself.

My early solutions to unusual problems or tech shortcomings were not always ideal, but they always worked.

Both of these helped build up confidence in my own abilities, a knowledge that there's no problem I couldn't solve, and the certainty that I was fully capable of building whatever I wanted or needed to build.

(comment deleted)
Being able to combine programming knowledge with knowledge from my previous domain. I don't need to be particularly great at either, but they multiply together to make me very useful.
2 and 3 along with constantly building side projects. you build enough side projects, to completion, and you get much, much better.

One of my side projects even got venture funding (and not in 2021 when things were overheated -- back in 2003).

Number 3; after that it was a relatively smooth ride. From industry experience came products I made that the industry want to buy and from that came co-founding companies.
I have a CS degree but I am mostly self-taught. For success metric; I am working at FAANG and finishing a master’s at a top university, and my manager spoke to me about a promotion 2 months into my job with arguably zero prior experience.

The reason is curiosity and grit. The more you learn the better mental models you have, the better you can do analysis and extrapolate. As for grit, I am looking to find my ceiling.

I have met devs without any curiosity and … it shows.

If you have two degrees and work at a big company, how is it self taught? Seems like you would have learned a lot from both of those things. Genuinely curious.
The degrees served mostly as an outline of the things I needed to learn and the path I needed to follow. Most of the learning however was the outcome of my own curiosity and tenacity / grit.

I entered the university not knowing how to program/code. By the second semester I had built a small game for a project on top of some 2D graphics rendering engine, and then I wanted to add UI on top. Since I wanted it to not get stuck while waiting for user inputs, I used multithreading to decouple everything.

While that isn’t particularly interesting, it’s an example of me going far beyond what was asked only because an idea got stuck in my head.

My studies are full of such examples and projects. I didn’t have the highest grades because I was too busy learning other stuff, working on my own projects and so on.

Anki.

I would have no career without Anki. Every time I pull out some obscure technique or command and make peoples' jaws drop, I have Anki to thank for that. From VIM commands to remembering which PHP functions are nounverb() or verbnoun() or noun_verb() verb_noun() to bash tricks to Python libraries to web tools to curl options to network terms, every day I pull out something to make myself more valuable to my employer. And other employees know they can usually find their answers with me. And I really so smart and experienced? No more than any of the others, really. But with Anki every single small trick and technique is remembered and ready for use.

4. I was always programming for fun and intellectual curiosity. That means I was always very much interested in creating a "nice" program as well as solving some problem. And "nice" involves low maintenance, robustness, little external dependencies, understandable, well abstracted and documented code, that is as perfomant as possible given the constraints.

Because I did these things mostly for myself, the span of problem domains is big, I did backend web stuff, frontend stuff, CLI tools system daemons, embedded things, game-related things, audio-related things etc. This breadth of topics helps tackling anything my current employer throws at me (which is mostly also interesting problems).

This is success to me: I do what I like to do and am able to do it well enough to be happy with the results and I am fast compared to others while doing it.

E.g. last week I was asked if I could do a local groupchat webservice for the wifi of a theatre piece (so visitors can interact with the actors on stage, without having to install some kind of internet bound app). Four hours later the working prototype including nice handwritten CSS and realtime message-passing was done. Feels good.

I found job as dev at the beginning of my degree, so i think i can say that im self taught

So my answer is

Doing programming related stuff almost everyday (excluding job)

Based on my observations of most programmers, everyone is self taught. Some are self taught on their own and others are self taught while undergoing formal education. People who teach themselves to program are often more enthusiastic and so there is probably a correlation between that and success.

It is a good idea to get a formal credential, it makes it easier for HR to fiend peace with a resume.

I am hesitant to say it, but completing projects is probably optional...
Because it's fun, I really have a great time programming. For me, it's like playing a video game.
Learning on the job, and putting long hours to make it work.
I studied classical music composition for 10 years before (re)discovering my love for programming. It taught me so many things that have been valuable when learning this craft. Algorithmic thinking and self discipline, staying creative under time pressure and building big systems with infinite amount of details.
My grandfather gave me my first computer when I was a kid at 7. Since then those boxes had something like a magic aura for me and the more I learned about it the more I was curious about how stuff worked. Ffwd 17 years later and I'm a self-taught full-Stack Web-Developer. I'm wondering where I would have landed if I didn't had a computer back then, maybe in retail, I dont know.

Interesting how one feedback loop can guide you through your whole life

Always testing my understanding of new programming languages, libraries or concepts by playing around with them until I could mentally "walk around" them like I can mentally walk around my neighborhood[1], then being drawn to the next thing just outside my field of experience and understanding.

In short not moving on before mastery, then moving on after mastery.

[1] I think this analogy is fitting because the drive that makes write five versions of a three line function feels similar to the drive that makes me choose whatever path I haven't walked down before when going to some errand or another.

Having a series of great mentors over the years.
The real answer for me (and probably many other folks who are talking financial success): 1. Genuine interest in tech 2. Long periods of time alone with a computer 3. Being fairly early in a big section of the industry (web) 4. Aggressive "speed running" salary which got me near really smart folks
This is a great question. I have an art degree in Animation and Visual Effects, now I’m about 6 years in as a VFX Pipeline Engineer.

#2 and #3 together are what I credit my success to. Showing authentic passion during interviews is also a hard requirement, as well as having good values that successful hard working people tend to value. For example happily and confidently admitting when you don’t know something. Also having the integrity and self esteem to admire and show open respect for colleagues who know more than me - ESPECIALLY if I notice myself feeling insecure towards the person for whatever reason(like we’re hired at the same with same title but they clearly are ahead of me). So far my 2 most valuable mentors were initially colleagues who made me feel insecure About my skills but, I literally locked my kicking and screaming ego in the closet while proceeding to befriend and become vulnerable with them to the point they adored showing and teaching me stuff. Advice for this insecurity: learn something from these people then directly incorporate it into your work and proudly give them credit for it. Poof, you gain some of what they have that you didn’t and your crying ego in the closet cant say shit now can it hahaha.

Above all else, I give myself credit for always taking interviews even though I knew I was probably out of my league and terrified - because it wasn’t the job I was after but rather the confidence I imagined I could have for the next one. If you can’t be confident and charismatic in interviews then i don’t see how you can het hired anywhere for anything that matters to you.

I feel like computers have been there for me even when no one else was.

The primary reason behind me being where I am is probably curiosity.

Hello!

16-years-experienced, self taught developer/designer/engineer here — currently working with international enterprise/corporate customers as a professional services consultant for a large cloud services provider.

1. I don’t have a formal background in CS, but I have had to learn the industry-standard ways of solving common problems and continuously assessing order of complexity for both systems and code along the way.

2. I started with nothing but a design background and skillset, and I had to learn to supplement it with technical skills at each stage.

3. I really feel like my “success” (which is completely relative btw) is due in part to the time during which I picked up the core development skillset. Back in the early 2000’s there were no mentors around. You couldn’t just stick an evil error message into Google and expect to get the answer to your issue in 20-30 seconds. There was no Stack Overflow (and for a good while, still wouldn’t help).

Sometimes you had to monkey patch the problem. Other times you had to find an alternative route. Sometimes you’d realize that what you faced was a real limitation of the tech you were working with and you’d have to either devote the time to fixing it or give up and switch to something else completely. And yes, that was before you could submit a PR on the Github repo with your patch, so the next release would almost always break your “fixes”.

4. Multi-disciplinary interests and skillset. Having a highly-fungible skillset and being really interested and fascinated about the world around me has contributed immensely to both the technical as well as the professional side of my career and growth. It helps me earn trust quickly with customers, but also provides deep insight when attempting to model a real-world, manual process into a machine — which, in my experience is about 95% of the reason people pay us to do this job.

Curiosity mostly. I liked to push what was possible on any language or system I was working on. I liked hacking systems or languages to do things they were not "supposed" to. That's always very educational :)

Along the way, I managed to study most of a CS curriculum, but I didn't have that as a goal.

1,2,3,4

Did all of that. What was more is not being afraid of failure and new challenges.

Ive been constantly exposing myself to different and harder topics.