-
Notifications
You must be signed in to change notification settings - Fork 0
/
working-with-me.html
58 lines (58 loc) · 5.75 KB
/
working-with-me.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<head><title>Working With Me</title><link href="tufte-css/tufte.css" rel="stylesheet" /><script src="http:https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><h1>Working With Me</h1><p class="subtitle"><a href="about-me.html">John Jacobsen</a></p><div><p><div class="epigraph"><blockquote>Great things are done by a series of small things brought
together.<footer>Vincent Van Gogh</footer></blockquote></div></p><p><h1>Some things about me</h1><p>In no particular order: I tend to
acquire a reputation as the “clean code guy.” I prefer to retire
technical debt sooner rather than later. I like to strike the
right balance between thinking things through in advance, and
coding experimentally, discovering the truths of the problem at
hand as I work. I enjoy tackling easy problems, because it’s
satisfying to get things done quickly, and I like hard problems
that make me grow, think, and do things I never imagined
possible. I like a mix of coding solo and working closely with
others, the latter case especially if teaching can occur. I like
working in beautiful environments that stoke creativity and
passion. I am opinionated, especially with regards to the tools
and approaches I’ve arrived at through many years of growth, but I
love learning new things from thoughtful people who are good at
their craft.</p></p><p><h1>Practices I Like</h1><p><h2>“Test First”</h2><p><span>I am not a TDD zealot, but I’ve had my tuchas saved many times
by automated tests, and been burned more than a few by not
having them. True TDD<span><label class="margin-toggle sidenote-number" for="G__18172"></label><input class="margin-toggle" id="G__18172" type="checkbox" /><span class="sidenote">Write the right minimum failing test first; write
the minimum production code needed to make all tests pass;
refactor to get to clean, DRY code; repeat.</span></span> is not
without its costs, but it is one of my favorite strategies
for ensuring good test coverage and, often, better design. I
frequently combine REPL development and higher-level,
end-to-end tests rather than testing slavishly at multiple
levels of abstraction. I keep in mind the cost of tests in
terms of code “stiffness,” and try to write the <em>right</em> tests.</span></p></p><p><h2>Continuous Testing</h2><p>Most or all tests get run every time you save the file (at
least), as often as once per minute or so. If your tests take
too long for this to work, there’s probably an architectural
or performance problem that needs to be looked at.</p></p><p><h2>Promiscuous Pairing</h2><p><span>The team I currently work on has adopted “promiscuous pairing”<span><label class="margin-toggle sidenote-number" for="G__18173"></label><input class="margin-toggle" id="G__18173" type="checkbox" /><span class="sidenote">See A. Belshee, <em>Promiscuous
Pairing and Beginner’s Mind</em> (Google for PDF)</span></span> as a regular practice. We pair-program for 90 minute
blocks, switching pairs twice a day (and solo programming or
going to meetings the rest of the time).</span></p><p>This practice, while often tiring, is a great teaching
technique. At any given time, there is little tactical
knowledge that I have that I don’t trust my teammates to have,
and vice-versa. People who practice promiscuous pairing
(including us) relate the pleasures of teaching a technique to
someone and then seeing another teammate using the same
technique a short time later.</p></p><p><h2>Solo Programming</h2><p>As much as I value pair programming, I get great satisfaction
from immersing myself in a hard problem, exploring different
paths, researching approaches, and pushing against the walls of
possibility until the walls crumble and a new vista opens in
front of me. This sort of immersion comes most naturally if I
have long stretches of uninterrupted time, something that,
admittedly, can be hard to come by.</p></p><p><h2>Retrospectives</h2></p><p><h2>Kanban over Scrum</h2></p><p><h2>Clean code</h2><p>Whenever I touch a piece of code, I try to leave it in better
shape than I found it in. I use style guides and build style
checking tools into automated builds, because I’ve found that
better and more readable code results.</p></p><p><h2>Continuous Integration</h2></p></p><p><h1>Default Tools</h1><p>I use the following tools on a daily or near-daily basis.</p><p><h2>Clojure</h2></p><p><h2>Emacs</h2><p><span>Configuration <a href="http:https://github.com/eigenhombre/emacs-config">here</a>.</span></p></p><p><h2>Docker</h2></p></p><p><h1>Working with Teams</h1><p>...</p></p><p><h1>Technical Strengths</h1><p><h2>Troubleshooting and debugging</h2></p></p></div><div><p><a href="about-me.html">about</a>|<a href="content.html">all posts</a></p><p>© 2016 <a href="about-me.html">John Jacobsen</a>. Created with <a href="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/eigenhombre/unmark">unmark</a>. CSS by <a href="https://edwardtufte.github.io/tufte-css/">Tufte-CSS</a>.</p></div><script type="text/javascript">var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-40279882-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http:https://www')
+ '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();</script></body>