5 Software Development Lessons… Learned The Hard Way
I have had to maintain some rather big pieces of software I wrote a few years ago. Apart from being a special kind of hell (“WTF?! How could I have written atrocities like these?”) this experience reminded me what I’ve learned during those eight years I’ve spent writing software for money.
- Document your code extremely well. Take the time to write all those JavaDoc tags and keep them up to date. When creating a new class or method, document them before you actually implement them.
- Try to write reusable, abstract code, but don’t go over the top. Your code should survive minor specification changes, but it doesn’t have to withstand a complete overturning of the project’s purpose. You’re not building a nuclear shelter. Before you go into developing a cool library completely decoupled from the rest of your code, pause for a while and try to assess what are the odds you will ever need this functionality somewhere else.
- Stop thinking like a programmer when you’re creating user interface. It might make a great sense to have only one admin interface for editing both customers and managers in an on-line store — they are just two different types of users, after all — but for the actual managers of the store, this makes no sense at all.
- Don’t use technical terms in user interfaces. Normal people don’t understand them. Be prepared to name interface elements in a way that seem illogical to you.
It’s all so obvious now. Yet it took me very long to overpower my inner geek and learn to think practically.