Switch branches/tags
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
155 lines (147 sloc) 7.31 KB
<!DOCTYPE html>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<link href=",700,900%7CRoboto+Mono" rel="stylesheet">
<link rel="stylesheet" href="//">
<script src=""></script>
<script src=""></script>
<link rel="stylesheet" href="">
<script src=""></script>
<script src=""></script>
<script src=""></script>
<link rel="stylesheet" href="">
<script src=""></script>
<style type="text/css">
body {
font-family: 'Roboto', sans-serif;
code {
font-family: 'Roboto Mono', monospace;
header {
padding-bottom: 1em;
header pre {
border:2px solid;
border-color: firebrick;
text-align: center;
header code {
ul {
list-style-type: square;
a {
a:hover {
.token.operator {
nav button {
box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;
font-family: inherit;
font-size: 100%;
padding: .5em 1em;
color: #444;
border: 1px solid #999;
border: 0 rgba(0,0,0,0);
background-color: #E6E6E6;
text-decoration: none;
border-radius: 2px;
nav.hide ul {
nav ul {
list-style-type: none;
nav li:before {
content: "- ";
figure {
text-align: center;
font-style: italic;
font-size: smaller;
text-indent: 0;
border: thin silver solid;
box-shadow: 1px 1px 3px black;
margin: 0.5em;
padding: 0.5em;
.clear { clear:both; }
<title>Limit degrees of freedom in development</title>
<meta name="twitter:title" content="Limit degrees of freedom in development">
<meta property="og:title" content="Limit degrees of freedom in development">
<meta itemprop="name" content="Limit degrees of freedom in development">
<meta property="og:url" content="/1612/limit-degrees-of-freedom/">
<link rel="canonical" href="/1612/limit-degrees-of-freedom/">
<!-- -->
<meta property="og:type" content="article">
<meta property="article:published_time" content="2016-12-17">
<meta property="article:modified_time" content="2016-12-17">
<meta property="og:description" content="William Narmontas describes how limiting yourself to one direction can help.">
<meta itemprop="description" content="William Narmontas describes how limiting yourself to one direction can help.">
<meta name="description" content="William Narmontas describes how limiting yourself to one direction can help.">
<meta name="twitter:description" content="William Narmontas describes how limiting yourself to one direction can help.">
<meta property="og:site_name" content="Scala William">
<link rel="author" href="">
<link rel="publisher" href="">
<meta property="og:image" content="">
<meta itemprop="image" content="">
<meta name="twitter:image" content="">
<meta name="author" content="William Narmontas">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@ScalaWilliam">
<article class="h-entry">
<h1 class="p-name">Limit degrees of freedom in development</h1>
<h2>By <a href="/" class="u-author">William Narmontas</a>, <a href="/1612/limit-degrees-of-freedom/" class="u-url"><time class="dt-published" datetime="2016-12-17T11:21:25.101Z">December 17, 2016</time></a></h2>
<p>This page can be <a href="">edited on GitHub</a>.</p>
<p>Original article at <a href="" class="u-syndication">Hacker Noon</a>.</p>
<section class="e-content">
<p>Potential degrees of freedom in what you are working on:</p>
<li>Not knowing the tools well enough</li>
<li>Not knowing the domain well enough</li>
<li>Not having a clear scope</li>
<li>Changing scope before a previous requirement is achieved.</li>
<p>Recently a colleague of mine was rewriting code from one language to another, and trying to make it add a new feature and trying to fix a bug in the domain logic. He was doing too much and making no progress.</p>
<p>Earlier in time, when I was learning Scala I was trying to implement a gaming statistics system with distributed facilities and all sorts of nice sweet ideas. But I got nowhere, so I kept for a while reducing and reducing my scope — to the point that only the immediate thing I am working on was the only degree of freedom to move in.</p>
<img src="move-in-one-direction.jpeg">
<figcaption>Easier to build a system that moves in one direction than in six.</figcaption>
<p>There’s a dual to this: if you are trying to meet too many constraints, then you’ll never get to a solution.</p>
<img src="math-helps.png">
<figcaption>Math helps</figcaption>
<p>What a <em>domain</em> is: it’s the business problem you’re trying to solve. An algorithm. A user interface. The user’s needs. Finance or eCommerce or media publishing or…</p>
<p>New domain and new tools? Can be quite confusing. So fix every variable but one.</p>
<blockquote><strong>If you want to learn a new tool, use the domains you already know.</strong></blockquote>
<blockquote><strong>If you want to solve in a new domain, use the tools you already know.</strong></blockquote>
<p>This is how I came up with the ‘<a href="/essential-sbt/">Essential SBT for Scala</a>’ guide to allow a newbie to get started with SBT and Scala with minimal Brownian motion.</p>