Ask HN: What are the reasons behind your success as a self-taught programmer?
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 ] threadBeing 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.
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.
One of my side projects even got venture funding (and not in 2021 when things were overheated -- back in 2003).
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.
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.
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.
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.
So my answer is
Doing programming related stuff almost everyday (excluding job)
It is a good idea to get a formal credential, it makes it easier for HR to fiend peace with a resume.
Interesting how one feedback loop can guide you through your whole life
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.
#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.
The primary reason behind me being where I am is probably curiosity.
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.
Along the way, I managed to study most of a CS curriculum, but I didn't have that as a goal.
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.