Changes for page General Insights
Last modified by chrisby on 2024/09/19 10:56
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -6,7 +6,7 @@ 6 6 * Minimum principle example: When implementing a feature - which represents a fixed goal - the most time-efficient approach is chosen to get it done. 7 7 * Maximum principle example: The agile team tries to solve as many stories as possible in the time allotted for a fixed length iteration. 8 8 * **Sustainability**: Although economic development is too often misinterpreted as making short-term driven decisions, the actual goal is to achieve maximum profitability, which must include long-term considerations. In this way, time spent on maintaining high code quality through rigorous testing and refactoring are well spent investments that pay off in the long run. 9 -* **Opportunity Costs**: Spend your time creating the most business value while considering all alternatives. An example is the decision whether or not to optimize performance. Implementing a new feature usually generates high business value. Tedious performance tuning, on the other hand, is often not necessary whenthe features are "fast enough". So the better alternative is often to spend time working on new features and only optimize performance when it is really necessary.Also, in many use cases, most popular programming languages are fast enough and good developability is more important than resource-efficient languages. So use languages that provide native execution speed, such as C/C++/Rust, only when absolutely necessary.9 +* **Opportunity Costs**: Spend your time creating the most business value while considering all alternatives. An example is the decision whether or not to optimize performance. Implementing a new feature usually generates high business value. Tedious performance tuning, on the other hand, is often not necessary because the features are "fast enough". So the better alternative is often to spend time working on new features and only optimize performance when it is really necessary. 10 10 * **Hobby Projects**: The main driver in a hobby project is usually having fun. Overly strict adherence to maximizing business value generation is contrary to the purpose of a hobby, which is to lightheartedly experiment, discover, or try new things. On the other hand, completely ignoring economics, e.g., not refactoring code, not testing, etc., will lead to development problems. The time it takes to make progress on a bad codebase becomes unnecessarily long, which is not a fun experience. This means that you should have fun with a hobby project, but my recommendation is to balance it with economic development so as not to lose the joy over time. 11 11 12 12 #### Cost Considerations ... ... @@ -14,6 +14,7 @@ 14 14 * **Most costs are caused by maintenance, not development.** Quick and dirty development never pays off, not in the short term and even less in the long term. 15 15 * **Hardware is cheap.** When software is deployed on a single server, hardware costs are usually negligible. However, when the same software is deployed on a large number of servers, the importance of hardware costs can increase. 16 16 * **Staff is expensive.** Salaries for software developers are high, and highly skilled people are rare. Be aware of this resource and take appropriate measures, such as investing time early in good code design to reduce the amount of development and maintenance staff needed. 17 +* **Performance is often secondary.** While it feels good to write highly efficient code, in many cases it is not necessary. Fast is often fast enough, and perfectly optimized code is a waste of development effort. Just put enough effort into performance optimization to meet the project's needs. Since most programming languages are fast enough for most use cases, it is better to choose the language based on the experience of the development team and the requirements of the project rather than on performance. 17 17 18 18 #### Delay Decisions 19 19