To develop software, you need to know concepts, rules, and conventions of
a) computer science,
b) your programming language,
c) your tools, and
d) your organization and project.
With only a/b, you can only make small programs. With only c/d, you can only make small changes.
@peterdrake well conceived/principled