To są moje przemyślenia na temat roadmapy dla Programistów, oparte na wiedzy z internetu i moim własnym doświadczeniu. W miarę dodawania treści, procesu nauki będę linkował wiedzę z danej tematyki.
Kim jest programista full stack?
Uniwersalny programista, który potrafi:
* pracuje we frontendzie i zna technologie frontendowe
* potrafi projektować API i pracować w projektach backendowych, może nie tworzy super zoptymalizowanych programów, ale te programy działają sprawnie i dobrze
* potrafi korzystać i operować na danych zawartych w bazy danych SQL i NoSQL
* posiada podstawową wiedzę z zakresu architektury, testowania, bezpieczeństwa, Linuxa, CI/CD
to proste, może działać we wszystkich obszarach związanych z wytwarzaniem oprogramowania i wdrażaniem oprogramowania
Obszary
- Frontend – wszystkie technologie związane z uruchamianiem programów działających w przeglądarce, na ogół napisane są one w JavaScript/TypeScript lub w innych językach i używające kompilatora WASM do konwersji na WebAssembly
- Backend – wszystkie technologie działające w serwerach lub w ekosystemach chmurowych (AWS, Amazon, Google Cloud, itp.)
- DevOps – zapewnia działanie serwerów i oprogramowania
- Bezpieczeństwo
- Architektura
- Relacyjne bazy danych i NoSQL
T-Shaped Skills
Programista nie może wiedzieć wszystkiego o wszystkich technologiach i zagadnieniach związanych z IT i wytwarzaniem oprogramowania. Można się specjalizować w 2-3 technologiach, nie więcej. Dlatego wiedza programisty, szczególnie FullStack przypomina coś w kształcie litery T, gdzie pewne elementy są znane lepiej, a inne tylko powierzchownie.
Discipline | Discipline | Discipline | Discipline |
---|---|---|---|
Skill | Skill | Skill | Skill |
Skill | Skill | Skill | |
Skill | Skill | ||
Skill | |||
Skill | |||
Skill |
Mapa dla programisty Java Full Stack
Zostawiam oryginale znaczenia, bo łatwiej się nimi posługiwać wyszukując informacje z danej tematyki.
Basic
Internet
- Basic Network and IP concept
- TCP and UDP Protocols
- HTTP
- HTTP Methods
- DNS and domain name
- Hosting
Computers
- How to OS works
- Process Management
- CPU, Memory and cache
- Thread and Concurrency
- Linux
- Basic Linux commands
- Bash script
- I/O Management
GIT
- Basic Git commands
- GitBash and Git tools
- GitHub
- GitLab
- Bitbucket
Developer Skils
- SOLID
- KISS
- YANGI
- DRY
- Clean Code
-
Basic Architecture
- Monolithic
- Microservices
- SOA
- CORS and Event Sourcing
- Serverless
- Basic Design Patterns (GOF)
- Basic DDD
- Basic TDD
-
APIs:
- Rest
- JSON
- GraphQL
- JSON-RPC
- HATEOAS
- SOAP
- Open Api
- Swagger
- Security
- HTTPS + TLS
- CORS
- Algoritsm: MD5, SHA, SCrypt, BCrypt
- OWASP
- Content security policy
- Authentication – Jwt, oAuth, Token Auth, HTTP basic auth
Frontend
- HTML
- basic tags
- forms
- symantic Web
- CSS
- basic
- layouts – CSS grid, box model, flex box
- responsive design and media queries
- CSS extend
- Object Oriented CSS
- BEM – Block Element Modifier
- Styled components
- CSS Module
- Sass/Less
- CSS Framewoks
- Material UI
- Reactstrap
- Bootstrap
- JavaScript
- sytanx
- dom
- Ajax/Promise
- ES6
- Hoisting, Event bubbling, Scope, propotype, shadow dom, strick mode
- HTML templates, Custom elements
- TypeScript
- concept
- types
- object oriented programing
- type checker
- compatybility rules
- Package manager
- npm
- yarn
- JS extend
- ES Lint
- WebPack
- JQuery
- Fronend Frameworks
- Angular
- Redux
- React
- Redux
- Veu.js
- VueX
- Testing
- Jest
- Cypress
- Enzyme
Backend (Java)
- Java Core
- Basic types
- Collections
- Concurrency
- Lambda
- Stream API
- Date Time API
- Functional Programming
- File IO
- Spring
- DI and IOC
- Aspect
- SpringBoot
- Hibernate
- Spring Security
- Spring Data/JPA
- JDBC
- JooQ
- Microservices
- Spring Cloud
- Micronaut
- Quarks
- Api Clients:
- JAX-RS
- JAX-WS
- Jersey
- Testing
- JUnit
- Mockito
- PowerMock
- Spock
- Libs
- Apache commoons
- Vavr
- Jakson JSON
- Log4J
Databases
- Database Teory
- Object-Relational Mapping
- ACID
- CAP
- N+1 Problem
- Sharding
- Normalization
- Indexes
- Transaction
- Data replication
- Relational Databases
- Teory of Realtional databases
- MySQL
- PostgreSQL
- MS Sql
- Oracle
- NoSQL Databases
- Types of NoSQL Databases
- MongoDb
- ElasticSerach
- Cassandra
- Cache
- Redis
- Memcached
- Messaging
- RbbitMq
- Kafka
Testing
- Testing
- TDD/BDD
- Unit Test
- Integration Test
- E2E Testing
- Contract Testing
- Functional testing
- Testing tools
- Swagger
- Selenium
- Cucumber
Other
- CI/CD
- Theory
- Jankins
- Docker
- Kubernetes
- OpenShift
- Dektop
- JavaFX
- Swing
- Web Servers
- Apache
- Nginx
- Haproxy
- Monitoring
- Metrics
- Graphana
Podsumowanie
Jest tego dużo, ale uczymy się tego w pewnym okresie czasu
* skup się tylko na jednej rzeczy w danej chwili – poznaj jedną technologię lub obejrzyj jeden kurs na raz, nie wszystkie
* zacznij robić swój projekt, nawet niewielki, korzystając z elementów, których się nauczyłeś
* na początek rób proste rzeczy w swoim projekcie
* znajdź kogoś, kto będzie mógł zobaczyć Twój kod
* używaj systemów kontroli wersji od samego początku
Koniec
Linki
- https://dev.to/ender_minyard/full-stack-developer-s-roadmap-2k12
- https://github.com/kamranahmedse/developer-roadmap
- https://www.freecodecamp.org/news/how-to-learn-web-dev-in-2021-roadmap/
- https://javarevisited.blogspot.com/2019/10/the-java-developer-roadmap.html
- https://levelup.gitconnected.com/the-2020-web-developer-roadmap-76503ddfb327
- https://roadmap.sh/
Możliwość komentowania jest wyłączona.