20 Constants In Software Development

There are so many things I wish people had told me when I was in school, or earlier in my career. Things that aren’t variable between organizations you work with, or even teams you work in. So I thought I’d jot a few down of these for software development teams (if only to prove that no, despite what product managers say, you aren’t crazy). So here goes:

  1. A project will never have enough people to build all the features you want. Period.
  2. Less features means fewer defects.
  3. As a software project nears completion the amount of work remaining rises in proportion to how many hacks and shortcuts you took.
  4. Sometimes it’s easier to make a new version than it is to try to improve and perfect a previous version. Never be so in love with you code that you can't erase it all and rebuild it again.
  5. No one ever wants to take over something written by someone else. It’s always crap and needs to be rewritten.
  6. Every year you get better at writing code, so you end up getting embarrassed by how crappy your old code was and just want to rewrite all of your projects. Assuming you’re actually getting better.
  7. More developers means more merge conflicts. Reason 837 that larger teams don’t mean a comparable increase in productivity.
  8. There is always scope creep; no one ever wants it to impact the timeline, though.
  9. As projects grow, you can’t QA or unit test every regression possible. But you still have to build as many tests as you can.
  10. The code is never really finished. There are always going to be reasons to withhold this or that. But you have to keep shipping!
  11. Who cares what methodology you’re using, just be deliberate! Kanban, Scrum, Extreme Programming, etc. What matters is that the team is on the same page.
  12. The front end should always talk to APIs. Always.
  13. Project managers rarely plan for holidays, vacations, and sick time in their project plans.
  14. Good developers are hard to find. But wait it out or you might get stuck with someone that just makes the team less cohesive.
  15. If you have more than one developer worth their salt then you will always have disagreement about something.
  16. Everyone wants good documentation of code but no one budgets for it.
  17. The more high performing a team the more annoyed team members get about people that aren’t amazing.
  18. Most developers don’t start with domain knowledge (or knowledge of the subject they’re writing software for). Once developers get domain knowledge, they write better software. And need less specific customer stories!
  19. Beyond a few minutes a day, meetings have a decidedly negative return on investment.
  20. There is always tech debt. Always.
This post was published on the now-closed HuffPost Contributor platform. Contributors control their own work and posted freely to our site. If you need to flag this entry as abusive, send us an email.