A lot of things you need to know as a Software developer depend on the technologies you work with. This should be a general article and therefore it shouldn’t get into too much detail about language or technology specific things. Depending on what you are currently working on or with, there might be quite some different factors. But let’s talk about the general points which I found helpful in the past:
Knowledge of a Low Level Language with Manual Memory Allocation
I have done this during my apprenticeship: I learned C. Yes, C without ++. There we learned a lot of fundamentals by coming in contact with C. In combination with later formal education I am now aware of what is (or at least could) be happening under the hood of higher level languages. When constructs of a higher abstraction language are executed and you know the internal it gives you some sense of security. Definitely a nice thing to have.
Have Your Time And Space Complexity Together
I am not saying you need to learn what kind of algorithm belongs to which kind of complexity. But REALLY be aware of the different groups of algorithms and know how to detect them.
After having a few courses about it in university I guess it has become second nature to me. It really helps in seeing problems down the road. You don’t need to be an expert.
Most of the times it is enough that you know that it is in general not a good idea to have 3 nested for loops and some heavy shifting on the deepest level. Excessive runtime and memory consumption should not surprise you in practice.
Readability Above Everything Else
I don’t care how much faster your algorithm is. It might be even 10 times faster and I don’t even see it in the response times of the executed code. For compiled languages the compiler might even optimize the difference away.
What I care about is if your code is easily understandable and readable. You only write your code once but it will getting read a lot more often. Keep this in mind! Please don’t make me think. Clever code is hard to write but even harder to read and understand.
You definitely don’t know everything, even if you know more than me – you are not omniscient.
Never ever on your journey as a software developer you will know it all. Embrace it, it is also easier to find friends on your road when you accept that there are people who know more on all kind of topics.
In the spirit of the last point I appreciate any input from your side. What do you see as most important thing in Software Development? Feel free to leave a comment or just hit me up on twitter if you feel the need to discuss something “in person” or just want to say “hello”.up on any social platform you want.* A good 2019 to all of you!