{"id":3074,"date":"2025-05-05T00:51:04","date_gmt":"2025-05-05T00:51:04","guid":{"rendered":"https:\/\/sp2hari.com\/?p=3074"},"modified":"2025-05-05T03:35:26","modified_gmt":"2025-05-05T03:35:26","slug":"subtle-rules-of-software-engineering","status":"publish","type":"post","link":"https:\/\/sp2hari.com\/index.php\/2025\/05\/05\/subtle-rules-of-software-engineering\/","title":{"rendered":"Subtle Rules of Software Engineering"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Found this good list while browsing the internet as the &#8216;Subtle Rules of Software Engineering&#8217;. These kinds of lists float around often, but this one felt especially thoughtful and more practical. <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You WILL regret complexity when on-call<\/li>\n\n\n\n<li>Stop falling in love with your own code<\/li>\n\n\n\n<li>Every single thing is a trade-off &#8211; no &#8220;best&#8221;<\/li>\n\n\n\n<li>Every line of code you wrote is a liability<\/li>\n\n\n\n<li>Document your designs and decisions<\/li>\n\n\n\n<li>Everyone hates code they didn\u2019t write<\/li>\n\n\n\n<li>Don&#8217;t use unnecessary dependencies<\/li>\n\n\n\n<li>Coding standards prevent arguments<\/li>\n\n\n\n<li>Write meaningful commit descriptions<\/li>\n\n\n\n<li>Never ever stop learning new things<\/li>\n\n\n\n<li>Code reviews are to spread context<\/li>\n\n\n\n<li>Always build for maintainability<\/li>\n\n\n\n<li>Always ask for help when stuck<\/li>\n\n\n\n<li>Fix root causes, not symptoms<\/li>\n\n\n\n<li>Software is never finished<\/li>\n\n\n\n<li>Estimates are not promises<\/li>\n\n\n\n<li>Ship early, iterate often<\/li>\n\n\n\n<li>Keep. It. Simple.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Lists like this are both inspiring and&#8230; a little maddening. The advice is good. But like most software engineering principles, they occasionally pull in different directions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For instance: <strong>\u201cAlways build for maintainability\u201d<\/strong> vs <strong>\u201cShip early, iterate often\u201d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Can you always do both? Maybe not. Sometimes you\u2019re racing to get feedback; other times you\u2019re investing in long-term good code. Real-world engineering often is a push-pull between quality and velocity. It\u2019s not that one rule is <em>better<\/em>\u2014it\u2019s about understanding the trade-off you\u2019re making in the moment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, just for fun\u2014what if I had to upvote only 5 of these and downvote 5?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This would be mine. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Upvote.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"710\" src=\"https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Upvote-1024x710.jpg\" alt=\"\" class=\"wp-image-3075\" style=\"width:800px\" srcset=\"https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Upvote-1024x710.jpg 1024w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Upvote-300x208.jpg 300w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Upvote-768x533.jpg 768w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Upvote-432x300.jpg 432w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Upvote.jpg 1300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Downvote.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"716\" src=\"https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Downvote-1024x716.jpg\" alt=\"\" class=\"wp-image-3076\" style=\"width:800px\" srcset=\"https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Downvote-1024x716.jpg 1024w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Downvote-300x210.jpg 300w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Downvote-768x537.jpg 768w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Downvote-429x300.jpg 429w, https:\/\/sp2hari.com\/wp-content\/uploads\/2025\/05\/Downvote.jpg 1318w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Why the top 5?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Every single thing is a trade-off \u2013 no \u201cbest\u201d<\/strong><br>Because software engineering is rarely about absolutes. Understanding trade-offs helps you make pragmatic decisions. What\u2019s \u201cright\u201d today might be wrong tomorrow depending on the team, scale, or product maturity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Never ever stop learning new things<\/strong><br>The field moves fast\u2014tools, best practices, and expectations shift constantly. Staying curious is how you stay relevant and sharp. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Always ask for help when stuck<\/strong><br>This is one attribute I&#8217;ve found in the best engineers I&#8217;ve worked with. They know when to ask for help and how to unblock themselves quickly. Like every other rule, there is a trade-off here and asking help too quick and too often might also land you in trouble in the long run.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Software is never finished<\/strong><br>There\u2019s always a bug to fix, a use case to support, or a refactor to make. Embracing this helps me to design for change. You\u2019re not building monuments\u2014you\u2019re evolving living systems. Think milestones and basecamps. It is not about the summit all the time. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5. Ship early, iterate often<\/strong><br>Feedback beats perfection. Getting real-world usage fast helps you build the right thing, not just a well-built wrong thing. Early shipping helps validate ideas and keeps teams grounded in user needs.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How would you order this list? Try the app here and share your list &#8211; <a href=\"https:\/\/sp2hari.com\/software-rules\/\">https:\/\/sp2hari.com\/software-rules\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Found this good list while browsing the internet as the &#8216;Subtle Rules of Software Engineering&#8217;. These kinds of lists float around often, but this one felt especially thoughtful and more practical. Lists like this are both inspiring and&#8230; a little maddening. The advice is good. But like most software engineering &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[],"class_list":["post-3074","post","type-post","status-publish","format-standard","hentry","category-tech"],"_links":{"self":[{"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/posts\/3074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/comments?post=3074"}],"version-history":[{"count":8,"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/posts\/3074\/revisions"}],"predecessor-version":[{"id":3088,"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/posts\/3074\/revisions\/3088"}],"wp:attachment":[{"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/media?parent=3074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/categories?post=3074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sp2hari.com\/index.php\/wp-json\/wp\/v2\/tags?post=3074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}