Web Development - Self-evaluation

This form is intended to be used as part of mentorship, coaching and training to allow a learning web developer to get an overview of what they know, allow a mentor to know what to expect and generally provide a useful list of skills, concepts and terminology to familiarize oneself with. This is slanted towards open source tooling and the Unix/Linux tradition. So don't expect much Windows and .Net or enterprise-oriented content. It will also give some information and guidance on any topic you rate yourself low on. No information is saved or distributed. You can save your result link to revisit it and update your evaluation. I hope you find it useful.

Web Fundamentals

Starting out with some basic and very core parts of working with web development.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
HTML
CSS
Javascript (in browser, with HTML)
Video
Browser developer tools

Web Frontend Technologies

Now we are getting a bit more into the weeds in the browser. Don't worry if some of these are foreign to you. That's fine. This is not a pass/fail test. Some are common, some are less common.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
HTML Forms
Using APIs from Javascript
JSON
CORS (Cross-Origin Resource Sharing)
Node.js
NPM
Any frontend Javascript framework (such as React, Vue, Angular, Svelte, Ember, etc.)
SVG
iframes and embedding
Javascript tooling (Webpack, Gulp, Grunt and related)
Javascript test frameworks
Alternate browser languages (Typescript, Elm, etc)
HTTP (the protocol)
WebSockets
Canvas
Responsive design
Flexbox (in CSS)
Grid (in CSS)
CSS Frameworks (Bootstrap, Tailwind, etc)

Server Fundamentals

Going towards the backend, but still very much relevant to serving your frontend code. Let's take a moment to consider the server.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
Linux (operating system, commonly Ubuntu, Debian, RedHat)
Using the command line (aka. CLI)
SSH
Bash (shell scripting)
vi/vim (text editor, known for being hard to close)
nano (text editor, known for being useful on servers if you are not comfortable with vi/vim)
SSH keys and authentication (private/public keys)
Linux package management (often apt, sometimes yum, pacman)
cron (scheduling tool for *nix environments)

Web Server Technologies

Getting more specific to the Web now. Some of these are quite core others less so. Some of these may sound scary, they are just words. They are mostly quite simple once you get to know them.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
HTTP (the protocol)
A common web server (Apache, Nginx)
Serving static files with a web server
Serving web applications by reverse proxy using a web server
curl (command line HTTP client)
HTTPS
SSL/TLS
LetsEncrypt
Creating thumbnails on the server (Imagemagick, GD, or similar)
Adapting video for the web on the server (ffmpeg, usually)
RSS
WebSockets

Database Technologies

Most developers get familiar with a single database when they start out. Learning more of them is generally fairly straight-forward. Don't expect to know all of these. The selection is a bit arbitrary but also a set of very common databases.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
SQL
MySQL/MariaDB
PostgreSQL
SQLite
Redis
Elasticsearch
MongoDB

Developer Tools & Tasks

Let's approach the whole programming thing slightly from the side. There are many, many things that are part of the craft of programming without actually being the writing of code. It is quite common to not be familiar with every piece of lingo and terminology whether you've used a tool or not.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
Git (or other source control, but mostly Git)
A code editor
A REPL
An IDE
In-editor debugging
Deployment tools (Ansible, Docker, etc.)
Deploying code to a production environment
Load testing tools
A Web Framework (such as Rails, Django, Laravel, Express)
CI/CD tools (CircleCI, TravisCI, GitHub Actions)
Bug tracking/Issue tracking
Open source licensing (GPL, MIT, BSD, etc)

Cloud Computing & Proprietary Server Environments

It is still perfectly possible to run a system entirely without the help of the major cloud providers or using other providers. But familiarity with them is a relevant point of inquiry. Don't sweat it though, no one knows how it works ;)

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
AWS
Google Cloud Platform
Microsoft Azure

Programming

As you might have gathered, only part of the job. But a significant part of it.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
A programming language (PHP, Python, Ruby, Node.js, C#, etc)
Writing tests (Unit tests, functional tests, e2e tests, any of it)
Measuring performance/Profiling
Object-Oriented Programming
Functional Programming
Compiled code vs. Interpreted code
IO-bound vs. CPU-bound

Architecture

This is not generally considered entry-level. But depending on one's reading interests all sorts of things can be familiar.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
Microservices
Monoliths
Event-driven architecture

Security & Safety

This is a career in itself, but we all need to be familiar to some extent. A lot of these are more prescriptive, you must, you have to, mandatory, required, must not. This is to emphasize the importance. If you disagree, knock yourself out.

Not familiar with itHave heard of itKnow enough to get startedHave used it a bitComfortable using it
Password hashing
SQL Injection Vulnerabilities
Security mailing lists
Backing up data
Testing backup restoration
Application monitoring & metrics
Logging