Hacker News new | ask | show | jobs
Late to the Party
8 points by couldbeanything 1417 days ago
I am a programmer with about 1 year of experience in python. I think I am fairly good in this with some project in machine learning as well. Covid-19 messed up my college and did'nt pay attention to my computer science engineering bachelors subjects. With me being a new comer to this tech world, I realize I need to do my part with core concepts like, Hardware, networking, PC making, OS , microprocessors .. along with incorporating my learning in ML and other new technologies. My wish to learn the core concepts has nothing to do with any requirement with my current profession in programming. But I do feel like I lack core concepts and have this peer pressure to know these things, to be able to call myself a 'techie' . Has anyone ever felt this need to learn all these basics ? The quantity of this thing is so huge that I know cannot be achieved in a single month or two. And I know this also requires physical applications in some areas to fully understand it. I am unable to comprehend how to incorporate all the old school computer basics into my daily learnings along with being able to have time to keep up current programming technologies. So yeah:

1. I would love to hear experiences of people starting new into the computer world with not just basic - turn on and shut down kinda start, but actual core concepts, how did you start and what things did you start with, how long did it take and what was your motivation ?

2. What things should I start with ? Courses, links, materials on Operating system, Computer Hardware, Networking, Microprocessors/controllers, PC making and any other topic that you feel like I should add to it.

3. It started purely from my genuine interest in these topics, but over the time I feel like I am under peer pressure to know these things.. Is this the right away I am addressing this phase/thought ?

4. Anyone has a good idea of how do I Implement learning this large amount of knowledge learning along with new constant learning in profession based technology learning.. Will it burn me out ? Any thing on this will help.

6 comments

Instead of trying to learn everything, I would suggest to get confident in your ability to learn.

There is way too much tech to learn everything, thinking you need to learn everything will remove all the joy as its literally impossible and also unnecessary.

Instead just build stuff. If you build things you will almost always encounter things you don't know, that's fine, it's an opportunities to learn new things. If you do it enough you will feel totally fine not knowing everything as you'll know that you can learn things when you need them. Also with each project you'll gain new skills and expand you knowledge making the next project easier.

If you want to try some hardware stuff; get an arduino or raspberry pi or similar, find a fun project and start hacking!

Just ignore peer pressure, find back your genuine interest and curiosity, and pursuit it.

I would highly recommend you work through nand2tetris [1] project using the book [2]

This will help you develop a good conceptual understanding of digital electronics, compilers, VM, OS while implementing your own implementations of each of these. This should suffice to help you no longer bothered by lack of concepts. There are some cool extensions [3] also possible including but not limited to implementing your own machine on real hw using FPGA, designing your own trivial graphics processor (A project that I'm working on). The book and the website list many possible extensions. This I think is the best bang for buck to get a good overview of the foundations.

You can then do a real deep dive of any of these foundational subjects using so many resources available online, a good starting point to explore them will be teach yourself cs. [4].

And while all this knowledge is great, it will also be useful to focus on soft skills being a good team player, doing your bit to help teams which you are a part of to succeed and if you are part of toxic teams having enough confidence in your experience and knowledge to switch :-).

And gain all this knowledge seriously, but please don't take it seriously ;-)

Btw, you seriously aren't late to the party. Good luck, enjoy the party!!!

[1] https://www.nand2tetris.org

[2] https://mitpress.mit.edu/books/elements-computing-systems-se...

[3] https://www.nand2tetris.org/copy-of-talks

[4] https://teachyourselfcs.com

I was in a similar situation after finishing my Master's in Math, switching my focus from Finance to Data Science/Software Engineering and looking for my first job in tech. Although I could code and had done some small projects on my own, my knowledge of most topics in IT was very limited.

I remember I used to attend all kinds of tech meetups and feel like I don't belong, like I'd missed out something in my education compared to people with CS backgrounds. I identified especially these areas I was lacking in most: Web Development, Networking, Security, Operating Systems, Hardware, Databases

I found short courses (mostly on YouTube) on each of these topics to understand the basics. Later most of them kept appearing in my tasks at work and I dove deeper in them.

As it turned out over time, I hadn't missed out that much and now with 4 years of experience, working as SDE at Amazon I feel more knowledgeable than a majority of people with CS backgrounds.

Yess, that feeling of not belonging is relatable. I am also picking courses on various platforms and planing to do it in parallel with my current professional learnings.
I really like this list of books:

https://teachyourselfcs.com/

Did you finish your bachelors?
Yes, just this month
Wait, I’m confused: how did you manage to pass all those classes (OS, networking, hardware, etc)? Or have you failed them all and still graduated somehow? How is it possible that you just got a degree in CS and you are asking these questions?

Something doesn’t add up here…

Hi,

First of all, it's never late to party. I can give some insight in my also small experience (just graduated). Anyone is welcome to - and please do - correct me in case you disagree.

I will not include courses from university as references but I will tell you what I did through the years outside of it to enhance my knowledge.

I found a really cheap book titled "Python - Introduction to Computers". Basically it was an intro on the exact core points you mentioned (besides ML) but also gave related python code examples. For instance, "how does a packet travel in a network" here is the theory and here is a code example. It won't be of any use but in case you want to translate the chapters here is the book (https://www.cup.gr/book/isagong-stous-ypologistes-me-ti-glos...). You might also watch some free CS courses from unis online (https://pll.harvard.edu/course/cs50-introduction-computer-sc...).

In the mean time I was interested in micro controllers and I was watching YouTube guides on Arduino and Raspberry Pi projects. Here is one of my favorite channels, very newbie friendly (https://www.youtube.com/c/Dronebotworkshop1). Made some stupid creations, had fun, and learned something.

Raspberry Pi's got me into linux. Hence I installed a linux based OS as my main system and read online guides, watched videos etc. Favorite intro place for me: https://linuxjourney.com

At the time I had a chance to get a free Cert related to networking. For a reference check Cisco CCNA (it wasn't that one but the topics were exactly the same). So I studied on the basics of networking, topologies etc. Again, best intro resources for me were on YouTube: https://www.youtube.com/c/PowerCertAnimatedVideos/playlists

For some time I ditched Python since I was into web dev and distributed systems. Studied other languages and web frameworks, other technologies like docker etc. Some courses on Coursera might be enough for you to start web dev in case you got bored of YouTube and needed something more structured.

Now you say "I feel like I am under peer pressure". I feel exactly the same. But don't really think of it. I know with the stuff I did/do I barely scratched the surface. And it is fine. We aren't magically born with knowledge and we all learn in a different pace. My goal is to learn or practice on something new every day. Not in a crazy way, take one or two hours a day for example and read about something you don't know or write a piece of software that does something new.

To sum up that's my small experience in tech so far. I hope I leave you with a good feeling about the future. Can't help you on PC making though, never been into it and my knowledge is limited.

After since I posted this, last night before sleeping, I went to internet and came up with a plan to cover every topic I have ever wanted to learn with computer basics. Its starting to feel less overwhelming. We aren't magically born with knowledge and we all learn in a different pace. My new schedule is slow, but It has everything I have ever wanted to do. ! thanks for the links, will check them out.
Good to hear! Have fun.