Hacker News new | ask | show | jobs
by mathieubordere 2664 days ago
I did the same thing when I was 28. I had some prior exposure to Java at university but that's about it. I took a year off from work to teach myself to become a software engineer. It takes hard work and you will doubt yourself while you're doing it. My advice is to get your fundamentals right, everything else depends on it. With fundamentals I mean, learn your algorithms, understand how a program actually runs by writing interpreters and compilers, understand the memory hierarchy, etc. After my year of self study I took a job that was not fully in line with my goals as a software engineer, but it gave me time to further develop myself and actually acquire some real experience in the field. I'm 33 now and working as an Embedded Software engineer, and in comparison with my peers I think I'm performing well, it all depends on your motivation and interest to put in the extra hours after work to 'make up for lost time'. I'm extremely happy with the choice I've made.
2 comments

I'd like to pivot to doing more systems / embedded stuff rather than web dev. Any chance you can share your experiences in a blog post or something?
>interpreters, compilers, memory hierarchy Those are nice if you want to do embedded and C. A complete waste of time for Frontend/Backend, mobile and desktop people in the beginnings.

Tell me why someone picking up Python/JS should learn the above mentioned things, rather than learn basic security principles and not pip/npm install blindly all the packages without checking the source? Change my mind.

Because in learning those things, you don't just learn 'facts', you learn generalisable patterns of thought.

The generalisability is more obvious in something like physics where the same physical laws apply in different domains.

Computer science doesn't have axiomatic physical laws, but it does have recurring concepts. If you learn about memory hierarchies in computer architecture, you can apply similar principles in dealing with caching systems in web-applications.

If you never want to rise above the role of software dev followed by probably losing your job at 50 something when you're deemed "too old" then sure, it doesn't matter