The apples and oranges situation in software engineering

The apples and oranges situation in software engineering

The concept of having your cake and eating it is one that is frequently attempted by people in their everyday life. Just like life, software engineering will enforce the fact that you can't have it all, in software engineering there are usually compromises that must be made in building solutions.

Some solutions are fast but not as reliable as they should be, some are reliable but not as fast as they should be, some are easy to maintain while speed and efficiency is compromised. Great software engineers can prioritize features and make concessions based on what they feel the client needs most.

A client may benefit more from reliability than a solution that's half a second faster. For some clients speed is everything, it's an apples and oranges situation with software engineering. What you don't want to be however is a software engineer that doesn't know when he or she is making concessions with code, it shows that you don't understand the drawbacks of what is being deployed.

In your learning journey you have to consistently try to find out the advantages and disadvantages of methods, properties, logics, styles and constructs that you plan to use. This will save you a lot of headaches and can also help in code reviews. Breaking things isn't a problem in software engineering, what becomes a problem is when you don't know why it's breaking, it reduces the client's confidence in your abilities.