Permalink
Switch branches/tags
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
155 lines (147 sloc) 7.31 KB
<!DOCTYPE html>
<html>
<head>
<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="https://fonts.googleapis.com/css?family=Roboto:400,700,900%7CRoboto+Mono" rel="stylesheet">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/themes/prism.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.13/clipboard.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/prism.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/plugins/toolbar/prism-toolbar.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/plugins/toolbar/prism-toolbar.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/components/prism-java.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/components/prism-scala.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/themes/prism-okaidia.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"></script>
<style type="text/css">
body {
font-family: 'Roboto', sans-serif;
line-height:1.6;
color:rgb(5,5,5);
background:rgb(255,255,255);
max-width:60em;
}
code {
font-family: 'Roboto Mono', monospace;
}
header {
padding-bottom: 1em;
}
header pre {
border:2px solid;
border-color: firebrick;
text-align: center;
padding:0.6em;
overflow-x:scroll;
}
header code {
font-size:1.6em;
font-weight:bold;
}
ul {
list-style-type: square;
}
a {
color:darkslategrey;
}
a:hover {
color:darkslateblue;
}
.token.operator {
background:none;
}
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 {
display:none;
}
nav ul {
list-style-type: none;
}
nav li:before {
content: "- ";
}
figure {
display:inline-block;
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; }
</style>
<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/">
<!-- http://ogp.me/ -->
<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="https://plus.google.com/u/0/103489630517643950426/">
<link rel="publisher" href="https://plus.google.com/u/0/103489630517643950426/">
<meta property="og:image" content="https://avatars2.githubusercontent.com/u/2464813">
<meta itemprop="image" content="https://avatars2.githubusercontent.com/u/2464813">
<meta name="twitter:image" content="https://avatars2.githubusercontent.com/u/2464813">
<meta name="author" content="William Narmontas">
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@ScalaWilliam">
</head>
<body>
<article class="h-entry">
<header>
<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="https://github.com/ScalaWilliam/ScalaWilliam.com/blob/master/1612/limit-degrees-of-freedom/index.html">edited on GitHub</a>.</p>
<p>Original article at <a href="https://hackernoon.com/limit-degrees-of-freedom-in-development-4c543bb6f806" class="u-syndication">Hacker Noon</a>.</p>
</header>
<section class="e-content">
<p>Potential degrees of freedom in what you are working on:</p>
<ul>
<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>
</ul>
<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>
<figure>
<img src="move-in-one-direction.jpeg">
<figcaption>Easier to build a system that moves in one direction than in six.</figcaption>
</figure>
<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>
<figure>
<img src="math-helps.png">
<figcaption>Math helps</figcaption>
</figure>
<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>
</section>
</article>
</body>
</html>