Three levels, each with a precise meaning. Core is where I can defend the design decisions; proficient is where I can build unaided and know the gaps; working is where I can read it and ship with the documentation open.
The levels
Core
I can defend design decisions in it under questioning.
Proficient
I can build unaided, and I know where I am weak.
Working
I can read it and get things done with the documentation open.
Languages
Ordered by what I would want to be interviewed in.
PythonCore
SQLProficient
CProficient
JavaScriptWorking
C++Working
JavaWorking
Backend
Where most of my time goes.
REST API designCore
FlaskCore
Data modellingProficient
Authentication & sessionsProficient
Password hashingProficient
Multi-tenant architectureProficient
SQLite / relational designProficient
Computer science
Formalised through BITS Pilani, applied in practice repositories.
Data structuresProficient
Algorithms & graph searchProficient
Memory managementProficient
Operating systemsWorking
TCP/IP & client–serverWorking
ConcurrencyWorking
Engineering practice
The things that decide whether code survives contact with a second reader.