One of the hardest things about web development is focusing your learning. There are so many things to know! I've prepared a few different frameworks and resources to guide you. Hopefully these can help novice/intermediate developers get the right mix of breadth and depth, and maybe help advanced devs clarify their perspectives.
I've broken out 130 technical concepts in this google doc. It includes a rubric to rate yourself - copy the sheet, make a column for today's date, and see what you know! Do it again every few months and watch yourself improve.
The point is just to have one place that tracks both your technical breadth and depth as a developer. Going forward, as you have time for side projects or some leeway to choose what you take on at work, this list can help you make those decisions and progress as you desire. This is a good starting point but absolutely feel free to add/delete/update the list to fit your goals!
Building software is about so much more than writing code! Being able to move the whole project forward to successful completion requires an entirely different skill set. The best developers are strong communicators and excel in all these areas in addition to being technically competent.
Steps in the Project Pipeline
Context is always important. Writing code happens mostly in the "implementation" step, but that's only one piece of the puzzle. The more you know about what comes before and after the code, the better your code will be. Here are some important contexts for your work, from broadest to narrowest:
- industry dynamics
- business goals
Knowing syntax isn't enough, you have to know how to apply it. Any problem has half a dozen acceptable tech solutions. Picking the right one comes from experience and process.
Given a problem statement/business goal
- flesh out goals into more concrete requirements
- what is risky - identify unknowns, likely future changes, hidden complexity
- clarify edge cases, interactions
- basically create a full spec
Given a spec (formally written or from verbal group consensus)
- conceive different implementations
- explain tradeoffs/design decisions between them
- consider future needs
- recommend a course of action
Given a tech plan
- deliver a complete, stable, idiomatic, readable implementation
- keep in touch with stakeholders
- communicate at the right level of abstraction
- carefully manage scope
Given a bug report or error report
- suggest possible causes
- collect relevant information
- narrow down possibilities
Given an existing codebase
- identify key concepts
- identify problem areas, strengths/weaknesses
- understand the ecosystem of tools, libraries, platforms
In no particular order...