paint-brush
Limit degrees of freedom in developmentby@ScalaWilliam
1,982 reads
1,982 reads

Limit degrees of freedom in development

by William NarmontasDecember 17th, 2016
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

<a href="https://www.scalawilliam.com/1612/limit-degrees-of-freedom/" target="_blank"><em>https://www.scalawilliam.com/1612/limit-degrees-of-freedom/</em></a>
featured image - Limit degrees of freedom in development
William Narmontas HackerNoon profile picture

https://www.scalawilliam.com/1612/limit-degrees-of-freedom/

Potential degrees of freedom in what you are working on:

  • Not knowing the tools well enough
  • Not knowing the domain well enough
  • Not having a clear scope
  • Changing scope before a previous requirement is achieved.

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.

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.

Easier to build a system that moves in one direction than in six.

There’s a dual to this: if you are trying to meet too many constraints, then you’ll never get to a solution.

Math helps

What a domain 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…

New domain and new tools? Can be quite confusing. So fix every variable but one.

If you want to learn a new tool, use the domains you already know.

If you want to solve in a new domain, use the tools you already know.

This is how I came up with the ‘Essential SBT for Scala’ guide to allow a newbie to get started with SBT and Scala with minimal Brownian motion.