Full Stack means understanding and working on all parts of a system.
Electronics Systems require understanding chips & sensors
Cryptographic systems require mathematics and threat modeling
Games - 3d, game theory, networking
This course focuses on Full Stack Web Development.
Which technologies are full stack?
Being Full Stack does NOT mean knowing a set of technologies. It means knowing the layers and the principles by which they operate and connect.
What are the web layers?
There are, basically, four layers:
Can be a static page in a browser, an ajax -, or a mobile app.
Your code runs on the user's device with restricted previliages.
In all cases, the frontend is the user faceing side of the system.
The input/output mechanism of the web application.
Can be a home pc, data center rack or a virtual container in the cloud.
On the backend your code is king.
It is where the complex, secret, and long-running tasks should run.
The backend is the "heart" of the web application.
The network connects the front-end, the back-end and the WORLD.
The internet is based on the TCP/IP protocol.
The web is based on the HTTP protocol.
Other important web protocols include: SSL and WebSockets.
DevOps is about setting up your development and production environments,
using tools such as source control, build tools and package managment;
and automating your processes.
It is a the vital glue that helps the application work.
Are there any general full stack principles?
- Staying agile
If you want your code to be easy to write, make it easy to read.
- respect the code
- write documentation
- utilze tools
- follow standards
- perform regular code reviews
The art of programming is the art of organizing complexity
automate standard procedures
Beware of bugs in the above code;
I have only proved it correct, not tried it.
- create automated test suits with unit, integration, acceptence tests
- ensure changes to the code do not break existing expectations
- keep the tests and code in sync and together at all times
- catch problems as early as possible
ensure there is sufficient visibility into both the technical and business aspects of the system
technical: timings, throughputs, resource usage, etc
business: visits, sells, funnel interactions, etc
“The best way to predict the future is to implement it.”
- make your working units (tasks) optimally small
- create a short and focused production loop based
- analyze team & process through monitoring and feedback
- learn from failures & errors. Fail forward
What are the typical tasks for a full stack developer?
- Analysing project specific processes and data.
- Writing code, tests, automation scripts and documentation.
- Creating monitoring dashboards and alerts for both the application and the underlying infrastructure.
- Analysing the current state of both the code-base and the running application.
- Fixing bugs, improving performance and usability.