Skip to content

Instantly share code, notes, and snippets.


How to estimate effort

By Golo Roden, translated from German with the help of DeepL

Every developer knows the challenge of estimating effort for development code. Very few like to do it. Why is estimating so unpopular, why is it even necessary, and what should you look for?

Why estimate effort?

The question of why it's necessary to estimate effort at all is easy to answer. Knowing how long a task is expected to take is essential for planning who in a team can do what and when. Even across team boundaries, a certain amount of time planning is essential; after all, teams have to be coordinated and resources have to be procured. In addition, other departments such as marketing also have an interest in being involved in planning at an early stage.

View t6500-gc.out
Initialized empty Git repository in /home/virtualbox/git/git-for-windows/t/trash directory.t6500-gc/.git/
expecting success of 6500.1 'setup':
# do not let the amount of physical memory affects gc
# behavior, make sure we always pack everything to one pack by
# default
git config gc.bigPackThreshold 2g
+ git config gc.bigPackThreshold 2g
ok 1 - setup
dscho / azure-pipelines-hacks.user.js
Last active Jan 8, 2020
A TamperMonkey script adding useful tweaks to the Azure Pipelines UI
View azure-pipelines-hacks.user.js
// ==UserScript==
// @name Azure Pipelines Hacks
// @namespace
// @version 0.5
// @description Miscellaneous hacks for Azure Pipelines
// @source
// @updateURL
// @downloadURL
// @author dscho
// @match*/_build*
// ==UserScript==
// @name Add QR to
// @namespace
// @version 0.2
// @description Adds a QR code ready for scanning next to the URL once a file is seeded.
// @source
// @updateURL
// @downloadURL
// @author dscho
// @match
dscho / git.git-helper.user.js
Last active Aug 11, 2020
Assorted helpful tweaks for git.git
View git.git-helper.user.js
// ==UserScript==
// @name Assorted helpful tweaks for git.git
// @version 0.02
// @description Helps maintain git.git PRs and commit comments
// @match*
// @source
// @updateURL
// @downloadURL
// @run-at document-end
// @connect
dscho / hide-gitgitgadget-git-merge-button.user.js
Last active Apr 14, 2019 — forked from aripollak/hide-github-merge.user.js
Userscript to disable the Merge button inside GitGitGadget's Git pull requests
View hide-gitgitgadget-git-merge-button.user.js
// ==UserScript==
// @name Assorted helpful tweaks for GitGitGadget's Git fork
// @version 0.12
// @description Removes the merge button on the GitHub `gitgitgadget/git` project, as PRs there are never to be merged. Adds more buttons.
// @source
// @match*
// @updateURL
// @downloadURL
// @run-at document-end
// @grant GM_xmlhttpRequest
View Fiji_Fractal.ijm
dim = 256; /* width / height */
frames = 20;
red = 101;
green = 164;
blue = 227;
zoomIntoX = 4;
zoomIntoY = 4;
dscho /
Created May 8, 2015
A simple test for the claim that `Plugin`s with `DialogListener`s are not macro-recordable.
import ij.IJ;
import ij.gui.DialogListener;
import ij.gui.GenericDialog;
import ij.plugin.PlugIn;
import java.awt.AWTEvent;
* A simple test for the claim that {@link Plugin}s with a
* {@link DialogListener} are not macro-recordable.
View kill-process-tree.c
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <tlhelp32.h>
static int get_process_tree(DWORD *list, int len, int max_len)
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
int i;
dscho / ao_coreaudio.c.patch
Created Feb 25, 2014
Patch for MPlayer's C99 for loops declaring variables
View ao_coreaudio.c.patch
diff --git a/libao2/ao_coreaudio.c b/libao2/ao_coreaudio.c
index 34374f4..ce587db 100644
--- a/libao2/ao_coreaudio.c
+++ b/libao2/ao_coreaudio.c
@@ -368,7 +368,7 @@ static void print_help(void)
OSStatus err;
UInt32 i_param_size;
- int num_devices;
+ int num_devices, i;