As a software professional, I see a lot of programmers being evaluated about their techniques and not about their knowledge or, in other words, about what and not about how they code.
I have ever being a true believer that if you know the principles you can deduce the techniques from it. Doesn't matter the language because the grammar of each programming language is similar to the other, so it's just the matter to just the syntax and refines the grammar, but you still must know how to be a good writer. And this is what Uncle Bob teaches us. When we are coding, we are writing code.
Please, take a look at this excerpt from The Clean Coder book where Uncle Bob says out loud exactly what I think about how to become a good software professional and where I (and you) should put the effort to accomplish that goal:
You should know the SOLID principles and have a good understanding of the component principles.
You should understand XP, Scrum, Lean, Kanban, Waterfall, Structured Analysis, and Structured Design.
You should practice TDD, Object-Oriented design, Structured Programming, Continuous Integration, and Pair Programming.
You should know how to use: UML, DFDs, Structure Charts, Petri Nets, State Transition Diagrams and Tables, flow charts, and decision tables.
Besides that "small" list about the minimal of what we need to know as a software professional, Uncle Bob adds: continuous learning, practicing, collaboration, mentoring, domain knowing, employer shoes, and humility.
If I can add something to Uncle Bob's list, I suggest you learn about Refactoring. The majority of the time which we spend on projects is doing refactoring of previous code. So, master this discipline will add more XP to you as a software professional, increasing your value in the market.
Do you have anything to add to this list? Please, comment below.