TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: As a self-taught programmer, how did you fill in knowledge gaps?

6 pointsby curious16over 2 years ago
How did you start your journey as a self-taught programmer?<p>Did you use books or online university courses to fill in the gaps in your knowledge? Or did you read academic papers? Which among them are worth mentioning?

7 comments

8bitsruleover 2 years ago
I first took an intro class for a widely-used language, to get &#x27;oriented&#x27;. I didn&#x27;t have access to that language then, so tried others with similar syntax. To learn one better, I modified other people&#x27;s programs to add desired features. Then I started aiming my programs at hardware ... where reaching the goal is easy to verify! and the value of optimizing can easily be tested. By then I knew enough to tell the difference between a kludge and art, and read up on that.
fynisover 2 years ago
For my journey, which is still starting (I am just now comfortable to apply for jobs, gotten an interview, but not employed yet), Harvard&#x27;s CS50x was an amazing &quot;Bridge gapper&quot;, but outside of that it&#x27;s been courses on things such as Udemy, LinkedinLearning as of recently, and Youtube. I haven&#x27;t gotten too far into it, but there is this github repo created to supplement the knowledge learned in a computer science degree titled Open Source Society University as well.
cantrembermyactover 2 years ago
Start? Put time in front of the keyboard—to be a programmer requires nothing more than writing programs. Beyond that, it&#x27;s simply learning and applying, just like anyone else.<p>I try to be deliberate in what I do and seek the simplest solution. In this, I hope, to avoid &quot;seeing everything is a nail.&quot;<p>I learned a lot from Emacs, honestly, from core programming concepts, to how a community can survive and thrive, to the importance of software freedom.<p>I&#x27;m currently working through Nand2Tetris.
tsingyover 2 years ago
Here is how I start mine: <a href="https:&#x2F;&#x2F;github.com&#x2F;woadray&#x2F;bootcamp&#x2F;blob&#x2F;main&#x2F;README.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;woadray&#x2F;bootcamp&#x2F;blob&#x2F;main&#x2F;README.md</a>, where the goal is to build solid foundations in order to pass interviews. The rest can be learn on the job as most jobs are CRUD or data prep anyway.
smt88over 2 years ago
None of the things you mention are good at filling in gaps. They’re not useless, but they’re not very efficient or practical.<p>The best way to fill in gaps is to work with other people and learn from them. They may also be self taught.<p>Your gaps are other people’s strengths and vice versa.
munbunover 2 years ago
Anything you learn needs to be applied.<p>My advice I give now: start with CS50 and dive deep into all the supplementary reading.<p>Then build something every day.<p>Read books, watch videos, take a course. But above all, make sure you can apply it to something real.
themodelplumberover 2 years ago
Just to share my experience along those lines: I had done some basic generalist programming prior to university but no real server-side web programming and tbh not much programming for real work.<p>I got really pessimistic about programming after quitting the CS major in university. So for almost a decade afterward I refused to learn more about programming. I just had a bitter taste in my mouth about it. I was embarrassed and unsure about what had gone wrong for me.<p>Eventually I got into web CMS installation, configuration, and basic maintenance because I could design websites, but my clients really wanted them to be powerful and have tons of features on the back end too.<p>I worked through WordPress, Joomla, and MODx, got sick of &quot;enterprise-class&quot; anything because the maintenance burden was increasingly annoying and back-end GUIs were even getting annoying. Then I found the Textpattern CMS and saw how lightweight it was, in fact you could even use Textile. This was a couple years after the vendor for one of my favorite Joomla rich text editors literally quit maintaining the plugin, sold my customer data off to a telco firm and I started getting spam for VOIP services.<p>I bought the book &quot;Textpattern Solutions&quot; and learned TXP&#x27;s XML tag system. The tags allowed simple if&#x2F;else logic. I could really easily work with the templating features in a logical and elegant way, and I started to share what I learned online.<p>Among those templating tags was the TXP:PHP tag, which allows PHP use within the CMS. I thought, &quot;that&#x27;s funny...I can run PHP scripts inside a blog article?&quot; And did some of that, realizing I&#x27;d definitely be getting back into programming more often.<p>Then there was also a plugin written by Stef Dawson called smd_query, which allowed custom DB queries against the CMS database, within articles, templates, wherever. He also added some helpful conveniences that made everything seem so easy.<p>So this was all a very quick way to go from &quot;can install a CMS&quot; to &quot;can do CMS templating&quot; to &quot;can do web back-end programming&quot;.<p>But you can pick up so many gaps this way, too. Especially on a deadline.<p>Pretty soon I was running a wine distributor&#x27;s network of websites via some back end services that could be managed in the CMS due to the tight integration with various customizations to native features. I was then able to connect other third-party vendors with various corporate sales teams via the back end and everybody got their work done together using the tools. I realized I was being paid for helping the entire company do their work more efficiently--this was a long shot from making a simple website or blog.<p>(For a time they even used Textile for editing articles, but after a while it got annoying for some specific articles and we moved away to rich text in that case.)<p>Eventually an organization in the bay area reached out as they had an extremely heavily-customized TXP install running their online purchasing workflow. There was a lot of custom code written by a veteran coder, they gave me access and it was weird to realize--I can understand this and I could maintain it.<p>Another organization got on the phone and interviewed me about taking over their custom system. Their programmer got on the line and was practically begging me, like &quot;look, this thing is just run by a big CSV file. All it is is some scripts, some CSV, some code here and there,&quot; and I started to realize that most of this stuff wasn&#x27;t the big secret that I thought it was, based on the way I had previously approached my CS studies.<p>Still, sometimes the old CS principles help even though I&#x27;ve had to ask some embarrassing questions about them along the way.<p>To fill gaps from there, I found it really helpful to read books that are just below my level. If I&#x27;m reading books that are above my level, I have my own way of approaching those if I need to, but I don&#x27;t read them the normal way usually and I don&#x27;t personally find it helpful to use the books themselves for early-level learning purposes.<p>I also learned that I learn about gaps better through anti-patterns and &quot;don&#x27;t do this&quot; articles so I specifically search for those sometimes.<p>Finally I pay close attention to remarks by developers of the systems that I build on. If there&#x27;s an API I use, I try to pay attention to the release notes and things of that nature. Some of them are impossible to track because changes are so frequent and complex, but others are pretty straightforward. I use my own documentation system to track these because release notes and blog posts are almost never part of system documentation (lamentable but true).<p>Anyway. Just one example, just part of the story in a way, but I hope that helps a bit.