Good Principles in Software

Software, like other creative tasks, doesn't necessarily have hard rules about things (aside from those related to the permitted syntax of the specific code you're writing in). Just as you can play the same song in many different ways, so you can implement the same features in different ways.

While there (mostly) aren't hard rules, there are quite a lot of software principles that are worth considering. Here are some of the most useful to the team right now.

KISS (Keep It Simple, Stupid)

It's better to have something simple that is easy to understand and easy to maintain instead of something more complex that is always breaking.

The DRY principle (Don't Repeat Yourself)

This is a particular problem if you are cutting and pasting code. For example, if you have the same function in multiple OpModes and discover that function has a bug in it (or needs to be changed for any other reason) you need to know / remember to change it everywhere. If you have a single place for that function to live that is shared among the OpModes (via inheritance or composition) then updating it in that one place means that everywhere using that function or class immediately gets access to the updated functionality.

YAGNI (You Aren't Going to Need It)

Try to avoid preparing too many steps ahead. Software requirements tend to change quickly, and there is a high risk that while it may seem as if you'll need something in the future by the time you actually do need it there will be additional information you aren't yet aware of. This is related to the SMART goals. Keep what you're trying to accomplish in a single step specific and as small as possible while still adding something of value.