As a software engineer, if you were to begin from the start what would you change?
Triggered by this question on Quora.
I would start with trying to understand What is Software Development?
Wasted big time to “tech it”. Different programming languages, different technologies, different databases, “Everybody should use Haskell”, “Everybody should use NoSql”, “MamboJamboScript, is going to take over the world”, and so on and so forth.
Imagine you join a new team. There is no shared language (human language), no intent-revealing test suites providing feedback, no big picture of how your team is actually interacting with the whole organization and nobody knows about that specific code base because (say) Mark is on vacation. And something is failing.
How can you know why the code is failing without knowing why it was working in the first place? At the end of the day, if we don’t understand what we are doing, it doesn’t matter in which programming language we don’t understand what we are doing. Or what technology and tools we use.
I would start with understanding the basic practices and becoming fluent at them. Then probably I could also make more informed decisions based on experience and in the context of the problem at hand.