There is an underlying hidden requirement in creating software products. It doesn’t just have to “work”; it needs to be molded in such a way that it can be changed, maintained, and scaled easily.
Last month, I gave a talk addressing this topic to the 1st cohort at Telegraph Academy—an immersive program that teaches underrepresented groups in tech on how to code. They were nearing their last week of the program so I thought it would be relevant to share some industry lessons.
TL;DR
Design early
The biggest mistake beginners tend to make is not taking the time to think through the pros/cons of a software design. Designing early makes it easier to find flaws, it’s much harder fixing those flaws once it’s expressed in code.
Don’t over optimize
This doesn’t just apply to algorithms (e.g. trying to get O(n * log n) performance vs O(n2) on a small dataset), but it also applies to software design. Don’t over-engineer or over-genericize a problem if it doesn’t have to be.
Don’t repeat yourself (DRY)
Code repetition means if something needs to be changed/fixed, it needs to be changed in all parts of the code which is error-prone. Have one source of truth and abstract where appropriate.
Think small
Smaller classes, methods, and files are easier to maintain.
Check out the slides here.