| ▲ | brandonmb a day ago | |
From the company’s perspective, your goal is to build the minimal thing that does the job to make money. Minimal can definitely include well-designed if you can clearly articulate why it will be more and reliable will help you move faster in the future. There is a constant tension between business need and building good software. Typically, engineers are the champion of good software. This can be a healthy relationship as the real world has constraints on your time. You learn to make trade offs as you go, even if they are wrong. I like to think of learning to write software as learning to cook. You start by learning some basic skills (e.g. chopping, frying, seasoning) and you practice them through recipes. But as you really learn and become more of a chef, these are just skill sets and experiences you pull on to make the right thing in the right moment. Just as a good chef can make an amazing meal with minimal ingredients and time, good software engineers can make useful and reliable software that makes appropriate trade offs. | ||