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:
Front-end,
Back-end,
the Network
and DevOps
Frontend
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.
Backend
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.
Network
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
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?
- Quality
- Testing
- Automation
- Monitoring
- Staying agile
Quality
IFYOUWANTYOURCODETOBEEASYTOWRITEMAKEITEASYTOREAD
If you want your code to be easy to write, make it easy to read.
--Uncle Bob
Quality
- respect the code
- write documentation
- utilze tools
- follow standards
- perform regular code reviews
{{Automation}}
The art of programming is the art of organizing complexity
--Edsger Dijkstra
{{Automation}}
automate standard procedures
- analysis
- testing
- generation
- integration
- deployment
Beware of bugs in the above code;
I have only proved it correct, not tried it.
--Donald Knuth
- 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
The number of states 3 JavaScript variables can have is greater than the total number of atoms of the Earth.
--Joe Armstrong
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.”
--Alan Kay
- 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.