<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.0">Jekyll</generator><link href="https://www.chronos-desk.com/blog/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.chronos-desk.com/blog/" rel="alternate" type="text/html" /><updated>2022-01-03T17:18:35-06:00</updated><id>https://www.chronos-desk.com/blog/feed.xml</id><title type="html">Chronos Blog</title><subtitle>The official blog of Chronos, the task management IDE.</subtitle><entry><title type="html">Should Software Developers Estimate?</title><link href="https://www.chronos-desk.com/blog/should-you-estimate.html" rel="alternate" type="text/html" title="Should Software Developers Estimate?" /><published>2021-12-27T00:00:00-06:00</published><updated>2021-12-27T00:00:00-06:00</updated><id>https://www.chronos-desk.com/blog/should-you-estimate</id><content type="html" xml:base="https://www.chronos-desk.com/blog/should-you-estimate.html">&lt;!--
&lt;div class=&quot;chronos-blog-abstract&quot;&gt;
&lt;b&gt;TLDR&lt;/b&gt;&amp;mdash;Numerous
&quot;No Estimates&quot; methodologies exist to assist &lt;i&gt;teams&lt;/i&gt; with predicting
their software delivery efforts without requiring individuals to estimate.
&lt;br&gt;
&lt;br&gt;
But we should make a distinction between these managerial estimation approaches 
and the &lt;i&gt;individual&lt;/i&gt; &lt;i&gt;skill set&lt;/i&gt; of estimating. Software developers 
that don't learn how to estimate do their own personal development and career
a large disservice.
&lt;/div&gt;
--&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#the-problem-with-no-estimates&quot;&gt;The Problem With “No Estimates”&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-biggest-loser-in-the-no-estimates-game&quot;&gt;The Biggest Loser in the “No Estimates” Game&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#yes-estimates-and-the-software-developer&quot;&gt;“Yes Estimates” and the Software Developer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;the-problem-with-no-estimates&quot;&gt;The Problem With “No Estimates”&lt;/h3&gt;

&lt;p&gt;A significant portion of the software industry has developed techniques and 
processes to avoid estimation.&lt;/p&gt;

&lt;p&gt;Agile methodologies, for example, commonly
replace &lt;em&gt;time&lt;/em&gt;-scale estimation units with alternate vocabulary like “T-shirt sizes” 
and “story points”; &lt;a href=&quot;https://en.wikipedia.org/wiki/Planning_poker&quot;&gt;poker planning&lt;/a&gt; 
is another example which removes individuals providing estimates in favor of
collective, team-based task and story sizing.&lt;/p&gt;

&lt;p&gt;Of course, these methodologies have their motivations: they’re a response
to repeated failed attempts at estimating and predicting software projects.
Software businesses that want to remain competitive must have at least &lt;em&gt;some&lt;/em&gt; 
strategy for deducing software costs and delivery times. To many, these 
“No Estimates” processes seem to be the best options at the table.&lt;/p&gt;

&lt;p&gt;But there’s a root problem with these methods. They’re &lt;em&gt;compensatory&lt;/em&gt;: they 
ultimately exist to cover for a lack of skill set among members of the team and
the organization. Software developers are notoriously bad at estimating, and many are simply 
loath to give estimates at all.&lt;/p&gt;

&lt;p&gt;This lack of the estimation skill set among developers is completely understandable:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A vast majority of software developers are not taught estimation skills, neither 
in industry nor academia.&lt;/li&gt;
  &lt;li&gt;Estimates are almost ubiquitously misunderstood by business managers, who misuse
estimates to make unreasonable commitments—sometimes coercively, but often
with well-meaning intentions. In turn, estimates (and estimators) are frequently
scapegoated when such commitments are inevitably failed to be met.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These two conditions alone create a destructive feedback loop in which 
estimating becomes a taboo, almost dangerous, endeavor. No wonder the industry
trend is to shy &lt;em&gt;away&lt;/em&gt; from estimates.&lt;/p&gt;

&lt;p&gt;But we have a paradox: businesses—from nascent startups to established
enterprises—require predictability, and yet predictions (estimation) from
individuals are politicized and ultimately shunned.&lt;/p&gt;

&lt;p&gt;“No Estimates” methodologies are an attempt to reconcile this 
paradox by treating the predictability problem with kid gloves—absolve
individuals from giving estimates while contorting ways to extrapolate estimates 
“at the top”.&lt;/p&gt;

&lt;h2 id=&quot;the-biggest-loser-in-the-no-estimates-game&quot;&gt;The Biggest Loser in the “No Estimates” Game&lt;/h2&gt;

&lt;p&gt;The software industry has 
devised many variations of the “No Estimates”&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; process, 
some more sophisticated than others, but all effectively the same: all an attempt 
to “approximate” and “pad” over a team’s inability to produce and manage estimates 
explicitly.&lt;/p&gt;

&lt;p&gt;One might say, so what? Isn’t this approach sufficient? Why not embrace the
“No Estimates” processes, and carry on?&lt;/p&gt;

&lt;p&gt;For businesses and management, these processes are notoriously
inconsistent: they (sometimes) work when they work, but often fail from
iteration to iteration. Furthermore, they are sensitive
to project instability such as personnel changes, etc. And because 
these processes purposefully obfuscate or 
hide the terms of the problem (i.e., time), they cloud visibility, leaving teams 
and their managers wondering why this week’s or month’s sprint was such a disaster 
when the last one was delivered precisely on time&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;The ultimate reason for a team’s failure or success on any point of skill, of 
course, should be obvious:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A team is &lt;em&gt;as good as&lt;/em&gt; its constituent individuals—e.g., a team’s &lt;em&gt;programming&lt;/em&gt;
ability is as good as the programming skills of any one of its team members;
the same is true for a team’s &lt;em&gt;estimation&lt;/em&gt; ability.&lt;/li&gt;
  &lt;li&gt;Any methodology or process that explicitly removes the estimation responsibility from each
team member is guaranteed to not develop that skill set in its team members.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So while “No Estimates” processes may assist a specific team in hobbling through 
occasional predictability, the software developer is the biggest loser in these
methodologies—by design, these processes leave a crucial individual skill
set entirely undeveloped in each individual team member.&lt;/p&gt;

&lt;p&gt;Not only does this deficit in skill set place a limit on one’s overall expertise,
it is increasingly a career limiter especially in the context of other 
developers that do cultivate the skill set.&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;yes-estimates-and-the-software-developer&quot;&gt;“Yes Estimates” and the Software Developer&lt;/h2&gt;

&lt;p&gt;Should software developers estimate? That is, is the estimation skill set worth
learning, practicing and cultivating?&lt;/p&gt;

&lt;p&gt;The truth is—at least for time being—it is a seller’s market for
software developers. A modicum of technical skill set can make you reasonably
competitive in today’s general hiring market.&lt;/p&gt;

&lt;p&gt;Still, this isn’t enough to become complacent. As the software industry 
matures and as technology advances remain apace, predictability in software
delivery—and the skill set that can produce it—is becoming
increasingly significant for market participants across the board.&lt;/p&gt;

&lt;p&gt;Ultimately, nothing beats an intrinsic motivation to master one’s craft beyond
just optimizing your paycheck. More often than not, &lt;strong&gt;the estimation skill set
is simply in the blind spot of software developers&lt;/strong&gt; that otherwise want to master
their craft.&lt;/p&gt;

&lt;p&gt;In a healthy businesses, managerial stakeholders (product, project,
and people managers, e.g.) quickly zero in on programmers that can technically
deliver with predictability.&lt;/p&gt;

&lt;p&gt;Pure technical ability is increasingly becoming table stakes.
Highly capable and technical programmers are “managed off” mission
critical projects precisely because they can’t predictably deliver.
Conversely, developers who are willing and, crucially, &lt;em&gt;able&lt;/em&gt; to 
give reliable estimates can expect to rise above others to have the attention of
business leaders.&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;One major “secret” to advancing in a technical career is learning how to 
give accurate estimates.&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Observations like this one have been made by experienced practitioners for a
long while, but are increasingly entering the zeitgeist. The estimation skill
set grows increasingly relevant as more software developers acquire and
leverage it.&lt;/p&gt;

&lt;p&gt;The good news is that—in spite of whatever upstream process one’s team uses
to manage their “sprints” and deliveries—software developers can learn,
practice, and master the estimation skill set &lt;em&gt;on their own&lt;/em&gt;, in private,
independent of and adjacent to their team’s process.&lt;/p&gt;

&lt;p&gt;This is worth doing. Estimation is a transferable skill set. The skill set can
be practiced and cultivated even by software developers that aren’t in
business contexts yet able to leverage predictability. By not practicing the 
skill set, naturally it won’t be there in contexts where it can be leveraged.&lt;/p&gt;

&lt;p&gt;Given that estimations are often exploited and politicized, practicing
estimation in private, as a local activity is an &lt;em&gt;ideal&lt;/em&gt; way to improve. Even for experienced
estimators, a large part of the process will &lt;em&gt;always&lt;/em&gt; be personal. It is very
easy to practice, observe results, and iterate &lt;em&gt;alone&lt;/em&gt; to perfect the skill.&lt;/p&gt;

&lt;p&gt;Specifically how to estimate and how to grow the estimation skill set is 
crucial to the argument posited here. A future post will soon elaborate on how
to estimate in detail.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; You will see even the “Yes Estimates” camp fall into the trap 
when giving estimates but effectively negating them with arbitrary padding 
factors and number fuzzing.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;2&lt;/sup&gt; And why they didn’t notice the approaching failure until the last minute.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;3&lt;/sup&gt; The good news is that the skill set can be learned. More on 
&lt;em&gt;how&lt;/em&gt; to learn estimation and grow the skill set will come in a future post.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;4&lt;/sup&gt; &lt;em&gt;Able&lt;/em&gt; is the key word here. Estimation is a skill set. You’ll 
&lt;em&gt;know&lt;/em&gt; when you’ve developed the skill set enough to give confident estimates
at the right time. A future blog post will break down the path to developing
this skill set.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;5&lt;/sup&gt; From
&lt;a href=&quot;https://jacobian.org/2021/may/20/estimation/&quot;&gt;https://jacobian.org/2021/may/20/estimation/&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><category term="chronos,estimation" /><summary type="html"></summary></entry><entry><title type="html">You’re Already Estimating Your Software Projects</title><link href="https://www.chronos-desk.com/blog/you-already-are-estimating.html" rel="alternate" type="text/html" title="You’re Already Estimating Your Software Projects" /><published>2021-12-22T00:00:00-06:00</published><updated>2021-12-22T00:00:00-06:00</updated><id>https://www.chronos-desk.com/blog/you-already-are-estimating</id><content type="html" xml:base="https://www.chronos-desk.com/blog/you-already-are-estimating.html">&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#you-are-always-estimating&quot;&gt;You Are Always Estimating&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#why-does-this-matter&quot;&gt;Why Does This Matter?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#how-many-candies-does-your-code-have&quot;&gt;How Many Candies Does Your Code Have?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#getting-back-on-track&quot;&gt;Getting Back on Track&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The industry debate over software estimation is one of false alternatives: either 
you are &lt;strong&gt;pro-estimation&lt;/strong&gt; or you are &lt;strong&gt;anti-estimation&lt;/strong&gt; and that is effectively
the end of the story.&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately this dichotomy is a complete misdirection, confounds understanding,
and ultimately leaves teams and organizations throwing their hands up in the
air and missing out on practical ways to significantly reduce risk of failure 
in their software projects.&lt;/p&gt;

&lt;p&gt;The truth is that &lt;em&gt;everyone&lt;/em&gt; estimates their software projects—in actual
&lt;em&gt;time&lt;/em&gt; units!—whether they
are fully aware of it, or not; the primary difference is only in whether one
reifies (writes down) their estimates or not.&lt;/p&gt;

&lt;h3 id=&quot;you-are-always-estimating&quot;&gt;You Are Always Estimating&lt;/h3&gt;

&lt;p&gt;One of the most repeated, and understandable, points from anti-estimation proponents 
is that because estimates are inaccurate, we can conclude they’re worthless and 
simply ignore them. But any decision to initiate a software project (or project
iteration) is ultimately rooted in some assumption about time—i.e., an 
&lt;em&gt;estimate&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Rarely does one start a software project—or individual task 
for that matter—without some assumption about how long it could take. There is 
always an assumption about time, even if that assumption is tacit and unspoken.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;When an experienced tech lead takes on a large project, she assumes some time-based 
scope to the work; it is rarely a good look for one’s career prospects to be working
on a technical project for years with no deliverable or outcomes.&lt;/li&gt;
  &lt;li&gt;When a manager or tech lead assigns a task to a new engineer on a project, the
general assumption is that the task has some time-oriented scope; it would be
downright cruel to give a new junior their first task that was expected to
take a year or even several months.&lt;/li&gt;
  &lt;li&gt;It goes without saying that serious entrepreneurs &amp;amp; startups expect to
deliver something specific within the scope of their runway—even if it is a
non-production artifact like a prototype to obtain a next round of funding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, we could keep going with this list. Even the most anti- of the
anti-estimation set will find themselves—possibly &lt;em&gt;sotto voce&lt;/em&gt;, behind
a closed office door—asking, or answering: “How long do you think that’ll take?”&lt;/p&gt;

&lt;p&gt;The point is this, though. There is no sensible 
&lt;em&gt;business&lt;/em&gt; context in which time doesn’t matter for some software effort. We are
always estimating, even if we are doing it intuitively or unconsciously.&lt;/p&gt;

&lt;p&gt;Furthermore, we effectively estimate this way not just at the launch of a project 
but at each day and each week that we continue in our efforts: that is, we are 
always assuming that the work ahead of us fits into some reasonable scope of 
time. If we believed otherwise, we’d stop or switch priorities.&lt;/p&gt;

&lt;h3 id=&quot;why-does-this-matter&quot;&gt;Why Does This Matter?&lt;/h3&gt;

&lt;p&gt;This is not just a rhetorical point. There is a fundamental misunderstanding in the
popular discourse about the value of estimating, and it has dramatic cost to
software delivery outcomes.&lt;/p&gt;

&lt;p&gt;The question is not whether we should be estimating; we already are all the time.
The question is whether we should be &lt;em&gt;writing down&lt;/em&gt; our estimates as we make or 
revise them.&lt;/p&gt;

&lt;p&gt;To the credit of the anti-estimation crowd, estimates are almost always 
inaccurate out of the gate. But here is one of the fallacies in the estimation 
debate: the idea that estimates must be correct before we consider them of value.&lt;/p&gt;

&lt;p&gt;This fallacy that estimates must be initially correct is where the train first
goes off the tracks for many people: it is how we, as the software industry, end 
up with either an outright disdain for estimates, or—worse—a
purposeful distortion of estimates by replacing &lt;em&gt;time&lt;/em&gt;-based estimates with
things like “story points”, “dev units”, T-shirt sizing, and the like: i.e., 
fantasy units devised to purposefully &lt;em&gt;hide&lt;/em&gt; our inaccuracies.&lt;/p&gt;

&lt;p&gt;To understand why these reactions are so counterproductive and damaging, we should
consider what would happen if we approached other areas of our work in the same 
manner.&lt;/p&gt;

&lt;h3 id=&quot;how-many-candies-does-your-code-have&quot;&gt;How Many Candies Does Your Code Have?&lt;/h3&gt;

&lt;p&gt;Imagine if we took the same approach with our software &lt;em&gt;code&lt;/em&gt; that we took with
estimates.&lt;/p&gt;

&lt;p&gt;Just as with estimates, our code is &lt;em&gt;regularly&lt;/em&gt; wrong. 
Either because it has accidental defects or performance issues, because our
understanding of our domain has changed, because the market or product 
requirements have evolved, etc. In all such cases, our code is wrong by any 
measure and requires modification.&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;But unlike with estimation, we can’t avoid writing our code down; our
compilers and runtime environments wouldn’t have it. We could, however, try to 
distort matters—as some do with estimates, when they replace time units
with story points and the like—in order to limit exposing
ourselves to our own inevitable code mistakes.&lt;/p&gt;

&lt;p&gt;Instead of identifying defects, performance issues, and feature gaps in our code
and working to prioritize and fix them, we could instead bucket issues together under
a new pleasant-sounding name—say, “candies”—and try to make decisions
within this new vocabulary.&lt;/p&gt;

&lt;p&gt;“We discovered approximately five pieces of candy—two small and three 
big—in our code today.”&lt;/p&gt;

&lt;p&gt;This sounds a lot nicer than reality, but it leaves us with &lt;em&gt;much less&lt;/em&gt; ability
to make rational and risk-reducing decisions about where we should go next.
Most people would agree that defects should be prioritized and fixed each 
according to &lt;em&gt;estimable&lt;/em&gt; qualities: severity, customer impact, time-to-fix, etc.
By obfuscating things with an artificial vocabulary, we blindfold ourselves from
rational decision-making.&lt;/p&gt;

&lt;p&gt;Of course most of us would deem this approach to code absurd, but we don’t balk 
when a similar approach is applied to writing down our estimates and plans.&lt;/p&gt;

&lt;p&gt;“We discovered four more tasks to complete before we can go live with Feature 
X—all T-shirt sizes Adult Medium…”&lt;/p&gt;

&lt;h3 id=&quot;getting-back-on-track&quot;&gt;Getting Back on Track&lt;/h3&gt;

&lt;p&gt;The pro-estimates and anti-estimates debate has forced many in the industry 
into this absurdity.&lt;/p&gt;

&lt;p&gt;But the truth is there is no reason to distort reality with fantastical vocabulary
(story points, dev units, candies, or what-have-you), nor is there reason to entirely 
mask reality by pretending that we’re not estimating when we effectively are.&lt;/p&gt;

&lt;p&gt;How did we lose our way, and how do we get back?&lt;/p&gt;

&lt;p&gt;We lost our way because we did this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/plan-to-outcome.png&quot; alt=&quot;&quot; class=&quot;chronos-center-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We wrote down our plans (tasks and corresponding estimates) and then immediately
“published” our upstream commitments to the initial—certainly inaccurate—version
of our plan.&lt;/p&gt;

&lt;p&gt;The equivalent if we did this with code would be announcing
to customers that we were feature- or product-complete, the minute any relevant
code was committed anywhere, before any completeness, quality assurance, performance
testing measures were taken. Once again, most of us would consider this absurd.&lt;/p&gt;

&lt;p&gt;So, of course, we were doomed to failure. Along the way, our &lt;em&gt;actual steps&lt;/em&gt; diverge
from our original conception. We inevitably discover new tasks and we lengthen and shorten
other tasks and then blow past our commitment:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/plan-to-overshoot.png&quot; alt=&quot;&quot; class=&quot;chronos-center-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When it comes to our code, we have specific measures and tooling to protect ourselves 
against defects and performance issues. These measures are understood by industry and
tailored uniquely for the particular teams and business contexts that leverage them. 
Unit testing, continuous delivery processes and tools, peer code review, including 
checklist-based code reviews, and so on.&lt;/p&gt;

&lt;p&gt;These measures have all evolved to allow us to ship product to customers with
explicit or implicit quality and SLA guarantees.&lt;/p&gt;

&lt;p&gt;Planning and estimation deserve the same industry attention and evolution of tooling
and processing that we’ve given to code, without any purposeful obfuscation.&lt;/p&gt;

&lt;p&gt;The way back to sanity is to &lt;em&gt;write down&lt;/em&gt; our plans (tasks and 
estimates—in real &lt;em&gt;time&lt;/em&gt; units) and embrace, as we do with code, that
they’ll be inaccurate. That is, we must not treat plans as static artifacts; we
must &lt;em&gt;regularly&lt;/em&gt; evaluate our plans and continuously &lt;em&gt;refactor&lt;/em&gt; them. (As with code, 
we can leverage the help of tooling for both evaluation and refactoring.)&lt;/p&gt;

&lt;p&gt;If we can apply processes and tooling to ensure sufficient defect rates and
performance latencies within our software systems, then we can certainly apply
processes and tooling to ultimately determine reliable delivery times. Both are 
a matter of process, tools and skill set, and we don’t need to obfuscate either.&lt;/p&gt;

&lt;p&gt;Code processes are familiar. What processes can we apply to our plans and 
estimates?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Peer review.&lt;/strong&gt; Much like peer code review, peer expertise can be 
applied to improve plan accuracy and task coverage.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Checklist-based review of plans.&lt;/strong&gt; Checklist-based code reviews are powerful
ways to reduce defects in shipped code. Likewise, specific mistakes in plans and estimates
are frequently repeated, and reviewing plans with checklists yields greater accuracy.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;History.&lt;/strong&gt; Consulting history and applying historic on-task time to future 
estimates is notoriously effective at producing accurate plans and estimates. It
should be pointed out that if we refactor plans as we go, we will &lt;em&gt;always&lt;/em&gt; have
a perfect historical record of our actual historical delivery times&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; for leverage
when making future plans and refactoring future tasks and estimates.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Scope reduction.&lt;/strong&gt; This is one of the most underappreciated and powerful 
tools when reconciling plans with upstream commitments. Software development
efforts frequently have enormous room for scope reduction, but attempting scope
reduction without a plan and estimates is like trying to find your keys in the dark.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a limited list. As an industry if we pursue this path, we can evolve both industry 
and context-specific, personalized expertise. Some are already there and capitalizing on it.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; This plays out on Twitter, among other places, as an evergoing 
&lt;a href=&quot;https://twitter.com/search?q=%23yesestimates&quot;&gt;#yesestimates&lt;/a&gt;
and &lt;a href=&quot;https://twitter.com/search?q=%23noestimates&quot;&gt;#noestimates&lt;/a&gt; hashtag 
battle.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;2&lt;/sup&gt; Incidentally estimates are often wrong for the exact-same 
reasons that our code can be wrong.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;3&lt;/sup&gt; The estimate for a task becomes precise and accurate &lt;em&gt;at least&lt;/em&gt;
 at the moment we complete the task. So if we are regularly refactoring, every
task will finally achieve its accurate estimate: the time it actually took to
complete the task. Of course, this is a degenerate case to make a point.&lt;/p&gt;</content><author><name></name></author><category term="chronos,estimation" /><summary type="html">You Are Always Estimating Why Does This Matter? How Many Candies Does Your Code Have? Getting Back on Track</summary></entry><entry><title type="html">Coupling and Estimation</title><link href="https://www.chronos-desk.com/blog/coupling-and-estimation.html" rel="alternate" type="text/html" title="Coupling and Estimation" /><published>2021-12-16T00:00:00-06:00</published><updated>2021-12-16T00:00:00-06:00</updated><id>https://www.chronos-desk.com/blog/coupling-and-estimation</id><content type="html" xml:base="https://www.chronos-desk.com/blog/coupling-and-estimation.html">&lt;p&gt;When I was a junior software engineer, I had a mentor who gave me two of the
most valuable tools I’ve carried and still carry throughout my career.&lt;/p&gt;

&lt;p&gt;The first tool was this one—&lt;strong&gt;how to break coupling&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/break-coupling.png&quot; alt=&quot;How to break coupling&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If the left-hand side of the diagram are two components with
mutual dependencies, then the right-hand side is the solution. That is,
two coupled components are decoupled by introducing a third component that 
becomes the new dependency.&lt;/p&gt;

&lt;p&gt;This visual formula is simple but the fundamental skill set that can leverage it effectively
is deep and takes years of practice to master and become part of one’s instinctual
process.&lt;/p&gt;

&lt;p&gt;The second tool I inherited from my mentor was the practice of 
personal &lt;strong&gt;work estimation and time tracking&lt;/strong&gt;, which, along
with component decoupling, is another practice that cannot be 
ignored by any software practitioner wanting to move beyond 
“&lt;a href=&quot;https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/&quot;&gt;expert beginner&lt;/a&gt;”.&lt;/p&gt;

&lt;p&gt;These two skill sets are intimately related; estimating the cost of manipulating
decoupled systems is far cheaper and more predictable than estimating and predicting
delivery within a heavily coupled system. (A future post will have to elaborate on this.)&lt;/p&gt;

&lt;p&gt;Interestingly, both of these skill sets—decoupling and time estimation—are 
highly controversial in the software industry. It is not uncommon for both of these 
skill sets to be looked at with near disdain by certain circles of software practitioners.&lt;/p&gt;

&lt;p&gt;I’ve always found this surprising because I believe the ultimate goal of any creative
professional or business is to master time management. With more time, we can create
&lt;em&gt;more&lt;/em&gt;—thus increasing our chances of creating &lt;em&gt;valuable&lt;/em&gt; things.&lt;/p&gt;

&lt;p&gt;I don’t think there’d be much
disagreement on this if the point were pressed. Time has always been the most limited 
resource, by far, when I consider my own career experience, as well as being a frequent 
outside observer of other creative and business endeavours—when software projects 
fail, it’s ultimately because of a misuse or misunderstanding about time.&lt;/p&gt;

&lt;p&gt;There is a natural correlation between the &lt;em&gt;difficulty&lt;/em&gt;
it takes to master a skill set and its value, but I suspect also to 
how much resistance there is to the skill set. If someone is telling
us there are riches at the top of a steep mountain but we are at the bottom, that’s
going to be some bitter news.&lt;/p&gt;

&lt;p&gt;The trick with decoupling and time estimation is that if you start &lt;em&gt;valuing&lt;/em&gt; and
practicing these tools early in your career—&lt;em&gt;as&lt;/em&gt; you cultivate your other
technical skill sets—then you’ll find yourself incrementally moving up the 
steep mountain instead of having at some point to look at it from the bottom
to decide whether there is value up there.&lt;/p&gt;</content><author><name></name></author><category term="chronos,estimation" /><summary type="html">When I was a junior software engineer, I had a mentor who gave me two of the most valuable tools I’ve carried and still carry throughout my career.</summary></entry><entry><title type="html">Did I deliver value on June 17th?</title><link href="https://www.chronos-desk.com/blog/chronos/2021/12/13/did-i-deliver-value.html" rel="alternate" type="text/html" title="Did I deliver value on June 17th?" /><published>2021-12-13T00:00:00-06:00</published><updated>2021-12-13T00:00:00-06:00</updated><id>https://www.chronos-desk.com/blog/chronos/2021/12/13/did-i-deliver-value</id><content type="html" xml:base="https://www.chronos-desk.com/blog/chronos/2021/12/13/did-i-deliver-value.html">&lt;p&gt;I developed &lt;a href=&quot;https://chronos-desk.com&quot;&gt;Chronos&lt;/a&gt;, a task management tool, to 
manage my personal task lists, compare execution strategies and project 
future delivery dates. Specifically, I wanted a
&lt;a href=&quot;https://www.inkandswitch.com/local-first/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;local-first&lt;/a&gt;
task app where I could quickly update estimates, add and reorder tasks, and see
a calendar of projected completion dates.&lt;/p&gt;

&lt;p&gt;One thing I quickly realized when building Chronos was that, almost for 
free—so long as I kept the task estimate for the current 
task updated as I worked on it—Chronos would accumulate a reliable record of my historical 
day-to-day on task time.&lt;/p&gt;

&lt;p&gt;I’ve been
&lt;a href=&quot;https://en.wikipedia.org/wiki/Eating_your_own_dog_food&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;eating my own dog food&lt;/a&gt; in 2021, so I now have an accurate history of
all of my on-task days for the year. As the year is almost to a close, now is a good time 
to look back and ask—professional speaking, did I do anything of value?&lt;/p&gt;

&lt;p&gt;For fun, I’ll generate a random date from 2021 and look at my Chronos
history to see what I was up to:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;date&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-j&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; %Y-%m-%d &lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt; +&lt;span class=&quot;k&quot;&gt;$((&lt;/span&gt;RANDOM%365&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt;d 2021-01-01 +%Y-%m-%d
2021-06-17&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;What was I doing on June 17th?&lt;/p&gt;

&lt;p&gt;Here’s a screenshot of my task list in Chronos, representing some tasks that
I completed in June:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/jun17-task.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Note: I’m going to have to obfuscate my data a bit, as my weekly
tasks come from my full-time salaried position and I don’t
wish to leak any proprietary information.&lt;/p&gt;

&lt;p&gt;Here, I’ve blurred out the
other tasks and obfuscated the focused one’s description by translating
it through multiple languages, which is why it reads a bit hilariously: 
“Strengthen the management and development of the governor of the central bank”.&lt;/p&gt;

&lt;p&gt;I don’t know how “central bank” came out in the translation;
I’m not in the banking sector&lt;a href=&quot;#footnotes&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;; 
but the obfuscated text at least captures the essence of what I was working on:
an implementation task that wasn’t testing or bug-fixing, for example. So on June 17th, I was
working directly on the implementation of an actual feature—always good to know&lt;a href=&quot;#footnotes&quot;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A few things in the Chronos UX. To the right of the task description
are task links
(&lt;img src=&quot;/blog/assets/external-link.png&quot; alt=&quot;&quot; /&gt;); in this case, one is to a Github pull request related
to this task and the other to a related
issue in my team’s collaboration system (Jira). This was all useful data at execution time
and remains relevant for our forensic historical data analysis.&lt;/p&gt;

&lt;p&gt;The calendar on the right shows the actual on-task days for the task. In fact,
I can walk the entire lineage of my tasks for the year and see the
on-task days for each one:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/chronos-yip.gif&quot; alt=&quot;&quot; class=&quot;chronos-center-image chronos-image-border&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once again, apologies for the blurred view—just note
the calendar highlighting. As focus moves from task to
task (on the left), the calendar highlights the corresponding days on-task
(on the right).&lt;/p&gt;

&lt;p&gt;One thing to glean from this blurred view is what a real-world task list looks like from
a distance.&lt;/p&gt;

&lt;p&gt;Real-world software delivery is a messy affair but, by following a
&lt;a href=&quot;https://www.chronos-desk.com/rules.html&quot;&gt;simple process&lt;/a&gt; of using estimates to 
check off tasks, Chronos makes it straightforward to produce a reliable record of
personal day-to-day on-task data over time.&lt;/p&gt;

&lt;p&gt;One thing of interest with my June 17th task is that I didn’t complete the task
on that day; I was interrupted and switched over to a “discovered” task
related to a dependent “caching” need.&lt;/p&gt;

&lt;p&gt;(This “caching” task
is blurred out in the screenshot above, but I can see from my task lineage that 
I eventually returned back to my original task after a four-day interruption.)&lt;/p&gt;

&lt;p&gt;This gives me an idea about what might account for some inaccuracies in
my 2021 planning and delivery&lt;a href=&quot;#footnotes&quot;&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt; that I can leverage for
improvement going forward.&lt;/p&gt;

&lt;p&gt;For a simple first analysis I’ve categorized my 2021 tasks into coarse-grained categories:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Implementation&lt;/strong&gt; (86 on-task days) design and code tasks for core features delivery&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Testing&lt;/strong&gt; (40 days) tasks to design, implement and pass unit tests&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Bugs&lt;/strong&gt; (26 days) tasks related to bug fixing post feature-delivery&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Discovered&lt;/strong&gt; (50 days) tasks (both impl and testing) not in original plan for core features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/2021-pie.png&quot; alt=&quot;&quot; class=&quot;chronos-center-image chronos-image-border2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Historic data is notoriously useful for producing accurate future estimates; not only will 
I consult my task history when estimating future tasks, but I can also make some macro
observations from this end-of-year vantage point.&lt;/p&gt;

&lt;p&gt;Interestingly, 25% of my year was spent on discovered tasks, tasks that didn’t make
it into the original plans for my core feature deliveries.&lt;/p&gt;

&lt;p&gt;After further
analysis of my task history, most of these discovered tasks occurred due to faulty
assumptions about system dependency capabilities: features I’d assumed existed in core
infrastructure that would serve my top-level feature delivery. This is certainly
something to feed into the 2022 checklist, to improve planning accuracy where needed.&lt;/p&gt;

&lt;p&gt;Another note of interest here is that my time spent on Testing comprised less
than half of my overall Implementation tasks. Whether or not this is meaningful
is highly context-specific; for my project, I 
know this is on the short side and I’ll likely start the year off with an audit of
test coverage over the relevant features before product ships.&lt;/p&gt;

&lt;h3 id=&quot;what-else-can-we-do-with-personal-task-data&quot;&gt;What else can we do with personal task data?&lt;/h3&gt;

&lt;p&gt;While this personal data is extremely valuable for estimating and predicting future 
outcomes, it can also be used to objectively answer questions about personal 
performance and throughput, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Negotiating compensation and career advancement.&lt;/strong&gt; Day-to-day personal task 
data can also be used as an &lt;em&gt;objective&lt;/em&gt; basis for negotiating compensation 
or career advancement with our manager or employer. Trying to pitch our 
worth without accurate data can be lossy and difficult, as otherwise we’re 
left stitching together an imperfect recollection of our historic on-task time.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Reviewing on-task data for self-improvement.&lt;/strong&gt; Just as different code implementations
have better or worse runtime complexities and architectural qualities, the iterative
steps and strategies we spend delivering value are at risk of being severely 
non-optimal in time if we don’t look at them reflectively, or even have our plans
reviewed by competent peers.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Keeping ourselves focused and honest.&lt;/strong&gt; For the entrepreneurial-minded, especially—continuously
evaluating our time with respect to value delivery is essential to keeping ourselves
honest to our outcome objectives, and in maximizing our limited time resources. Did we spend
our past year, month, or week on the right things; can we do better in the next 
iteration?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It can be a difficult thing to do—looking at &lt;em&gt;objective&lt;/em&gt; personal data—as 
it might dispel certain imaginations of ourselves or our work. Have we been delivering in accordance
to the 10x, or even 1x&lt;a href=&quot;#footnotes&quot;&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;, engineer, that we imagine ourselves
to be?&lt;/p&gt;

&lt;p&gt;Or might we
surprise ourselves: maybe our pull request throughput wasn’t up from last year,
but, in terms of value delivery and overall strategy, we’re up&lt;a href=&quot;#footnotes&quot;&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/a&gt;—in any case,
we can only assess these things with objective data in hand.&lt;/p&gt;

&lt;p&gt;Incidentally the kind of reflective analysis described in this post is not an exclusively end-of-year 
activity for me—not in the least:
consulting my on-task past is a near-daily activity that
results in a constant reconsideration—via &lt;em&gt;task refactoring&lt;/em&gt;, in Chronos-speak—of my future 
plans.&lt;/p&gt;

&lt;p&gt;Chronos was explicitly designed to make this kind of daily dynamic planning a
fluid and integral part of the developer workflow.&lt;/p&gt;

&lt;h3 id=&quot;try-chronos&quot;&gt;Try Chronos&lt;/h3&gt;

&lt;p&gt;If you’d like to try Chronos, you can &lt;a href=&quot;https://chronos-desk.com/download.html&quot;&gt;download&lt;/a&gt;
it for a free twenty-day trial. The Chronos &lt;a href=&quot;https://chronos-desk.com/guide/tutorial.html&quot;&gt;tutorial&lt;/a&gt;
is a step-by-step introduction to using Chronos effectively.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

&lt;p&gt;&lt;sup&gt;0&lt;/sup&gt; Chronos will highlight on-task dates for both past and &lt;em&gt;future&lt;/em&gt; tasks.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; Or am I? 🤔&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;2&lt;/sup&gt; As dutiful software engineers, we know that
there’s other important work beyond just writing implementation
code—unit and system testing, refactoring 
&amp;amp; design investment, utility &amp;amp; domain abstraction are all worthwhile activities—but 
investing too much on tasks other than material delivery has destroyed many a software
project and is equally an anti-pattern. Being able to track and analyse our data
in this regard and tune our efforts accordingly can lead to significant risk reduction or
competitive advantage.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;3&lt;/sup&gt; Planning and estimates are typically inaccurate until the last moment,
but the estimation skill set can be improved and leveraged over time to
significant business and career advantage. That’s one motivation for tracking and analyzing 
objective personal task data.&lt;/p&gt;

&lt;p&gt;Software developers that evolve their technical skill set without attention to the
estimation and planning skill set do their professional self a massive injustice. 
For the initiated, Jacob Kaplan-Moss’s 
&lt;a href=&quot;https://jacobian.org/series/estimation/&quot;&gt;Estimating Software Projects&lt;/a&gt; series nails it.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;4&lt;/sup&gt; 😜&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;5&lt;/sup&gt; Mastery optimizes &lt;code&gt;Value / LOC&lt;/code&gt; over time. The hallmark of
the
“&lt;a href=&quot;https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;expert beginner&lt;/a&gt;”
is lots of code and not much material value at the top. How do you know you’re not 
stuck in expert beginner-land? ⟶ Analyse personal data objectively, with respect
to &lt;em&gt;value delivered&lt;/em&gt;.&lt;/p&gt;</content><author><name></name></author><category term="chronos" /><summary type="html">I developed Chronos, a task management tool, to manage my personal task lists, compare execution strategies and project future delivery dates. Specifically, I wanted a local-first task app where I could quickly update estimates, add and reorder tasks, and see a calendar of projected completion dates.</summary></entry><entry><title type="html">Chronos: The New Way to Manage Tasks</title><link href="https://www.chronos-desk.com/blog/chronos/2021/12/10/announcing-chronos.html" rel="alternate" type="text/html" title="Chronos: The New Way to Manage Tasks" /><published>2021-12-10T00:00:00-06:00</published><updated>2021-12-10T00:00:00-06:00</updated><id>https://www.chronos-desk.com/blog/chronos/2021/12/10/announcing-chronos</id><content type="html" xml:base="https://www.chronos-desk.com/blog/chronos/2021/12/10/announcing-chronos.html">&lt;p&gt;Our tools shape us. Ideally, they shape us for the better, but that’s not always
the case.&lt;/p&gt;

&lt;p&gt;Traditional checklist and “to-do” apps have wide adoption, but they miss the mark
for software developers and creative professionals, and ultimately these tools shape
us for the worse.&lt;/p&gt;

&lt;p&gt;To be clear, personal task management is necessary for successful professional 
outcomes — for both individuals and their teams&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;
— but the traditional tools get it all wrong.&lt;/p&gt;

&lt;p&gt;Why is this?&lt;/p&gt;

&lt;p&gt;For one, traditional task apps are too general, attempting to serve both
consumers  knocking out grocery lists and professionals executing creative projects, 
as if grocery shopping were effectively the same use case as creative delivery.&lt;/p&gt;

&lt;p&gt;“Get More Done!” is a familiar sticker tag on these products. At some level, we
know this is the wrong goal. Completing 1,000 tasks in record time does not
translate into project success, and yet software practitioners commonly operate 
as if this were the case — even as software projects regularly fail.&lt;/p&gt;

&lt;p&gt;Our tools shape us.&lt;/p&gt;

&lt;p&gt;In the traditional “to do” app view of the world, tasks are managed as an
unordered bag of items to be completed and “checked off”, encouraging a kind of
blind walk toward outcomes.&lt;/p&gt;

&lt;p&gt;But successful creative execution involves strategy: a conscious, &lt;em&gt;ordered&lt;/em&gt;
sequence of steps to reach our goal — that is to say, we require a &lt;em&gt;plan&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;But plans are worthless, aren’t they?&lt;/p&gt;

&lt;h3 id=&quot;yes-plans-are-worthless&quot;&gt;Yes, Plans are Worthless…&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Plans are worthless; but planning is indispensable&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Interestingly, Eisenhower’s popular wisdom here (about the optimality of planning) 
has a theoretical proof&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;,
but, practically speaking, we can understand the need for planning by first 
considering the traditional task app’s process of managing tasks.&lt;/p&gt;

&lt;p&gt;With traditional tools, we may loosely order tasks with priority tags and the 
like, but over time our core operations are effectively adding and checking
off disordered items in a bag:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/bags-of-tasks.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If plans are worthless, one can see the appeal of this process: we’ve altogether
removed any semblance of plan or strategy from our process and tooling.&lt;/p&gt;

&lt;p&gt;But,
while this process is
&lt;a href=&quot;https://scholarworks.utep.edu/cs_techrep/1102/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;provably suboptimal&lt;/a&gt;,
we don’t need a proof to see why it’s so deficient.&lt;/p&gt;

&lt;p&gt;For one, this process leaves us with no meaningful history or data over time. 
At any point, the finished tasks in our bag may, at best, 
have the date at which we marked them as done —
but understanding the historic cost and relative order of those tasks is 
not available or reliable for analysis. There is not much data for us to look
back on to assess our performance.&lt;/p&gt;

&lt;p&gt;Secondly, at any time in our process, we have no clear or reliable picture of our future.
Traditional task apps offer “future-projecting” features such as setting a “due date” 
or priority level for a task, with which we might record our hope for 
when a task would be complete or what we might work on soon.&lt;/p&gt;

&lt;p&gt;But “hope” is the key word here; these features reflect wishful thinking more than
reality.&lt;/p&gt;

&lt;p&gt;In the real world, as we all know, new tasks are regularly discovered, and existing 
tasks are frequently de-prioritized and re-prioritized. 
Yesterday’s due dates quickly grow stale, losing all meaning, while tasks marked
as “Important” sit incomplete for months.&lt;/p&gt;

&lt;h3 id=&quot;planning-is-indispensable&quot;&gt;Planning is Indispensable&lt;/h3&gt;

&lt;p&gt;Plans, &lt;em&gt;static&lt;/em&gt; plans, are indeed worthless, precisely because of this flux 
inherent in real world execution. But for the same reason, planning — the 
&lt;em&gt;dynamic&lt;/em&gt;, continuous activity of it — is indispensable.&lt;/p&gt;

&lt;p&gt;Instead of a bag of tasks, consider a strictly ordered, linear sequence of tasks
that is continuously revised to reflect the latest reality:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/linear-tasks.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Instead of due dates we specify estimates and leave it to our
tooling to dynamically project completion dates, keeping them accurate
as our estimates and the relative order of tasks inevitably 
and frequently change.&lt;/p&gt;

&lt;p&gt;Instead of “checking off” tasks we speak the same language about our past as we
do the future: the estimate of any completed task is precisely how long the task
took to complete.&lt;/p&gt;

&lt;p&gt;By keeping current tasks active via estimates, this new process
can be &lt;a href=&quot;https://www.chronos-desk.com/rules.html&quot;&gt;as simple as checking a box&lt;/a&gt;;
but, unlike checking a box, data isn’t lost: we accumulate, at every stage of
our work, a fully accurate per-day diary of our historic on-task time.&lt;/p&gt;

&lt;p&gt;This is especially invaluable historic data, which we can use to personally 
assess our own performance to date, demonstrate our own productivity objectively
to career stakeholders, and most significantly this is data that we can use 
to improve future estimates and, consequently, outcomes.&lt;/p&gt;

&lt;h3 id=&quot;introducing-chronos-the-task-management-ide&quot;&gt;Introducing Chronos: The Task Management “IDE”&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://chronos-desk.com&quot;&gt;Chronos&lt;/a&gt; is a new desktop tool — an 
&lt;a href=&quot;https://en.wikipedia.org/wiki/Integrated_development_environment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;“IDE”&lt;/a&gt;
for task management — that seeks to make personal time
tracking and planning as intuitive and flexible as using traditional 
apps, but powered for the software developer and creative practitioner.&lt;/p&gt;

&lt;p&gt;As software developers, we leverage IDEs to continuously refactor our code 
whenever it doesn’t fit reality — either because we have defects, new
feature requests, or because our knowledge of the world and our problem 
domain has inevitably changed.&lt;/p&gt;

&lt;p&gt;This is the same relationship we ought to have with our plans.&lt;/p&gt;

&lt;p&gt;Chronos puts continuous refactoring tools for plans, tasks, and estimates on our
desktop and at our fingertips, delivering value on multiple levels: first, by offering 
support for managing and quickly refactoring lists of tasks; secondly, as a generator 
of accurate historical on-task time, and, third, by supporting estimation and 
completion forecasting for future tasks and plans.&lt;/p&gt;

&lt;p&gt;Chronos makes each of these levels opt-in &lt;em&gt;at any time&lt;/em&gt; in the lifecycle of a
project plan.&lt;/p&gt;

&lt;h3 id=&quot;our-tools-shape-us&quot;&gt;Our Tools Shape Us&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Unfortunately, it is common to see that estimating software 
project timelines is hard and just … give up. There’s an established “No Estimates”
position that says we should entirely stop giving estimates on software projects
&lt;sup&gt;&lt;a href=&quot;#footnotes&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;#footnotes&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Estimation, especially in the software industry, is a hot button word, but
this is unfortunate: the surest way to find ourselves stuck in an 
“&lt;a href=&quot;https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;expert beginner&lt;/a&gt;”
skill set is to ignore time and estimates while otherwise cultivating our technical and professional 
delivery capabilities.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;One major “secret” to advancing in a technical career is learning how to give
accurate estimates.&lt;/p&gt;

  &lt;p&gt;This is true of individual contributors and engineering 
managers: you can pretty easily become a Senior Engineer or Engineering Manager
without needing to be good at estimates, but to go much farther than that you’ll
likely need to learn this skill.&lt;/p&gt;

  &lt;p&gt;And it is a skill: estimation can be learned.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Chronos is designed to meet software developers (and other creatives)
where they are in their professional journey while fostering the advancement
of one’s own personal estimation skill set with minimal required buy-in.&lt;/p&gt;

&lt;p&gt;Estimates are the lingua franca of Chronos: the singular model used for predicting
the completion of future tasks &lt;em&gt;and&lt;/em&gt; for the recording of actual historic task 
on-task time. Estimates of future tasks are &lt;em&gt;optional&lt;/em&gt; and Chronos embraces
the real-world expectation that estimates will be frequently inaccurate
and regularly revised.&lt;/p&gt;

&lt;p&gt;Chronos anchors its users into an effortless practice of linking day-to-day
creative professional pursuits to time and estimation.&lt;/p&gt;

&lt;h3 id=&quot;try-chronos&quot;&gt;Try Chronos&lt;/h3&gt;

&lt;p&gt;If you’d like to try Chronos, you can &lt;a href=&quot;https://chronos-desk.com/download.html&quot;&gt;download&lt;/a&gt;
it for a free twenty-day trial. The Chronos &lt;a href=&quot;https://chronos-desk.com/guide/tutorial.html&quot;&gt;tutorial&lt;/a&gt;
is a step-by-step introduction to using Chronos effectively.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h4&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; Team collaboration and project management tools sit a layer above the personal
and serve a separate purpose, but look over the shoulder of any successful team member
practitioner or individual contributor and you’ll find a list of tasks captured in an app,
text editor, sticky notes system, or similar.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;2&lt;/sup&gt; This quote is attributed to Dwight D. Eisenhower 1890–1969 American
Republican statesman, 34th President 1953–61.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;3&lt;/sup&gt; See: Garcia Contreras, Angel F.; Ceberio, Martine; and Kreinovich, Vladik,
“Plans Are Worthless but Planning Is Everything: A Theoretical Explanation of Eisenhower’s Observation”
(2017). Departmental Technical Reports (CS). 1102
&lt;a href=&quot;https://scholarworks.utep.edu/cs_techrep/1102/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://scholarworks.utep.edu/cs_techrep/1102/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;4&lt;/sup&gt; Jacob Kaplan-Moss’s
&lt;a href=&quot;https://jacobian.org/series/estimation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Estimating Software Projects&lt;/a&gt;
is an excellent series on the topic of software project estimation. The series covers why the
practice of estimation is invaluable with practical tips on how to do it well.&lt;/p&gt;</content><author><name></name></author><category term="chronos" /><summary type="html">Our tools shape us. Ideally, they shape us for the better, but that’s not always the case.</summary></entry></feed>