I’m planning to put my talent points into the backend engineer specialization recently,
so first I’ll put together a backend skill tree,
and then work hard to grind talent points and fill it up.

Full Stack

The other day I was chatting with Joyce and mentioned “I want to write a backend skill tree / leveling guide”,
and she asked me curiously: “Do you really think you need to divide the different ends so clearly?”
I thought about it and said: “Uh…” (I didn’t really know what to say either)

The debate around full stack has always existed, and every opinion has some merit to it:

Some people think full stack is suitable for small teams, while bigger teams need finer division of labor.
Or full stack is a false premise, because mastering even one single technology takes huge effort.
Indeed, when there’s a clear division of labor, an all-rounder ends up being wasted,
not to mention that such people are rare to begin with.

Others who support going full stack believe newcomers should specialize in one thing, but pros are always all-rounders.
And that full stack doesn’t refer to languages, but rather a more fundamental knowledge system and overall ability.

I actually quite envy full-stack folks, and I hope to transform into a full-stack person someday too.
But I always feel like I’m still too weak right now — I haven’t even mastered one craft, let alone full stack.
And as the wuxia novels say so well: all paths lead to the same truth.
That is to say, if I master one craft, then I’ll have more experience when I try to understand other things.
Even if I can’t become all-rounded, maybe I can be “one specialty plus multiple proficiencies” :wink:

Heh, when you put it this way, writing code and learning tech is kind of like practicing martial arts.
Just like the programmer leveling guide — grinding monsters, leveling up, putting on women’s clothes~

Backend Skill Tree

  • Programming Fundamentals
    • Algorithms and Data Structures
    • Language Basics
    • Frameworks and Libraries
    • Abstract Logic Ability
    • English Ability
    • Code Style
    • debug
  • Computer Networks
    • Network Protocols
    • Servers
    • Proxy Servers
    • Network Security
    • Permissions
    • RESTful
  • Data and Databases
    • Relational Databases
    • Non-relational Databases
    • Performance Optimization
    • Data Mining
    • CAP
  • Team Collaboration
    • Communication Ability
    • Version Control
    • Task Management
    • Project Management
    • Open Source Projects
    • Showing Off and Showing Humility
  • Architecture Design
    • High Scalability
    • High Concurrency
    • High Availability
    • High Blood Pressure (not really)
  • Values
    • Willingness to Learn
    • Love for Technology
    • Open Mindset

This is the skill tree in my mind. The last section strictly speaking isn’t a skill tree,
but I also feel these qualities are beneficial for a backend engineer.
All kinds of suggestions/comments are welcome :)