3 ms·
Let me start by saying that it's not impossible, I know this for a fact because I did it. I'm 19 years old, I don't have a degree and a few months ago I landed
by DanWaterworth 15y ago
Let me start by saying that it's not impossible, I know this for a fact because I did it. I'm 19 years old, I don't have a degree and a few months ago I landed my first job. I'm working as a software engineer.
Having said that however, don't for a moment think it will be easy. I've been programming as a hobby since I was nine and, after finishing full-time education, I spent the best part of a year learning and brushing up on my skills. Crucially, this was not something I did in my spare time, but continuously; I was effectively in full-time education.
There are two distinct pools of knowledge that it's in your interests to nurture: theoretical knowledge and practical knowledge. You will only be effective when you have a solid grounding in both. I may have made the mistake of focussing to heavily on the theoretical, but by working is possibly the best way to gain practical knowledge, so I'm addressing the imbalance.
There are a few topics which I focused on that have proved to be invaluable to me:
* Data structures and database design,
* The web stack (by which I mean the entire stack, how does TCP work or the OS schedule threads),
* Functional programming,
* Compiler internals,
I would have also greatly benefited if I'd had known more about asynchronous programming. Specifically, how are synchronous programs translated to work asynchronously, ie, how do threads work? How is CPS conversion an alternative to using threads?
Good luck.