I think there's a lot of advice floating out there about how to become a SWE, from well-intentioned but misinformed people. Some of the soft misconceptions which are commonly distributed:
- Proficiency in xyz language is extremely important. I think this is misunderstood to mean that becoming a Python/Typescript/whatever expert is what differentiates the pros from the bros. I would actually recommend studying the theory of programming languages from first principles, instead - Dan Grossman's "Programming Languages" class on Coursera is great for this. It lays the foundation for understanding how any programming language works, from a theoretical and mechanics basis. I was able to pick up new languages and understand concepts in existing languages way, way faster after building this foundation. The "10 hours to Python mastery" types of courses are a waste of time and focus on the wrong things in my opinion - invest the time in foundational knowledge instead.
- YouTube videos and blog posts are sufficient to become a proficient programmer. This is a bit of a con in my opinion. Both formats are like a sugar-heavy diet - you'll feel high and satisfied quickly, but in the long-term, the lack of information in these formats will starve you of high-quality information. Get into a habit of returning to first principles - figure out what the canonical textbooks are for the subject matter you are trying to learn about, acquire them, and read chapters out of them when you are stuck on a problem. This will deepen your understanding and give you a basis for exploring related subjects. Also, read the man page. Read the man page. Read the man page.
Also check out OSSU (https://github.com/ossu), which has a bunch of great recommendations for free/nearly-free courses that will complete a full CS curriculum. I lack a CS degree, so I periodically reference this curriculum when looking for a new subject to study in my downtime.
Happy to talk more if you're interested, we need more smart and capable individuals like yourself in this field.
You might have missed the part in my original outline, but I am already a proficient programmer with decades of experience in a number of programming languages. Also, I've taken theory of programming language courses at university.
What I'm lacking is hands-on experience in everything else that's relevant in the profession.
Like I've pointed out, I spent my professional career in academia, and although I've done lots of project work in the field, I doubt that the academic setting is comparable to professional software development.
I think there's a lot of advice floating out there about how to become a SWE, from well-intentioned but misinformed people. Some of the soft misconceptions which are commonly distributed:
- Proficiency in xyz language is extremely important. I think this is misunderstood to mean that becoming a Python/Typescript/whatever expert is what differentiates the pros from the bros. I would actually recommend studying the theory of programming languages from first principles, instead - Dan Grossman's "Programming Languages" class on Coursera is great for this. It lays the foundation for understanding how any programming language works, from a theoretical and mechanics basis. I was able to pick up new languages and understand concepts in existing languages way, way faster after building this foundation. The "10 hours to Python mastery" types of courses are a waste of time and focus on the wrong things in my opinion - invest the time in foundational knowledge instead.
- YouTube videos and blog posts are sufficient to become a proficient programmer. This is a bit of a con in my opinion. Both formats are like a sugar-heavy diet - you'll feel high and satisfied quickly, but in the long-term, the lack of information in these formats will starve you of high-quality information. Get into a habit of returning to first principles - figure out what the canonical textbooks are for the subject matter you are trying to learn about, acquire them, and read chapters out of them when you are stuck on a problem. This will deepen your understanding and give you a basis for exploring related subjects. Also, read the man page. Read the man page. Read the man page.
Also check out OSSU (https://github.com/ossu), which has a bunch of great recommendations for free/nearly-free courses that will complete a full CS curriculum. I lack a CS degree, so I periodically reference this curriculum when looking for a new subject to study in my downtime.
Happy to talk more if you're interested, we need more smart and capable individuals like yourself in this field.
Thanks for taking the time to give input.
You might have missed the part in my original outline, but I am already a proficient programmer with decades of experience in a number of programming languages. Also, I've taken theory of programming language courses at university.
What I'm lacking is hands-on experience in everything else that's relevant in the profession.
Like I've pointed out, I spent my professional career in academia, and although I've done lots of project work in the field, I doubt that the academic setting is comparable to professional software development.
Sorry I missed that. Hopefully my comment is useful for someone else then.