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/