<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="371700" data-post-id="371700">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sodapopcan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/120/34668_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sodapopcan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adamu" data-post="19" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/adamu/48/31482_2.png" class="avatar"> adamu:</div>
<blockquote>
<p>I do think there is something unique to software that is different to pure engineering disciplines and it’s not completely down to power dynamics, which exist everywhere. I suspect it’s that software is really a design process rather than a pure engineering one, with input and creativity needed at every step - it’s a process of discovery, not just execution of a task.</p>
</blockquote>
</aside>
<p>No arguments here.  I’m honestly not even convinced there is any “engineering” involved, but we’d probably have to knock a couple of zeros off of our paycheques if we called ourselves “systems artists.”</p>
<p>There is actually a bunch to unpack in the rest of your post which would result in me probably writing a blog-post length of stuff, so I won’t, but:</p>
<aside class="quote no-group" data-username="JEG2" data-post="20" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeg2/48/936_2.png" class="avatar"> JEG2:</div>
<blockquote>
<p>I agree that estimation is hard. However, I do believe it’s a thing that we can practice and improve at.</p>
</blockquote>
</aside>
<p>This is a super important point.  Many people get disillusioned by processes because a) <em>at first</em> they don’t work immediately and hinder more than help, and b) many orgs don’t take the time to properly teach their teams how to do this stuff or even understand it themselves (in which case they just continue to not work and be a hinderence).</p>
<aside class="quote no-group" data-username="dimitarvp" data-post="21" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>Thanks for introducing me to <a href="https://www.investopedia.com/terms/s/sandbag.asp" rel="noopener nofollow ugc">the “sandbagging” term</a>. Interesting. I always knew this but never knew the name. Thanks. <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>That link does a good job of explaining, though I think it works extra well with estimates (and is even a bullet point on “A Case Against Estimates” linked above).  Perhaps people would feel uncomfortable saying this out loud but it’s “Under promise and always deliver on that under promise.” This manages everyone’s expectations, leaves a lot of room for the unexpected, leaves room for experimentation and tech debt, and generally keeps everyone—including leadership and customers—happy.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="371700" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-371700" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="371700"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="372600" data-post-id="372600">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adamu" data-post="19" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/adamu/48/31482_2.png" class="avatar"> adamu:</div>
<blockquote>
<p>software is really a design process rather than a pure engineering one, with input and creativity needed at every step - it’s a process of discovery, not just execution of a task.</p>
</blockquote>
</aside>
<p>I worked for many years in companies developing mechanical and electronics products, and I can tell you that there is nothing special about software in that regard. The most important difference between software and other artifacts is its mutability and (relatively) much lower cost of engineering changes, especially in the early iterations, which carries over much better in the later iterations too!</p>
<p>Top-notch companies with people engaged in multi-disciplinary product development work also know by now to prototype early, and delay decisions until the gremlins have gotten worked out from the concept, the system architecture, and its design/implementation in hardware, whether that’s problems with turbine-blade resonances, casting process tolerances, RF interference, warping of parts during plastic injection molding, or durability of components due to vibrations. In those cases, once you “hit hardware”, even in prototype form, you are subject to supply-chain lead-times and loops that are far more expensive than the cost of the prototype’s production.</p>
<p>Having said that, there are certainly still many non-software businesses that develop in what many deride as “waterfall”–and even then, it’s practically never waterfall. It’s most likely Stage Gate / phase-gate, and even then, it’s untenable for such a business to launch a new product every 5-7 years as they once were used to. So, most non-software companies have already for years now adopted some ideas of agility (not mentioning capital-A Agility, that’s a whole different story, with rituals and certificates and other nonsense), or introduced design processes and rules of thumb / internal guidelines for the design of key components.</p>
<p>Everything that has uncertainty has / must have a design process behind it, that reduces the uncertainty to an ALARP degree for the product to work as expected. From the “cartridge concept” of how some mechanical components (turbochargers, rotary valves are two I’m aware of) are designed to suddenly (after decades of design stagnation) prioritize repairability/maintainability, to figuring out the trade-offs behind the bounding box of the product, the size of the FPGA, the available space for the battery, etc., e.g. in <a href="https://www.screeningeagle.com/en/products/proceq-gp8800" rel="noopener nofollow ugc">this one</a> of which I was in charge of.</p>
<p>The “software exceptionalism” is misplaced, sorry.</p>
<p>Edit: estimation is similarly an issue in non-software businesses, too. Generally, pointy-haired bosses who don’t understand or don’t want to understand something that goes against what they’re being pressured to enforce, are what ruins things. I once was asked to develop the shaft size of new turbochargers. Eh, we have design rules for that, how hard can it be? Original estimate (by my decidedly non-PHB supervisor) was 3 weeks. Within these 3 weeks it became obvious that the design rules were useless, as they targeted shafts of single-stage turbocharging systems. My investigation for updating the design guideline with new rules for higher pressures and 2-stage turbocharging systems took <strong>13 months</strong>. Good thing that it wasn’t on the critical path, and thanks to parametric 3D CAD we could delay decisions about the shaft’s interfaces and converge as late as possible. 3 months into the investigation the formulas for the first 2-stage system’s parameters were available (after millions of Monte-Carlo simulations), so no harm was done. But 3 weeks and 3 months is still a crazy difference. Making bold estimations without understanding what you’re really estimating is hare-brained, regardless of software or non-software work. And most people in managerial roles are far removed from the actual system, to know what they’re really asking for, or what they can expect, or what slack they should allow for.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372600" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-372600" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372600"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="372601" data-post-id="372601">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>A very good book that more managers should have read: <a href="https://www.amazon.com/How-Measure-Anything-Intangibles-Business/dp/1118539273" rel="noopener nofollow ugc">How to Measure Anything: Finding the Value of Intangibles in Business 3rd Edition, by Doug Hubbard</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372601" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-372601" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372601"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="372626" data-post-id="372626">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="adamu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/adamu/120/31482_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  adamu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="waseigo" data-post="23" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/48/34129_2.png" class="avatar"> waseigo:</div>
<blockquote>
<p>I can tell you that there is nothing special about software in that regard. The most important difference between software and other artifacts is its mutability and (relatively) much lower cost of engineering changes</p>
</blockquote>
</aside>
<aside class="quote no-group" data-username="waseigo" data-post="23" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/48/34129_2.png" class="avatar"> waseigo:</div>
<blockquote>
<p>The “software exceptionalism” is misplaced, sorry.</p>
</blockquote>
</aside>
<p>I disagree, because in software we are not engineering a physical product like in other engineering disciplines - we are writing a set of instructions that tell the computer what to do. The end result is a script. We are probably closer to playwrights than engineers.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372626" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-372626" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372626"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="372627" data-post-id="372627">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adamu" data-post="25" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/adamu/48/31482_2.png" class="avatar"> adamu:</div>
<blockquote>
<p>I disagree, because in software we are not engineering a physical product like in other engineering disciplines - we are writing a set of instructions that tell the computer what to do. The end result is a script. We are probably closer to playwrights than engineers.</p>
</blockquote>
</aside>
<p>What you are describing is coding. In non-software engineering, this is on a “level” of the <a href="https://en.wikipedia.org/wiki/V-model" rel="noopener nofollow ugc">V-model</a> close to “implementation” (detailed design), similar to producing a CAD model, which are the instructions that tell a CNC machine or a machine operator (lathe, mill, sheet press, sheet-bending machine, etc.) what to do–i.e., the implementation.</p>
<p><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Systems_Engineering_Process_II.svg/800px-Systems_Engineering_Process_II.svg.png" alt="V-model" width="" height=""></p>
<p>And even then, the person in charge of producing the CAD model is (hopefully, but you’d be surprised) not a mindless, ignorant draftsman drawing lines in 2D or 3D without care, but someone who has enough knowledge of engineering to understand the trade-offs behind mechanical design decisions, such as <a href="https://en.wikipedia.org/wiki/Stress_concentration" rel="noopener nofollow ugc">stress concentration</a>, <a href="https://en.wikipedia.org/wiki/Engineering_tolerance" rel="noopener nofollow ugc">engineering tolerances</a>, or anything else that might impact how a line is drawn and how it connects to other lines.</p>
<p>The drawing is to the operator what the codebase is to the computer. That doesn’t mean that the process leading to the “implementation instructions” does not resemble engineering, regardless of the artifact being engineered.</p>
<p>I mean, of course you can go ahead and be a tinkerer, i.e. someone who goes to the junkyard, pulls things that seem they might fit together, and then kinda puts them together into something that might work or might not, depending on the system’s context and the properties of its components.</p>
<p>This is equivalent to copy-pasting code from Stack Overflow or from an LLM chat without actually understanding what it does, what it does not, what it does badly and when, and how it fails, and how its failure will impact the overall “system”. Vibe-coding and coding by copy-pasting is (usually, for most enthusiasts) the low-knowledge and low-understanding slapping-together-things-until-they-maybe-somehow-work-together equivalent of tinkering.</p>
<p>Engineering though requires understanding the system, its architecture, its components, how they connect, how they should work vs. how they work, why they work this way and not that way, under which conditions the components and subsystems/assemblies will work in isolation and together as you specified them, so that the system fulfills the requirements posed on it, when the components, subsystems/assemblies and the entire system is expected to fail and why (see <a href="https://en.wikipedia.org/wiki/Failure_mode_and_effects_analysis" rel="noopener nofollow ugc">FMEA</a>). And the story goes all the way up both sides of the V, so that you understand what it is you’re building to begin with, and how you will know you’ve succeeded, and to what extent, and with which “gremlins in the system”.</p>
<p>When you “code”, you might not be engineering the software, except if you’ve put forethought on the design that drives the code, the architecture that drives how everything “talks” to other things within the codebase, the requirements that impact the architecture you choose (from how you lay out your Elixir modules to whether you have microservices or a monolith or anything else), etc.</p>
<p>When you engineer the software, you have to build knowledge early enough, so that you can make better decisions. You don’t need to wait until the whole left branch of the V-model is “perfect”. You can experiment (e.g. in IEx) and build knowledge. But that’s no different to engineers 3D printing mock-ups, for example to test ergonomics, or running <a href="https://en.wikipedia.org/wiki/Finite_element_method" rel="noopener nofollow ugc">FEM</a> analyses to figure out whether a requirement is realistic to begin with (“Can I make it as light as they think we should?” Can we bend that sheet how the industrial designer hoped we can without compromising drop-resistance?” and so on).</p>
<p>Every kind of engineering has its own modalities, such as degree of mutability (and the cost of changes) of the artifact depending on how far along you are along the process from an idea to a prototype or a ready-to-launch product (or refinery, or defibrilator, or building, or anything else).</p>
<p>Software too; when you don’t just write a script but you engineer a software system (or a subsystem, like an Elixir module), you engineer it like any artifact beholden to any other engineering discipline(s).</p>
<p>Coding, i.e. “writing a set of instructions that tell the computer what do to”, a “script” as you call it, is merely the implementation.</p>
<p>Edit: <a class="mention" href="/u/adamu" rel="nofollow">@adamu</a> just think about the word “coding”: you are literally <em>en</em>coding a design into instructions. So, you cannot have instructions without this encoding, and therefore you can’t have implementation without <em>some</em> degree of design. And so, you are in the engineering process already, but perhaps not all the way to the top of the left branch of the V <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372627" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-372627" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372627"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="372628" data-post-id="372628">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sodapopcan" data-post="14" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/48/34668_2.png" class="avatar"> sodapopcan:</div>
<blockquote>
<p>I have not… I’m assuming this question comes with a recommendation? <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>I haven’t, but I assume that the book is a connect-the-dots along everything he’s been posting on LinkedIn. I follow him there, and by now he has probably already expounded on everything in the book across many posts that find me in agreement.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372628" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-372628" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372628"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="372629" data-post-id="372629">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adamu" data-post="19" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/adamu/48/31482_2.png" class="avatar"> adamu:</div>
<blockquote>
<p>software is really a design process rather than a pure engineering one, with input and creativity needed at every step - it’s a process of discovery, not just execution of a task.</p>
</blockquote>
</aside>
<p>Oh yeah, I forgot to address that part: if you think that “pure engineering” doesn’t involve input and creativity at every step, that it isn’t a process of discovery, and that it’s “just execution of a task”, I don’t know where you got that from, but it’s absolutely, categorically wrong.</p>
<p>A design process decoupled from the engineering process produces mostly beautiful and mostly useless artifacts like the concept drawings that some industrial designers come up with: beautiful forms, without any capability to implement some functions in the system, or severely compromising important requirements, or assuming specifications that are impossible to meet. Sure, Jim, you made it super duper pretty; oh the lines are so beautiful, the curves are so sexy! Too bad the battery that we can fit in the damn thing won’t last for even half an hour! But hey, the design is pretty and might win you one of the many awards handed out like bonbons (see <a href="https://www.red-dot.org/" rel="noopener nofollow ugc">Red Dot Design Award</a>) that you can put on your CV, I give you that!</p>
<p>The design process is part of the engineering process, and the engineering process lives and breathes exploration, creativity, and gathering input from <em>all</em> stakeholders of the system. Anything else, and you are not building a product, but a concept disconnected from implementability.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372629" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-372629" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372629"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="372633" data-post-id="372633">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sodapopcan" data-post="22" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/48/34668_2.png" class="avatar"> sodapopcan:</div>
<blockquote>
<p>“Under promise and always deliver on that under promise.” This manages everyone’s expectations, leaves a lot of room for the unexpected, leaves room for experimentation and tech debt, and generally keeps everyone—including leadership and customers—happy.</p>
</blockquote>
</aside>
<p>This is generally a great idea for everyone <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> but people often get carried away, especially the closer you get to getting an order, or being able to issue an invoice. People in different business functions are clustered around different character archetypes. I could never be in direct sales and “knocking on doors” or “pounding pavement”, because I hate its stochastic nature, and the need for hyperbole that goes with it all too often… But others thrive on this as a source of excitement, and thus tend to over-overpromise, and then indirectly increase expectations on everyone else who’s tasked with the product, because management after all (generally) tends to take the idiotic “don’t bring me problems, bring me solutions” stance above the “I don’t know, how can we figure it out?” stance.</p>
<p>And that’s how the management of expectations also gets stratified politically throughout the organizational hierarchy… You can’t outplay those who rose through the ranks by being proficient at the game of managing expectations and promising upwards and dumping downwards <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372633" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-372633" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372633"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="372759" data-post-id="372759">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="adamu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/adamu/120/31482_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  adamu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="waseigo" data-post="26" data-topic="72088">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/48/34129_2.png" class="avatar"> waseigo:</div>
<blockquote>
<p>What you are describing is coding.</p>
</blockquote>
</aside>
<p>I actually think that the program <em>is</em> the design, which, uniquely to software amongst engineering disciplines, is also the product.</p>
<p>Consider what happens if you throw away all the design and instructions once the product is complete. With a production line producing widgets, if you throw away the (possibly CA) design, you still have the widgets. With software, you just have a computer. This is why software differs from other engineering disciplines, IMO.</p>
<p>I might be triggering people by making comparisons to other engineering disciplines that I’m not qualified to do. I <em>do</em> think that the output of software development being a set of instructions makes it unique, and that estimating that process (my original comment to the blog post!) is almost impossible. I’m talking about the topics covered in publications like:</p>
<p>The emperor’s old clothes (1980)<br>
<a href="https://dl.acm.org/doi/10.1145/358549.358561" class="onebox" target="_blank" rel="noopener nofollow ugc">https://dl.acm.org/doi/10.1145/358549.358561</a></p>
<p>Mythical man month (1975-1995)</p><aside class="onebox wikipedia" data-onebox-src="https://en.wikipedia.org/wiki/The_Mythical_Man-Month">
  <header class="source">

      <a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month" target="_blank" rel="noopener nofollow ugc">en.wikipedia.org</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:250/366;"><img src="//upload.wikimedia.org/wikipedia/en/thumb/f/fd/Mythical_man-month_%28book_cover%29.jpg/250px-Mythical_man-month_%28book_cover%29.jpg" class="thumbnail" width="250" height="366"></div>

<h3><a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month" target="_blank" rel="noopener nofollow ugc">The Mythical Man-Month</a></h3>

<p>The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks first published in 1975, with subsequent editions in 1982 and 1995. Its central theme is that adding manpower to a software project that is behind schedule delays it even longer. This idea is known as Brooks's law, and is presented along with the second-system effect and advocacy of prototyping.
 Brooks's observations are based on his experiences at IBM while managing the...</p>

  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>Peopleware (1987-2016)</p><aside class="onebox wikipedia" data-onebox-src="https://en.wikipedia.org/wiki/Peopleware:_Productive_Projects_and_Teams">
  <header class="source">

      <a href="https://en.wikipedia.org/wiki/Peopleware:_Productive_Projects_and_Teams" target="_blank" rel="noopener nofollow ugc">en.wikipedia.org</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:250/381;"><img src="//upload.wikimedia.org/wikipedia/en/thumb/b/b8/Peopleware%2C_Productive_Projects_and_Teams.jpeg/250px-Peopleware%2C_Productive_Projects_and_Teams.jpeg" class="thumbnail" width="250" height="381"></div>

<h3><a href="https://en.wikipedia.org/wiki/Peopleware:_Productive_Projects_and_Teams" target="_blank" rel="noopener nofollow ugc">Peopleware: Productive Projects and Teams</a></h3>

<p>
Peopleware: Productive Projects and Teams is a 1987 book on the social side of software development, specifically managing project teams.  It was written by software consultants Tom DeMarco and Tim Lister, from their experience in the world of software development.  This book was revised in 1999 and 2013.
 Peopleware is a popular book about software organization management, what the authors describe as peopleware. The first chapter of the book claims, "The major problems of our work are not so m...</p>

  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>Or if you prefer something that’s not decades old (reading back over it, I have almost parroted this author’s points above in the comments above about building bridges and script-writing <img src="https://forum.elixirforum.com/images/emoji/apple/flushed_face.png?v=15" title=":flushed_face:" class="emoji" alt=":flushed_face:" loading="lazy" width="20" height="20">):<br>
Out of the software crisis (2022)</p><aside class="onebox allowlistedgeneric" data-onebox-src="https://softwarecrisis.baldurbjarnason.com/">
  <header class="source">
      <img src="https://softwarecrisis.baldurbjarnason.com/img/favicon-96x96.png" class="site-icon" alt="" width="96" height="96">

      <a href="https://softwarecrisis.baldurbjarnason.com/" target="_blank" rel="noopener nofollow ugc">softwarecrisis.baldurbjarnason.com</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/517;"><img src="https://softwarecrisis.baldurbjarnason.com/img/crisis-4-3.jpg" class="thumbnail" alt="" width="690" height="517"></div>

<h3><a href="https://softwarecrisis.baldurbjarnason.com/" target="_blank" rel="noopener nofollow ugc">Out of the Software Crisis: Systems-Thinking for Software Projects</a></h3>

  <p>Available in PDF and EPUB</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372759" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-372759" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372759"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="372765" data-post-id="372765">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="waseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/waseigo/120/34129_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  waseigo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>I actually think that the program <em>is</em> the design, which, uniquely to software amongst engineering disciplines, is also the product.</p>
</blockquote>
<p>Yes! The program (the code) <em>is</em> the design. But it’s only the product if you are in the business of selling the code itself. You can also sell pre-compiled binaries; then you aren’t selling the design–you’re selling the equivalent of a widget (barring the ability to duplicate the widget with marginally zero cost)? You could also be selling the UX that the design enables (SaaS)—but then the program isn’t the only part of the design; how it’s been deployed and how it’s operated is also part of the product.</p>
<blockquote>
<p>Consider what happens if you throw away all the design and instructions once the product is complete. With a production line producing widgets, if you throw away the (possibly CA) design, you still have the widgets. With software, you just have a computer.</p>
</blockquote>
<p>You might still have the binary, no? And just like you can reverse-engineer a widget, you can decompile (maybe) a binary, and derive some form of design.</p>
<p>I don’t get the analogy, TBH–or, rather, the difference.</p>
<blockquote>
<p>I might be triggering people</p>
</blockquote>
<p>I’m not triggered in the slightest, no worries–I love discussing topics like this!</p>
<blockquote>
<p>the output of software development being a set of instructions […]</p>
</blockquote>
<p>But wait. The equivalent is that the output of mechanical-system development is a set of instructions (drawings, etc.). So how is the above unique for software?</p>
<blockquote>
<p>estimating that process (my original comment to the blog post!) is almost impossible</p>
</blockquote>
<p>Oh, I don’t disagree in the slightest about estimation. And, in fact, the degree of mutability of the design (very special for software vs. other artifacts) is what makes this so difficult. See also: <a href="https://chiefmartec.com/2020/07/coastline-paradox-infinite-software-specialization-martech-fields/" class="inline-onebox" rel="noopener nofollow ugc">What the coastline paradox reveals about infinite software specialization (in martech and other fields) – chiefmartec</a></p>
<p>And so we’re back full circle to my original argument:</p>
<blockquote>
<p><em>The most important difference between software and other artifacts is its <strong>mutability and (relatively) much lower cost of engineering changes</strong>, especially in the early iterations, which carries over much better in the later iterations too!</em></p>
</blockquote>
<p>…to which I’d add: mutability not only in how easy it is to change something, but how many different ways there are to design and implement something and have it deliver on its promises in the same way, albeit maybe with different performance.</p>
<blockquote>
<p>Out of the software crisis (2022)</p>
</blockquote>
<p>Thanks, I’ll check it out!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372765" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-is-this-hard/72088/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-372765" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372765"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/72088/load_more?page=4">Load more posts (9 remaining)</a>
</div></template></turbo-stream>