After making a personal assessment and basing on where I want to be in the next 3 months, I designed this learning map to guide me into what I have to learn and how to measure success. Most of the skills here are measured against the simulations project and other 2 side projects that have to demonstrate these skills.
It has 9 main parts(plus 2 other parts), and each part has its own general goal and skills to be learnt other that section. It also have links to resources to be used to achieve that. After starting each part(with a competent understanding of the concepts, the outcomes should be clearly defined.
Big question to answer: How to learn and learn both efficiently & effectively
Skills covered: Focus & Concentration, Problem Solving & Critical Thinking, Reading to Understand, Active Listening, Motivation & Commitment
-
Understand the Feynman Technique so you really learn over the course of the next journey instead of just using your short term memory.
-
How I Rewired My Brain to Become Fluent in Math: subtitled the building blocks of understanding are memorization and repetition.
-
One Sure-Fire Way to Improve Your Coding: reading code!
-
You can increase your intelligence: 5 ways to maximize your cognitive potential
-
How to ask good questions, Julia Evans.
-
Learning How to Learn: Powerful mental tools to help you master tough subjects, from Coursera
-
Learning to learn by John Sonmez
-
The tao of programming: a set of parables about programming
-
Taking Ownership Is The Most Effective Way to Get What You Want
-
The Conjoined Triangles of Senior-Level Development looks into how to define a senior engineer.
-
Ten Principles for Growth as an Engineer, Dan Heller
-
Don't Call Yourself a Programmer, Patrick McKenzie
-
Your non-linear problem of 90% utilization, Jason Cohen: why constantly running at 90% utilization is actually counter-productive.
-
Evidence-based advice on how to be successful in any jobs: most self-help advices are not research-based. The ones listed in this article are.
Learning outcomes: Learning methodology and Improved learning plan
Big question to answer: How do computers, the internet, and websites work? What I should know in Computer Science?
Skills covered: Data Structures, Algorithms, Discrete Math, 2 & 3 Tier Architecture
-
How Does the internet work: this from LearnCode.academy and this from The New Boston
-
9 CS topics from Teach Yourself Computer Science: an opinionated set of the best CS resources
-
Learn about how SSH works, and how to SSH into a server
-
Learn a little about Symmetric and Asymmetric encryption as well as Hashing
-
Learn how to manage SSH keys
-
Master the command line, in one page
-
Read this great article about programming
Learning outcomes: Solve more than 50 question from Cracking the Coding Interview
Big question to answer: Understanding advanced topics in web development and Javascript
Skills covered: Object-Oriented Programming, Problem Solving & Critical Thinking, Command Line, Debugging, HMTL/ CSS, Patterns (MVC), Design Patterns, Algorithms, Data Structures, UI/UX
-
WEB application APIs => Fundamentals of HTML5 : Offline Applications and WebRTC
-
Document composition => Semantic HTML and IndexedDB: Cursors, Indexes and Ranges
-
Style guide, BEM and SMACCSS
-
CSS style linters and formatters
-
CSS Grid,Transforms,Transitions,Animations and SASS here
-
SVG and D3
-
Learn common algorithms and data structures
-
Learn some common design patterns
-
Learn the difference between OOP and Functional Programming, Pros and Cons of each
-
Learn how to Optimize Code
-
Learn how modules work and here
-
Learn about Promises, and Async Await in ES7 here
-
Once you have a good grasp of Javascript this talk will be a game changer.
-
You Don't Know JS (book series) - Series of books diving deep into language.
-
JavaScript Closures Demystified - Covering closures. From basics to use cases. Has useful comments.
-
Understanding Hoisting - Detailed explanation of the concept of hoisting in JavaScript.
-
Array operations - Covering the usefulness of Array’s map, reduce, and filter methods.
-
Promises - Learning promises step by step.
-
Async/Await - Tutorial showing the advantages of consuming Promises via async functions.
-
Pure functions - Answers the question »What is a Pure Function?« epicly.
-
Using Fetch - Describes thoroughly how to use the Fetch API to receive and send data.
-
JavaScript Design Patterns - Classical and JavaScript specific design patterns and GOF design patterns
-
Web storage APIs and and Caching
-
Service workers and web workers
-
Regex
Learning outcomes: Side projects plus sims project demonstrating gained knowledge
Big question to answer: How to improve Web Performance and PWA
Skills covered: Holistic / Big Picture Thinking
-
Learn about network performance: improving delivery and minimizing files and images
-
Learn the differences between HTTP/2 vs HTTP/1.1
-
Learn how the Critical Render Path works
-
Learn about pre-fetching resources
-
Learn about code-splitting
-
Learn about CDNs
-
Learn about compression
-
Learn about Caching and all the places you can use caching
-
Learn how to do Load Balancing using Nginx, then try load testing on it
-
Go over important performance topics following this tutorial
-
Learn about the key things that allow us to create such apps: HTTPS, App Manifest, and Service Workers
-
Learn about when to use Client Side Rendering and when to use Server Side Rendering
-
Learn the benefits of using Next.js or Gatsby.js instead of implementing your own server side rendering.
-
App profiling and Google LightHouse
Learning outcomes: Improve the performance of sims project
Big question to answer: How to master React
Skills covered: UI/UX, Mobile Development, Patterns(MVC)
-
React → Do these in order: one, two, three. Then head on over to the official documentation and read through everything.
-
More in depth tutorial on react here it is
-
Learn Redux → Watch this course. Don’t let your head explode. Then read the documentation for it as well.
-
Learn about Event Sourcing and CQRS which inspired Redux
-
ReactiFlux learning plan
-
Learn React Native
-
Advanced React: Code splitting, performance, uncontrolled components, etc. WesBos course and here
-
SPA deep dive here
-
React's Virtual DOM and Angular's Incremental DOM
Big question to answer: How to master the backend NodeJS
Skills covered: APIs
Learning outcomes: Improve sims project
Big question to answer: How to test as pro and deploy with confidence
Skills covered: Test-Driven Development, End-to-End Testing, Debugging, Attention to Detail
-
Learn the current testing landscape and the tools you can use
-
Learn about the different types of tests: Unit Tests, Integration Tests, End to End Testing
-
Learn how to write good tests
-
Learn about TDD and BDD
-
Learn how to write Asynchronous Tests
-
Learn how to use Mocks, Stubs and Spies
-
Learn about Snapshot testing
Learning outcomes: Improve sims project tests and testing strategy
Big question to answer: How to DevOps
Skills covered: DevOps,2 & 3 Tier Architecture,Client Vision Alignment, Holistic/ Big Picture Thinking
-
Learn why containers are different (and sometimes better) than VMs
-
Learn to create a Docker container
-
Learn how to use Docker Compose to orchestrate services
-
Learn to use Docker Compose to make developers’ lives easier
-
Learn about relational and non relational databases
-
A plain english introduction to CAP Theorem
-
Safe Operations For High Volume PostgreSQL (this is for PostgreSQL but works great for other DBs as well)
-
Zero downtime database migrations (code examples are using Rails but this works great for any programming language)
-
Algorithms Behind Modern Storage Systems ACM Queue
-
Learn when one is better than the other in certain situations
-
Learn how to manage sensitive user information like passwords
-
Learn the difference between cookie based authentication and token based authentication
-
IasS and PasS Browse some of the most common offerings by the big players like AWS, GCP, Azure and IBM Cloud
-
Learn about functions as a service like AWS Lambda and using Serverless
-
Create your own Digital Ocean Droplet and run a server
-
Learn about serverless architecture
-
Learn about Monolithic vs Micro Services architecture
-
Learn about Continuous Integration, Continuous Delivery and Continuous Deployment and how you can manage large projects to run smoothly
-
OAuth 2.0 and JWT
-
ElasticSearch
-
MongoDB
Learning outcomes: Improve sims project
Big question to answer: How to secure your product
Skills covered:
-
Avoid the most common security vulnerabilities like Injections
-
Learn how to avoid XSS or CSRF
-
Learn how to use HTTPS to make the web safer
-
Learn about Access Control, SQL Injections, Command Execution, etc…
-
Learn why you would want to keep all software up to date
-
My First 10 Minutes On a Server - Primer for Securing Ubuntu
-
Reckon you've seen some stupid security things? everything not to do
-
Static Application Security Testing (SAST) and Dynamic Application Security Testing (DAST) here
Big question to answer: Machine Learning/AI and IOT in JS
Skills covered: Technical
Learning outcomes
Big question to answer: What else to learn
Senior developers spend time understanding the WHY of a technology. Why does this problem exist? Why does this framework exist? What problem is this library solving?
-
They also understand HOW things are connected. To get started on thinking like this, mind mapping is a great tool to get familiar with. A great JS example on mind mapping.
-
This course by Cory House is a great example of the things you would need to know to connect the dots on the javascript environment
-
Learning about data structures, algorithms and other computer science topics with this book The imposters handbook and this
For other skills like: Stakeholder Management, Adaptability, Estimation, Leadership,Team Dynamics, Willingness to Ask Questions, Organizational Functional Awareness, Seek & Requests Feedback and others not included here; I'm working on them daily throughout simulation's project. I've also applied as a mentor in ALC 4.0 which will help me to improve on those skills.