<story><title>Attitudes That Lead to Maintainable Code</title><url>https://spin.atomicobject.com/2017/03/07/attitudes-maintainable-code/</url></story><parent_chain><item><author>cousin_it</author><text>I think you can write any program using only advanced concepts from the problem domain, not advanced concepts from programming itself. For example, I&amp;#x27;ll happily implement a difficult numerical algorithm for inverting a matrix, but I won&amp;#x27;t write a monad framework in C++ for that. IMO there are almost no projects that call for programming cleverness (as opposed to problem domain cleverness). You can get very far with boring imperative code that any beginner can read, with powerful algorithms introduced only locally and documented clearly.</text></item></parent_chain><comment><author>manmal</author><text>With some caveats. Execute 10 network requests in parallel on background threads, then reconcile their results, after that fire off another 3 requests in parallel (again, on a background thread),  reconcile all the values you got so far, and return to the main thread. Oh and repeat the whole thing every time the user session&amp;#x27;s token changes, or the user requests a manual refresh. Also don&amp;#x27;t forget to cancel all running requests when the process is interrupted before it is finished. One more thing: If one request fails, bubble the error to the main thread and skip all subsequently planned requests.&lt;p&gt;You CAN solve this with counters and locks (be careful about deadlocks though), but you will save yourself a lot of pain if you just use a FRP framework. You will also be able to easily react to the things you forgot (&amp;quot;Oh the requests should also be halted and retried after connectivity is lost&amp;quot;).&lt;p&gt;So where do you draw the line? Do you spare your coworkers the agony of learning FRP or do you implement something where you suspect it will horribly crash and burn in production?</text></comment>
<story><title>Attitudes That Lead to Maintainable Code</title><url>https://spin.atomicobject.com/2017/03/07/attitudes-maintainable-code/</url></story><parent_chain><item><author>cousin_it</author><text>I think you can write any program using only advanced concepts from the problem domain, not advanced concepts from programming itself. For example, I&amp;#x27;ll happily implement a difficult numerical algorithm for inverting a matrix, but I won&amp;#x27;t write a monad framework in C++ for that. IMO there are almost no projects that call for programming cleverness (as opposed to problem domain cleverness). You can get very far with boring imperative code that any beginner can read, with powerful algorithms introduced only locally and documented clearly.</text></item></parent_chain><comment><author>jasim</author><text>Give me my procedures, conditionals, and loops, and I shall move mountains.&lt;p&gt;Assembler (Prince of Persia): &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;jmechner&amp;#x2F;Prince-of-Persia-Apple-II&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;jmechner&amp;#x2F;Prince-of-Persia-Apple-II&lt;/a&gt;&lt;p&gt;BASIC: &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;softwareengineering.stackexchange.com&amp;#x2F;questions&amp;#x2F;149457&amp;#x2F;was-classical-basic-ever-used-for-commercial-software-development-and-if-so-ho&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;softwareengineering.stackexchange.com&amp;#x2F;questions&amp;#x2F;14945...&lt;/a&gt;</text></comment>