Basics
Key Questions
What is the difference between hardware and software, and why does my computer slow down?
How do computers run?
What happens when I press 'Run'? (Compilers vs. Interpreters)
Why do we have so many programming languages?
What is 'Open Source' and why is it safe to use code written by strangers?
What are containers?
What are lower and higher level languages?
What languages work best for prototyping, speed/performance, large teams/apps, web interactivity, data science, scaling up?
What is the cloud, compute, storage?
What is on-premises?
What is virtualization, virtual machines, hypervisors, key management systems?
What are APIs/services, monoliths, microservices?
What are the advantages and disadvantages of monolithic vs microservice architectures?
What are low code, no code, and WYSIWYG tools?
How do you solve problems with computers and code?
Learning Objectives
Learning Objectives
Track your progress as you learn
Hard Truths
The hardest part of building software is not coding, it's requirements.
Requirements are usually specified by business owners who have no idea the complexity involved with every extra word included on the spec sheet.
Trade-offs need to be made after considering tech stacks, cost, manpower, security, timeline, business risks, policy blockers.
But none of these can be done with poor understanding of foundational technologies that make the web tick.
If you're good enough, you can use any language/framework/libraries to build crazy stuff, but doing so can be inefficient and low ROI.
Almost all architectures/tools/frameworks are good at some stuff and lacking in others - the key is to make informed choices for the problem we're solving, not be dogmatic.
Business processes, service processes, policies can block technical and lead to unnecessary poor outcomes.