Technology constantly changes, but some fundamental approaches to software development transcend these trends. Here are six fundamentals that will continue to be relevant for a long time.
Teamwork, Trust, Communication, Seek Consensus and finally:
Clean, understandable, and navigable code and design — Think of the next engineer that will take over your code as your customer. Build code that your successor won’t have any trouble reading, maintaining, and updating.
It ties in with the similar ideas I have been advocating here- simplicity of the UI and the stakeholders should understand the minimal friction for the “cost function”- time required to learn a new skill. The goals need to be clear and there are several players in the complex ecosystem to spoil the party (or a roll out).
Another brilliant observation about lock in:
There will always be the next hot productivity product that will promise to revolutionize how software is built. Computer Assisted Software Engineering (CASE) tools, COTS, Enterprise Resource Planning products like Peoplesoft and SAP and, yes, even Ruby. They claim amazing reductions in cost and time if you buy into their holistic development philosophy. What is not always as obvious is the significant up-front costs or the constraints you may be committing yourself to. Lock-in used to primarily happen with vendors, but now it can happen with frameworks too. Either way, lock-in means significant cost to change. Choose wisely. New is not always better!
Hence, at times, if it works, then let it work. There will be temptation to try something new. I think Slack ended up getting traction like that- something cool with immense marketing hype and a complete UI disaster. It never killed the email but ended up as a division in a monolith where ideas go to die. It was the death of the app itself.