Not-So-Enlightened Path to Coding Enlightenment
A comprehensive learning path for getting into the tech industry, from Linux fundamentals to modern web development and beyond.
A friend of mine is finishing up a BSCS and looking to get into the tech industry. Ready to code? Here’s the list I sent him…
Foundation
- Pick a Linux distro (Fedora or Ubuntu). I would recommend Fedora if this is your first encounter with Linux.
- Read How to Become a Hacker
- Read The Art of Unix Programming
Tools and Environment
- Master Vim (http://www.vim.org/)
- This is kind of a personal preference, as are all editors.
- I recommend mastering vim because it is ubiquitous. You can run it on all of your workstations (Linux / Win) and you can usually depend on it being installed on just about every Linux server you SSH to.
- Being able to use the same editor everywhere has its advantages.
Programming Languages
- Read Learn Python the Hard Way
- Read Pro Git
Web Development
- Install Django, then run through the tutorial
- Read Test Driven Development with Python
JavaScript Ecosystem
- Learn JavaScript (fundamental language skills)
- Learn modern JavaScript frameworks (React, Vue, or Angular)
- Learn NodeJS for backend development
- Explore full-stack frameworks
Additional Skills to Pick Up
- Cryptography - Understanding security fundamentals
- Web services and REST APIs - Modern application architecture
- Security - Essential for any developer
- Networking - Understanding how systems communicate
Database Technologies
Start with:
- MySQL
- PostgreSQL
- MongoDB
Move up to:
- DynamoDB (Amazon’s AWS)
- Modern NoSQL databases
- Oracle or Microsoft SQL Server if you have to
2024 Update Notes
Since writing this in 2016, the landscape has evolved significantly. Consider these modern additions:
- Cloud platforms: AWS, Azure, GCP fundamentals
- Containerization: Docker and Kubernetes
- Modern JavaScript: ES6+, TypeScript
- CI/CD: GitHub Actions, GitLab CI
- Infrastructure as Code: Terraform, AWS CDK
The fundamentals remain solid, but the tooling has advanced considerably. The core principle still applies: master the fundamentals, then build on them with modern tools and practices.