<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Software on Pavan Yara</title><link>https://pavanyara.com/tags/software/</link><description>Recent content in Software on Pavan Yara</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><managingEditor>pavan.yara@gmail.com (Pavan Yara)</managingEditor><webMaster>pavan.yara@gmail.com (Pavan Yara)</webMaster><copyright>Pavan Yara</copyright><lastBuildDate>Thu, 16 Jan 2020 22:31:34 +0530</lastBuildDate><atom:link href="https://pavanyara.com/tags/software/index.xml" rel="self" type="application/rss+xml"/><item><title>Don't Just Roll the Dice - A usefully short guide to #softwarepricing</title><link>https://pavanyara.com/blog/dont-just-roll-the-dice/</link><pubDate>Thu, 16 Jan 2020 22:31:34 +0530</pubDate><author>pavan.yara@gmail.com (Pavan Yara)</author><guid>https://pavanyara.com/blog/dont-just-roll-the-dice/</guid><description>&lt;p&gt;How do you price your software? Is it art, science or magic?&lt;/p&gt;&#10;&lt;p&gt;How much attention should you pay to your competitors?&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://neildavidson.com/downloads/dont-just-roll-the-dice-2.0.0.pdf"&gt;This short handbook&lt;/a&gt; will provide you with the theory, practical advice and case studies you need to stop yourself from reaching for the dice.&lt;/p&gt;&#10;&lt;h3 id="table-of-contents"&gt;Table of Contents&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Chapter 01: Some – but not too much – Economics&lt;/li&gt;&#10;&lt;li&gt;Chapter 02: Pricing Psychology: What is your product worth?&lt;/li&gt;&#10;&lt;li&gt;Chapter 03: Pricing Pitfalls&lt;/li&gt;&#10;&lt;li&gt;Chapter 04: Advanced Pricing&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Chapter 05: What your price says about you (and how to change it)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description><content:encoded><![CDATA[<p>How do you price your software? Is it art, science or magic?</p>
<p>How much attention should you pay to your competitors?</p>
<p><a href="https://neildavidson.com/downloads/dont-just-roll-the-dice-2.0.0.pdf">This short handbook</a> will provide you with the theory, practical advice and case studies you need to stop yourself from reaching for the dice.</p>
<h3 id="table-of-contents">Table of Contents</h3>
<ul>
<li>Chapter 01: Some – but not too much – Economics</li>
<li>Chapter 02: Pricing Psychology: What is your product worth?</li>
<li>Chapter 03: Pricing Pitfalls</li>
<li>Chapter 04: Advanced Pricing</li>
<li>
<ul>
<li>Chapter 05: What your price says about you (and how to change it)</li>
</ul>
</li>
</ul>
]]></content:encoded></item><item><title>Things I Learnt The Hard Way (in 30 Years of Software Development)</title><link>https://pavanyara.com/blog/things-learnt-the-hard-way-programming/</link><pubDate>Fri, 28 Jun 2019 19:39:07 +0530</pubDate><author>pavan.yara@gmail.com (Pavan Yara)</author><guid>https://pavanyara.com/blog/things-learnt-the-hard-way-programming/</guid><description>&lt;p&gt;This is a cynical, clinical collection of things Julia Biason learnt in 30 years working with software development.&lt;/p&gt;&#10;&lt;p&gt;Again, some things are really cynical, others are long observations on different jobs.&lt;/p&gt;&#10;&lt;h2 id="before-you-start-writing-code"&gt;Before you start writing code&amp;hellip;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Spec First, Then Code&lt;/li&gt;&#10;&lt;li&gt;Write Steps as Comments&lt;/li&gt;&#10;&lt;li&gt;Gherkin Is Your Friend to Understand Expectations&lt;/li&gt;&#10;&lt;li&gt;Design Patters Are Used to Name Solution, Not Find Them&lt;/li&gt;&#10;&lt;li&gt;Thinking Data Flow Beats Patterns&lt;/li&gt;&#10;&lt;li&gt;The Magic Number Seven, Plus Or Minus Two&lt;/li&gt;&#10;&lt;li&gt;Cognitive Cost Is The Readability Killer&lt;/li&gt;&#10;&lt;li&gt;Learn The Basics of Functional Programming&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="testing-software"&gt;Testing Software&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Unit Tests Are Good, Integration Tests Are Gooder&lt;/li&gt;&#10;&lt;li&gt;Testing Every Function Creates Dead Code&lt;/li&gt;&#10;&lt;li&gt;Tests Make Better APIs&lt;/li&gt;&#10;&lt;li&gt;Make Tests That You Know How To Run On The Command Line&lt;/li&gt;&#10;&lt;li&gt;Good Languages Come With Tests&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="documenting-your-code"&gt;Documenting your code&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Documentation Is A Love Letter To Your Future Self&lt;/li&gt;&#10;&lt;li&gt;The Function Documentation Is Its Contract&lt;/li&gt;&#10;&lt;li&gt;If A Function Description Includes An &amp;ldquo;And&amp;rdquo;, It&amp;rsquo;s Wrong&lt;/li&gt;&#10;&lt;li&gt;Good Languages Come With Integrated Documentation&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="writing-code"&gt;Writing code&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Be Ready To Throw Your Code Away&lt;/li&gt;&#10;&lt;li&gt;Future Thinking Is Future Trashing&lt;/li&gt;&#10;&lt;li&gt;Don&amp;rsquo;t Use Booleans As Parameters&lt;/li&gt;&#10;&lt;li&gt;Beware of Interface Changes&lt;/li&gt;&#10;&lt;li&gt;It&amp;rsquo;s Better To Let The Application Crash Than Do Nothing&lt;/li&gt;&#10;&lt;li&gt;If You Know How To Handle It, Handle It&lt;/li&gt;&#10;&lt;li&gt;Types Say What Your Data Is&lt;/li&gt;&#10;&lt;li&gt;If Your Data Has a Schema, Use a Structure&lt;/li&gt;&#10;&lt;li&gt;Don&amp;rsquo;t Mess With Things Outside Your Project&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;More:&lt;/p&gt;</description><content:encoded><![CDATA[<p>This is a cynical, clinical collection of things Julia Biason learnt in 30 years working with software development.</p>
<p>Again, some things are really cynical, others are long observations on different jobs.</p>
<h2 id="before-you-start-writing-code">Before you start writing code&hellip;</h2>
<ul>
<li>Spec First, Then Code</li>
<li>Write Steps as Comments</li>
<li>Gherkin Is Your Friend to Understand Expectations</li>
<li>Design Patters Are Used to Name Solution, Not Find Them</li>
<li>Thinking Data Flow Beats Patterns</li>
<li>The Magic Number Seven, Plus Or Minus Two</li>
<li>Cognitive Cost Is The Readability Killer</li>
<li>Learn The Basics of Functional Programming</li>
</ul>
<h2 id="testing-software">Testing Software</h2>
<ul>
<li>Unit Tests Are Good, Integration Tests Are Gooder</li>
<li>Testing Every Function Creates Dead Code</li>
<li>Tests Make Better APIs</li>
<li>Make Tests That You Know How To Run On The Command Line</li>
<li>Good Languages Come With Tests</li>
</ul>
<h2 id="documenting-your-code">Documenting your code</h2>
<ul>
<li>Documentation Is A Love Letter To Your Future Self</li>
<li>The Function Documentation Is Its Contract</li>
<li>If A Function Description Includes An &ldquo;And&rdquo;, It&rsquo;s Wrong</li>
<li>Good Languages Come With Integrated Documentation</li>
</ul>
<h2 id="writing-code">Writing code</h2>
<ul>
<li>Be Ready To Throw Your Code Away</li>
<li>Future Thinking Is Future Trashing</li>
<li>Don&rsquo;t Use Booleans As Parameters</li>
<li>Beware of Interface Changes</li>
<li>It&rsquo;s Better To Let The Application Crash Than Do Nothing</li>
<li>If You Know How To Handle It, Handle It</li>
<li>Types Say What Your Data Is</li>
<li>If Your Data Has a Schema, Use a Structure</li>
<li>Don&rsquo;t Mess With Things Outside Your Project</li>
</ul>
<p>More:</p>
<ul>
<li><a href="https://blog.juliobiason.net/thoughts/things-i-learnt-the-hard-way/">https://blog.juliobiason.net/thoughts/things-i-learnt-the-hard-way/</a></li>
<li><a href="https://blog.juliobiason.net/books/things-i-learnt/">https://blog.juliobiason.net/books/things-i-learnt/</a></li>
</ul>
]]></content:encoded></item><item><title>Engineering Principles</title><link>https://pavanyara.com/blog/engineering-principles/</link><pubDate>Wed, 26 Jun 2019 21:44:58 +0530</pubDate><author>pavan.yara@gmail.com (Pavan Yara)</author><guid>https://pavanyara.com/blog/engineering-principles/</guid><description>&lt;p&gt;From 12factor.net:&lt;/p&gt;&#10;&lt;p&gt;I.&lt;a href="https://12factor.net/codebase"&gt;Codebase&lt;/a&gt;. One codebase tracked in revision control, many deploys&lt;/p&gt;&#10;&lt;p&gt;II.&lt;a href="https://12factor.net/dependencies"&gt;Dependencies&lt;/a&gt;. Explicitly declare and isolate dependencies&lt;/p&gt;&#10;&lt;p&gt;III. &lt;a href="https://12factor.net/config"&gt;Config&lt;/a&gt;. Store config in the environment&lt;/p&gt;&#10;&lt;p&gt;IV. &lt;a href="https://12factor.net/backing-services"&gt;Backing services&lt;/a&gt;. Treat backing services as attached resources&lt;/p&gt;&#10;&lt;p&gt;V. &lt;a href="https://12factor.net/build-release-run"&gt;Build, release, run&lt;/a&gt;. Strictly separate build and run stages&lt;/p&gt;&#10;&lt;p&gt;VI. &lt;a href="https://12factor.net/processes"&gt;Processes&lt;/a&gt;. Execute the app as one or more stateless processes&lt;/p&gt;&#10;&lt;p&gt;VII. &lt;a href="https://12factor.net/port-binding"&gt;Port binding&lt;/a&gt;. Export services via port binding&lt;/p&gt;&#10;&lt;p&gt;VIII. &lt;a href="https://12factor.net/concurrency"&gt;Concurrency&lt;/a&gt;. Scale out via the process model&lt;/p&gt;&#10;&lt;p&gt;IX. &lt;a href="https://12factor.net/disposability"&gt;Disposability&lt;/a&gt;. Maximize robustness with fast startup and graceful shutdown&lt;/p&gt;</description><content:encoded><![CDATA[<p>From 12factor.net:</p>
<p>I.<a href="https://12factor.net/codebase">Codebase</a>. One codebase tracked in revision control, many deploys</p>
<p>II.<a href="https://12factor.net/dependencies">Dependencies</a>.  Explicitly declare and isolate dependencies</p>
<p>III. <a href="https://12factor.net/config">Config</a>.  Store config in the environment</p>
<p>IV. <a href="https://12factor.net/backing-services">Backing services</a>.  Treat backing services as attached resources</p>
<p>V. <a href="https://12factor.net/build-release-run">Build, release, run</a>.  Strictly separate build and run stages</p>
<p>VI. <a href="https://12factor.net/processes">Processes</a>.  Execute the app as one or more stateless processes</p>
<p>VII. <a href="https://12factor.net/port-binding">Port binding</a>.  Export services via port binding</p>
<p>VIII. <a href="https://12factor.net/concurrency">Concurrency</a>. Scale out via the process model</p>
<p>IX. <a href="https://12factor.net/disposability">Disposability</a>.  Maximize robustness with fast startup and graceful shutdown</p>
<p>X. <a href="https://12factor.net/dev-prod-parity">Dev/prod parity</a>. Keep development, staging, and production as similar as possible</p>
<p>XI. <a href="https://12factor.net/logs">Logs</a>. Treat logs as event streams</p>
<p>XII. <a href="https://12factor.net/admin-processes">Admin processes</a>. Run admin/management tasks as one-off processes</p>
]]></content:encoded></item></channel></rss>