karlkori / web-developer-should-know

A list of skills and technologies for beginners

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Web developer should know

A list of skills and technologies

level description
πŸ‘Ά junior has a little commercial web development experience
πŸ‘· middle can implement typical* projects without external supervision; can decompose a typical project and provide a detailed estimate to complete it
πŸ… senior is able to decompose any type of complex project into feasible tasks, has experience in different domains; can organize development, integration and delivery flows in a team
  • General

    • CS?

      Materials:

      Expected result:

      • Big O (time & space); why do we need this notation?; how to use? be able to to determine big O of operations of main data structures
      • Data structures: linked list, stack, queue, tree, graph, hash table (know pros and cons, be able to choose most suitable one to solve a given problem)
      • Know how base data structures is implemented in your language of choice
      • Know about algorithms on base data structures (is not required to remember in details, but undertand pros & cons)
      • Know and avoid N+1 problem
      • Recursion (stack overflow)
    • Testing

      Material:

      Expected result:

    • Git

      Materials:

      Expected result:

      • πŸ‘Ά Have an own github account
      • πŸ‘Ά Understood how Git (or other Version control system) helps in development
      • πŸ‘Ά How to clone an existing project/ How to create a new project
      • πŸ‘Ά How to add new or/and changed files and create a commit
      • πŸ‘Ά How to write a proper message to commit
      • πŸ‘Ά How to create a branch, how to switch between branches
      • πŸ‘Ά How to update a branch from remote repository
      • πŸ‘Ά How to merge changes from one branch to another
      • πŸ‘Ά How to publish your changes to a remote repository
      • πŸ‘Ά How to create a Pull request (understood the idea behind the pull request)
      • πŸ‘Ά Know tools to see a diff, and resolve possible merge conflicts
      • πŸ‘Ά stash, cherry-pick
    • Network

      Materials

      Expected result:

      • πŸ‘Ά HTTP vs HTTPS
      • πŸ‘Ά CDN (content delivery networks) - why it can be useful
      • πŸ‘Ά Know how to use ssh, dig, ping, curl, wget (no need to now all available parameters but know how these tools can help)
      • πŸ‘· HTTP/2 - what is new, and what problems it tries to solve
      • πŸ‘· Awareness about OSI model
      • πŸ‘· How DNS works, A, CNAME, MX...
      • πŸ‘· Know how to use different HTTP headers (caching, auth, content type, ...)
    • Security

      Expected result:

      • πŸ‘Ά CORS, Why is it necessary?
      • πŸ‘Ά XSS, CSRF
      • πŸ‘Ά How to send a sensitive data securily via network
      • πŸ‘Ά Know in general how authentication (session, token based) works
      • πŸ‘· Know in details how authentication, authorization works (session, tokens, JWT, OAuth...)
    • Extra

      Expected result:

      • πŸ‘· Docker usage (choose a proper base image, add required libs, soft, configs, code; build, run, attach to it, see logs...)
      • πŸ‘· scp, rsync, sftp
  • Backend

    • Auth

      Materials:

    • Databases

      Materials:

      Expected result:

      • πŸ‘Ά SQL vs noSQL
      • πŸ‘Ά SQL common commands (select, insert, delete, transaction, bulk load, dump, restore)
      • πŸ‘· Be able to understand the output of EXPLAIN command
      • πŸ‘· ACID
      • πŸ‘· OLTP vs OLAP
      • πŸ‘· Be able to build a database schema for a project (correct data types, indexes, foreign keys, data normalization)
      • πŸ‘· key-value databases: Redis, memcache; what they are applicable for?
    • Microsevices

      Materials:

    • Specific to programming language

      • NodeJS

        Materials:

        Expected result:

        • ES6+ basics
        • nvm, npm, package.json, package-lock.json - how to install and use
        • event loop, async/await, promises, try catch
        • understanding why static typing is useful
  • Frontend

    • HTML5

      Materials:

      Expected result:

      • πŸ‘Ά Be able to build a layout from picture (PSD, sketch) - the result must be "Pixel Perfect" - using correct fonts, sizes, colors, margins, paddings
      • πŸ‘Ά How to build and use Forms (radio, checkboxes, inputs, especialy file uploading)
      • πŸ‘Ά Trying different UI frameworks
      • πŸ‘Ά Know why to make a semantic markup (SEO just simple understandig)
    • CSS3

      Materials:

      Expected result:

      • πŸ‘Ά How to include CSS into HTML
      • πŸ‘Ά CSS selectors, pseudoselectors
      • πŸ‘Ά How to use Media queries and why (responsive design)
      • πŸ‘Ά Mobile first
      • πŸ‘Ά CSS animation
      • πŸ‘Ά Webfonts
      • πŸ‘Ά Flexbox / Grid
      • πŸ‘Ά Crossbrowser validation
      • πŸ‘Ά Try to use any CSS pre/post processors and why they might be useful
    • Javascript

      Materials:

      Expected result:

      • πŸ‘Ά How to include a javascript code into your HTML page
      • πŸ‘Ά Data types; const, let, var
      • πŸ‘Ά Syntax: conditions, iterations, functions, classes...
      • πŸ‘Ά Variable scope, hoisting, IIFE, modules, "this", closures
      • πŸ‘Ά Sync and async code execution (callbacks, promises, async/await)
      • πŸ‘Ά JSON, XML
      • πŸ‘Ά Cookie
      • πŸ‘Ά Web API:
        • πŸ‘Ά Manipulating DOM elements: create, update, remove, move
        • πŸ‘Ά Handling DOM events: click, hover, onKey...
        • πŸ‘Ά Local and sesion storage, what is a difference
        • πŸ‘Ά XMLHttpRequest, fetch
      • πŸ‘· Web API in more details:
        • πŸ‘· geolocation
        • πŸ‘· media (camera access)
        • πŸ‘· canvas
        • πŸ‘· web workers
        • πŸ‘· service workers
        • πŸ‘· web sockets
      • πŸ‘Ά Work with one popular js framework: angular, react, vue...
      • πŸ‘· Be able to build an app from scratch by using some popular js framework
    • Chrome dev tools

      Materials:

      Expected result:

      • πŸ‘Ά debugging code (debugger, console.log,...)
      • πŸ‘Ά inspecting DOM elements
      • πŸ‘Ά testing a layout on different screens (responsive design)
      • πŸ‘· debug application performance (memory usage/leaks, cpu intensive operations)

About

A list of skills and technologies for beginners