<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Glenn Vanderburg</title>
    <description>Web home of Glenn Vanderburg.
</description>
    <link>http://vanderburg.org/</link>
    <atom:link href="http://vanderburg.org/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Mon, 11 May 2026 22:02:21 -0500</pubDate>
    <lastBuildDate>Mon, 11 May 2026 22:02:21 -0500</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Reading Broadly: A List of Good Books</title>
        <description>&lt;p&gt;This morning I gave a keynote at the &lt;a href=&quot;https://conferences.oreilly.com/software-architecture/sa-ny&quot;&gt;O’Reilly Software Architecture
Conference&lt;/a&gt; called “Roaming Free: The Power of Reading Outside Your
Field”.  Several people asked me to post a list of links to the books I talked
about, so here it is.&lt;/p&gt;

&lt;h2 id=&quot;books-others-have-read&quot;&gt;Books Others Have Read&lt;/h2&gt;

&lt;p&gt;The first part of the talk gives real examples of non-software books that have been the source of interesting ideas in our field.  Here are those books:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Timeless-Way-Building-Christopher-Alexander/dp/0195024028&quot;&gt;&lt;em&gt;The Timeless Way of Building&lt;/em&gt;&lt;/a&gt; by Christopher Alexander&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199&quot;&gt;&lt;em&gt;A Pattern Language&lt;/em&gt;&lt;/a&gt; by Christopher Alexander&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Design-Everyday-Things-Revised-Expanded/dp/0465050654&quot;&gt;&lt;em&gt;The Design of Everyday Things&lt;/em&gt;&lt;/a&gt; by Donald Norman&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/How-Buildings-Learn-Happens-Theyre/dp/0140139966&quot;&gt;&lt;em&gt;How Buildings Learn&lt;/em&gt;&lt;/a&gt; by Stewart Brand&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Death-Life-Great-American-Cities/dp/067974195X&quot;&gt;&lt;em&gt;The Death and Life of Great American Cities&lt;/em&gt;&lt;/a&gt; by Jane Jacobs&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.scientificamerican.com/article/the-revolutionary-bridges-of-robert/&quot;&gt;“The Revolutionary Bridges of Robert Maillart”&lt;/a&gt; by David Billington (Scientific American, July 2000)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Engineers-Dreams-Builders-Spanning-America/dp/0679760210&quot;&gt;&lt;em&gt;Engineers of Dreams&lt;/em&gt;&lt;/a&gt; by Henry Petroski&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Engineer-Human-Failure-Successful-Design/dp/0679734163&quot;&gt;&lt;em&gt;To Engineer is Human&lt;/em&gt;&lt;/a&gt; by Henry Petroski&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/What-Engineers-Know-How-They/dp/0801845882&quot;&gt;&lt;em&gt;What Engineers Know and How They Know It&lt;/em&gt;&lt;/a&gt; by Walter Vincenti&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Definition-Engineering-Method-Billy-Vaughn/dp/0878231013&quot;&gt;&lt;em&gt;Definition of the Engineering Method&lt;/em&gt;&lt;/a&gt; by Billy Vaughn Koen&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cambridge.org/us/academic/subjects/engineering/engineering-design-kinematics-and-robotics/design-design?format=PB&quot;&gt;&lt;em&gt;The Design of Design&lt;/em&gt;&lt;/a&gt; by Gordon Glegg (not &lt;a href=&quot;https://www.amazon.com/Design-Essays-Computer-Scientist-ebook/dp/B003DKG5H6&quot;&gt;the one by Fred Brooks&lt;/a&gt;, although that one’s great, too)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Warfighting-Department-Navy/dp/1490367217&quot;&gt;&lt;em&gt;Warfighting&lt;/em&gt;&lt;/a&gt; by the United States Marine Corps&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Mangle-Practice-Time-Agency-Science/dp/0226668037&quot;&gt;&lt;em&gt;The Mangle of Practice&lt;/em&gt;&lt;/a&gt; by Andrew Pickering&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Complications-Surgeons-Notes-Imperfect-Science/dp/0312421702&quot;&gt;&lt;em&gt;The Buzz About Bees&lt;/em&gt;&lt;/a&gt; by Jürgen Tautz&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Better-Surgeons-Performance-Atul-Gawande/dp/0312427654&quot;&gt;&lt;em&gt;Better&lt;/em&gt;&lt;/a&gt; by Atul Gawande&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Complications-Surgeons-Notes-Imperfect-Science/dp/0312421702&quot;&gt;&lt;em&gt;Complications&lt;/em&gt;&lt;/a&gt; by Atul Gawande&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Checklist-Manifesto-How-Things-Right/dp/0312430000&quot;&gt;&lt;em&gt;The Checklist Manifesto&lt;/em&gt;&lt;/a&gt; by Atul Gawande&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;books-talks-and-essays&quot;&gt;Books, Talks, and Essays&lt;/h2&gt;

&lt;p&gt;I also mentioned three resources that are (at least partly) about software, but reflect insights gained from other fields:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ShEez0JkOFw&quot;&gt;Programming with Hand Tools&lt;/a&gt;, a talk by Tim Ewald&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pragprog.com/book/ahptl/pragmatic-thinking-and-learning&quot;&gt;&lt;em&gt;Pragmatic Thinking and Learning&lt;/em&gt;&lt;/a&gt; by Andy Hunt&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.exampler.com/testing-com/writings/tacit-knowledge.html&quot;&gt;“Tacit Knowledge”&lt;/a&gt; by Brian Marick&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;suggestions-for-your-own-reading&quot;&gt;Suggestions for Your Own Reading&lt;/h2&gt;

&lt;p&gt;I concluded with a challenge to the audience to each read two serious nonfiction books that aren’t about software this year … and to jumpstart that, I provided some suggestions.  Here they are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Mountains-Beyond-Farmer-Random-Readers/dp/0812980557&quot;&gt;&lt;em&gt;Mountains Beyond Mountains&lt;/em&gt;&lt;/a&gt; by Tracy Kidder&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Truck-Full-Money-Tracy-Kidder/dp/0812985354&quot;&gt;&lt;em&gt;A Truck Full of Money&lt;/em&gt;&lt;/a&gt; by Tracy Kidder&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Cognition-Wild-Bradford-Edwin-Hutchins/dp/0262581469&quot;&gt;&lt;em&gt;Cognition in the Wild&lt;/em&gt;&lt;/a&gt; by Edwin Hutchins&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Chaos-Making-Science-James-Gleick/dp/0143113453&quot;&gt;&lt;em&gt;Chaos: Making a New Science&lt;/em&gt;&lt;/a&gt; by James Gleick&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B004LRPQIO&quot;&gt;&lt;em&gt;Genius: The Life and Science of Richard Feynman&lt;/em&gt;&lt;/a&gt; by James Gleick&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Information-History-Theory-Flood/dp/1400096235&quot;&gt;&lt;em&gt;The Information: A History, A Theory, A Flood&lt;/em&gt;&lt;/a&gt; by James Gleick&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Time-Travel-History-James-Gleick-dp-0307908798/dp/0307908798&quot;&gt;&lt;em&gt;Time Travel: A History&lt;/em&gt;&lt;/a&gt; by James Gleick&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/0684868768&quot;&gt;&lt;em&gt;Emergence: The Connected Lives of Ants, Brains, Cities, and Software&lt;/em&gt;&lt;/a&gt; by Steven Johnson&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/1594482691&quot;&gt;&lt;em&gt;The Ghost Map&lt;/em&gt;&lt;/a&gt; by Steven Johnson&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/1594485380&quot;&gt;&lt;em&gt;Where Good Ideas Come From&lt;/em&gt;&lt;/a&gt; by Steven Johnson&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Farsighted-Make-Decisions-That-Matter/dp/1594488215&quot;&gt;&lt;em&gt;Farsighted&lt;/em&gt;&lt;/a&gt; by Steven Johnson&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Coming-Plague-Emerging-Diseases-Balance-dp-0140250913/dp/0140250913&quot;&gt;&lt;em&gt;The Coming Plague&lt;/em&gt;&lt;/a&gt; by Laurie Garrett&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Betrayal-Trust-Collapse-Global-Public/dp/0786884401&quot;&gt;&lt;em&gt;Betrayal of Trust: The Collapse of Global Public Health&lt;/em&gt;&lt;/a&gt; by Laurie Garrett&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Draft-No-4-Writing-Process/dp/0374537976&quot;&gt;&lt;em&gt;Draft No. 4&lt;/em&gt;&lt;/a&gt; by John McPhee&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Irons-Fire-John-McPhee/dp/0374525455&quot;&gt;&lt;em&gt;Irons in the Fire&lt;/em&gt;&lt;/a&gt; by John McPhee&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Uncommon-Carriers-John-McPhee/dp/0865477396&quot;&gt;&lt;em&gt;Uncommon Carriers&lt;/em&gt;&lt;/a&gt; by John McPhee&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 06 Feb 2019 08:16:00 -0600</pubDate>
        <link>http://vanderburg.org/blog/2019/02/06/reading-broadly.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2019/02/06/reading-broadly.html</guid>
        
        <category>books</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>“Real Software Engineering”</title>
        <description>&lt;p&gt;Almost eight years ago, at a conference in San Mateo, I presented a
new talk that I thought had some potential: “Real Software
Engineering”.&lt;/p&gt;

&lt;p&gt;Since then, I’ve given updated versions of the talk 18 times. Each
time I give it, I assume it will probably be the last; talks get stale
after a while and the world moves on, and it’s best to retire old
talks and develop new material.&lt;/p&gt;

&lt;p&gt;But people still keep asking me to give this talk, and nearly every
time I do, a funny thing happens: someone in the audience finds me and
tells me about some book, paper, or bit of engineering history that I
didn’t know about — one that sheds new light on the subject of the
talk, allowing me to deepen the talk just a little more. For example,
the last time I gave “Real Software Engineering” as a keynote address,
Michael Keeling (author of the wonderful &lt;a href=&quot;https://pragprog.com/book/mkdsa/design-it&quot; title=&quot;Design It! From Programmer to Software Architect&quot;&gt;Design It!&lt;/a&gt;)
introduced me to the delightful works of Gordon Glegg, which touch on
numerous aspects of the talk.&lt;/p&gt;

&lt;p&gt;Most recently, I spoke at the Melbourne offices of &lt;a href=&quot;https://www.zendesk.com/&quot;&gt;Zendesk&lt;/a&gt; as part
of their really good &lt;a href=&quot;https://www.softwareartthou.com/&quot;&gt;Software Art Thou?&lt;/a&gt; lecture series that they host for the Melbourne
development community.  I’m excited about the result: they have a good
audiovisual team and put in some serious post-production effort on the
videos, and the result is by
far &lt;a href=&quot;https://www.youtube.com/watch?v=RhdlBHHimeM&quot; title=&quot;Real Software Engineering&quot;&gt;the best video of “Real Software Engineering”&lt;/a&gt;. The talk
itself is improved in numerous ways, and the video is really well
done. (And sure enough, during post-talk discussions I got some
valuable new pointers to relevant material.)&lt;/p&gt;

&lt;p&gt;If you’ve never seen this talk, or are interested in revisiting it,
this is the one you should watch. If you show the talk to classes or
meetups, please use this version.&lt;/p&gt;

&lt;p&gt;I’m grateful to Zendesk (and especially &lt;a href=&quot;https://twitter.com/jeffreytheobald&quot;&gt;Jeffrey Theobald&lt;/a&gt;) for the
opportunity to speak to so many great developers in Melbourne, and for
the excellent video!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RhdlBHHimeM&quot; title=&quot;Real Software Engineering&quot;&gt;Software Art Thou: Glenn Vanderburg — Real Software Engineering&lt;/a&gt;&lt;/p&gt;

</description>
        <pubDate>Wed, 10 Jan 2018 14:00:00 -0600</pubDate>
        <link>http://vanderburg.org/blog/2018/01/10/real_software_engineering.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2018/01/10/real_software_engineering.html</guid>
        
        <category>programming</category>
        
        <category>software engineering</category>
        
        <category>talks</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Building Trust</title>
        <description>&lt;p&gt;&lt;img src=&quot;/blogimages/ss_building_trust.jpg&quot; alt=&quot;Building Trust&quot; class=&quot;right-inset&quot; width=&quot;288px&quot; height=&quot;192px&quot; /&gt;When are you the happiest and most productive at work? For me it’s when I feel part of something meaningful. That my work actually matters. When I work with people that I respect and value, who show equal commitment to and appreciation for my work. When I actually look forward to going to work because I know that no matter how tough is the problem I have to deal with, I’ll still enjoy working through it with my colleagues. Some of my fondest memories are actually some of the most grueling days of my career. I find that my best work happens when I can be myself and don’t have to second-guess people’s agendas or intentions. When I trust that what I’m doing is what I should be doing and I trust the people I do it with implicitly.&lt;/p&gt;

&lt;p&gt;I’m a firm believer that the foundation of any healthy team is &lt;em&gt;trust&lt;/em&gt;. So as a manager trying to build a cohesive team, most of your efforts should focus around building trust. And trust is important in several different directions&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;between:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;you and your team&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;that is, you as an individual and also as a representative of the company&lt;/li&gt;
  &lt;li&gt;you and the company leadership&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;without trust in the company leadership you will find it impossible to do your job&lt;/li&gt;
  &lt;li&gt;team members&lt;/li&gt;
  &lt;li&gt;your team and any other teams that interact with or depend on your group (internal or external to the company)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When people ask me about the first thing they should focus on when joining a new team, I tell them, “Focus on building connections and earning their trust.” I clearly remember those colleagues that helped me through my first few months at every single one of my jobs, and what an impact they had helping me get up to speed, building my confidence, supporting and encouraging me.&lt;/p&gt;

&lt;p&gt;You build trust by being:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;present or visible&lt;/li&gt;
  &lt;li&gt;responsive and accessible&lt;/li&gt;
  &lt;li&gt;honest and open (saying what you think&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;in a constructive way&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;and raising your hand when you make a mistake)&lt;/li&gt;
  &lt;li&gt;reliable (doing what you say you are going to do)&lt;/li&gt;
  &lt;li&gt;consistent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So far, I haven’t said anything that is specific to distributed teams.
But clearly a lot of it is related to communication: how you communicate, and how others can communicate with you.
So this is all an application of &lt;a href=&quot;/blog/2016/06/02/mdt_3_rule_number_one.html&quot;&gt;Rule #1&lt;/a&gt;. You have to communicate deliberately, clearly and predictably. Out of &lt;em&gt;sight&lt;/em&gt; should never be out of &lt;em&gt;mind&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In my experience, there are two key areas to focus on that will produce the best results for a distributed team. First, set very clear expectations with team members from the moment they consider joining the team. If the team is interviewing a candidate or someone who wants to transfer to the team, be very explicit about how the team works and what will be expected. This is important on any team, but especially on a distributed team, because the situation might be quite different from what the candidate has experienced in the past.&lt;/p&gt;

&lt;p&gt;Second, commit to improving communication and creating opportunities for employee engagement regardless of where they are located. It’s very important to be mindful of the different personalities, backgrounds and skill levels in the team, because those differences will have a considerable impact on how team members might prefer to engage. If you manage a truly distributed team you will face some other serious challenges: how to communicate across time zones and how to effectively communicate with people from different cultures, or for whom the company language is not their first language.&lt;/p&gt;

&lt;p&gt;So with that in mind, how do you go about building a communication plan for you and your team that will help you build that trust and keep everyone engaged? In upcoming posts, I’ll share some of the approaches I’ve found most useful. I’ll group them around three different goals:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Collaborating on day-to-day work&lt;/li&gt;
  &lt;li&gt;Building team identity&lt;/li&gt;
  &lt;li&gt;Developing and promoting an engineering- and company-wide culture&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Sun, 12 Jun 2016 21:10:00 -0500</pubDate>
        <link>http://vanderburg.org/blog/2016/06/12/mdt-4-building-trust.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2016/06/12/mdt-4-building-trust.html</guid>
        
        <category>management</category>
        
        <category>distributed teams</category>
        
        <category>remote work</category>
        
        <category>telecommuting</category>
        
        <category>communication</category>
        
        <category>trust</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Distributed Teams Rule Number One</title>
        <description>&lt;p&gt;&lt;img src=&quot;/blogimages/separate_fish.jpg&quot; alt=&quot;communication barrier&quot; class=&quot;right-inset&quot; width=&quot;288px&quot; height=&quot;199px&quot; /&gt;
Distributed teams and colocated teams are similar in some ways, and different in many others.
But there is one underlying difference that is so basic it has an impact on everything else:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule #1 of distributed teams: Communication doesn’t just happen.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a colocated team, there is a &lt;em&gt;lot&lt;/em&gt; of communication that happens naturally, without anyone ever thinking about it or planning it.
Some of this is really obvious.
Team members go to lunch together, or grab coffee, or sometimes share drinks after work, and conversation naturally includes work topics.
Employees overhear nearby conversations (and join in if they feel they have something to contribute, or want to learn more).&lt;/p&gt;

&lt;p&gt;But there are also things you might never have considered.
People notice when people are sitting together or meeting together, and from that collaboration they infer that something is happening.
They see interesting information left on whiteboards.
They notice reference books left on desks, thereby understanding what tools or technologies are being considered for other parts of the system.
They see expressions of stress, excitement, or confidence on the faces of peers and managers.
They think out loud, or ask nearby coworkers for help in working through ideas.&lt;/p&gt;

&lt;p&gt;All of those things are passive forms of communication.
People are quite good at communicating with each other and drawing conclusions from the patterns they see&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;so good, in fact, that it’s almost as natural to most people as breathing.
That means that a lot of valuable communication happens in a colocated team &lt;em&gt;implicitly&lt;/em&gt;, without anyone ever planning it or even thinking about it very much.&lt;/p&gt;

&lt;p&gt;You can’t depend on that kind of thing happening on a distributed team.
I mean, sure … people still communicate, and ask each other for help, and have conversations in chat rooms where people can “overhear”, and so on.
But there’s more friction, more overhead, and so unless you’re deliberate and intentional about it, it won’t happen as much.&lt;/p&gt;

&lt;p&gt;At this point, you might be thinking,
“It sounds like distributed teams are inherently worse for communication.”
But colocated teams have their own issues with communication, often directly related to how easy and casual it is.
Think about it: you’re relying on a lot of &lt;em&gt;accidental&lt;/em&gt; communication.
It’s great that it all happens so easily, but it could actually benefit from being planned and considered a little more.
People will learn important things the hard way, and then not take the time to communicate that to the rest of the team.
Or an impromptu gathering will make an important decision, but forget to validate the decision with important stakeholders (or to communicate it to everyone who must follow through with implementing that decision).
And background information, such as the rationale behind a decision, is frequently lost.&lt;/p&gt;

&lt;p&gt;Those things happen in distributed teams, too.
But a distributed team typically does much more of its communication in writing, and can have more opportunities to review, disseminate, index, and archive team communication.
Plus, as with anything else, &lt;em&gt;focusing&lt;/em&gt; on something and giving some thought to the best way to do it can pay important dividends:
people become more conscious of how they’re communicating, and of whether the medium is the appropriate one for the kind of information involved.
They are more deliberate and careful about how they communicate.&lt;/p&gt;

&lt;p&gt;Because this is rule number one, several of the posts in this series will be about communication:
the different tools, styles, and techniques that are required to make sure that the right communication is happening both within and beyond your distributed engineering team.
Start paying attention to &lt;em&gt;all&lt;/em&gt; of the kinds of communication that happen in
an office, and ask two questions about it:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;How could a distributed team get some of the same benefits?&lt;/li&gt;
  &lt;li&gt;How could we make this communication more valuable by taking it a little more
seriously?&lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Thu, 02 Jun 2016 10:00:00 -0500</pubDate>
        <link>http://vanderburg.org/blog/2016/06/02/mdt_3_rule_number_one.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2016/06/02/mdt_3_rule_number_one.html</guid>
        
        <category>management</category>
        
        <category>distributed teams</category>
        
        <category>remote work</category>
        
        <category>telecommuting</category>
        
        <category>communication</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Terms: “Distributed,” “Remote,” and More
</title>
        <description>&lt;p&gt;One of the earliest challenges we faced in building our team at LivingSocial was eliminating “us and them” attitudes between the “locals” and the “remotes”.
That sentence should give you a clue about the problem:
the words we use are important, and they affect the way we see other people and ourselves.
Therefore, one of the ways we solved the problem was to rethink our choice of words.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blogimages/grover_local_remote.jpg&quot; alt=&quot;Grover near and far&quot; class=&quot;right-inset&quot; width=&quot;288px&quot; height=&quot;216px&quot; /&gt;
The opposite of “remote” is “local.”
At least in terms of associations and connotations, those words carry value judgments.
Used literally, “remote” describes places, and means that the places are challenging and time-consuming to reach.
But we also use “remote” in reference to people:
those who are withdrawn, cold, or hard to communicate with.
Calling the on-site developers “local” and others “remote” helped to reinforce  a class distinction, where everyone perceived the remote developers&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;at least a little bit&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;as second-class citizens.
That affected how the “local” developers worked with the remote folks;
perhaps worse, it also affected how remote developers saw themselves, causing low morale and a sense of isolation.
The result was reduced productivity and retention.&lt;/p&gt;

&lt;p&gt;Additionally, apart from the cultural issues, those terms encouraged two different sets of communication and coordination patterns.
Teams comprised mostly of “local,” on-site employees would naturally adopt a culture and communication style appropriate to a colocated team (impromptu conversations, mostly voice communication).
Teams of “remote” developers would depend much more on email and chat.
This meant that we effectively had two teams: the developers who worked at
headquarters, and those who worked remotely.
That wasn’t what we were aiming for.&lt;/p&gt;

&lt;p&gt;We chose to start emphasizing the term “distributed.”
Rather than a team with some local and some remote developers, we were all on a distributed team.
The words “remote” and “local” aren’t forbidden,
and in some contexts they’re still the right words for a legitimate distinction.
But the emphasis&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;especially when speaking about the whole team or our work style, collaboration techniques, and communication patterns&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;is on the word “distributed”.&lt;/p&gt;

&lt;p&gt;It took a while to change the vocabulary throughout the organization.
But after that, it didn’t take too long before we started seeing the positive effects.
In this series we will talk about several specific ways that on-site and remote employees can choose to work in the same way,
easing communication and collaboration across the organization.
For now, it’s sufficient to say that adopting this vocabulary was a big morale
boost for the remote employees, and helped to build a more unified team.&lt;/p&gt;

&lt;p&gt;There are other terms that some people use, and that we considered.
You might call a team that emphasizes satellite offices rather than working from home a “multi-site” team, and many teams that engage in offshoring fit that model.
Multi-site teams have some of the same challenges, plus some additional problems;
in our opinion, choosing a multi-site strategy sacrifices many of the benefits of a fully distributed team.&lt;/p&gt;

&lt;p&gt;Two other terms are found in the titles of the Wikipedia pages that address the issues we’re discussing:
&lt;a href=&quot;https://en.wikipedia.org/wiki/Virtual_team&quot;&gt;Virtual team&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Telecommuting&quot;&gt;Telecommuting&lt;/a&gt;.
While there’s nothing necessarily bad about those terms, they didn’t resonate as well with us.
I doubt that anyone on the team at LivingSocial would say there’s anything “virtual” about it:
it’s very real, with a vibrant, dynamic culture.
To say that a team like ours is “virtual” implies that the most important thing
about “real” teams is that they sit together, and that’s silly.
And “telecommuting” seems to describe tools and techniques rather than the team itself;
at best, just like “local” and “remote,” it refers to individuals on the team
rather than saying anything about the team as a whole.&lt;/p&gt;

&lt;p&gt;Words can divide and belittle, or they can build up and unify.
And even neutral or positive words, chosen poorly, can distract us from what’s important.
The right words can make a huge difference.
We saw things start to change for the better at LivingSocial when we focused on the term “distributed” as a word that included &lt;em&gt;all&lt;/em&gt; of us.
That’s why we’ve titled this series “Managing &lt;em&gt;Distributed&lt;/em&gt; Teams”.&lt;/p&gt;
</description>
        <pubDate>Tue, 31 May 2016 10:00:00 -0500</pubDate>
        <link>http://vanderburg.org/blog/2016/05/31/mdt_2_distributed.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2016/05/31/mdt_2_distributed.html</guid>
        
        <category>management</category>
        
        <category>distributed teams</category>
        
        <category>remote work</category>
        
        <category>telecommuting</category>
        
        <category>virtual teams</category>
        
        <category>terminology</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Managing Distributed Software Teams</title>
        <description>&lt;p&gt;&lt;a href=&quot;http://dilbert.com/strip/1994-09-08&quot;&gt;&lt;img src=&quot;http://assets.amuniversal.com/068c88709f85012f2fe600163e41dd5b&quot; alt=&quot;Dilbert 1994-09-08&quot; height=&quot;224px&quot; width=&quot;740px&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remote software work is increasingly common.
At the beginning of my career, it was almost unheard of.
But over the years it has grown steadily.
I’ve been working from home for 10 years now, and when I gave a talk on the topic two years ago, fully half of the audience were working from home on a daily basis.&lt;/p&gt;

&lt;p&gt;But there are still challenges.&lt;/p&gt;

&lt;p&gt;For the past five years, I’ve been a part of a large software team that is heavily distributed:
more than 60% of the LivingSocial engineering team works from home, spread across several time zones and a few countries.
At its peak, the team was about 180 people, with well over 100 developers
working from home or in small satellite offices or coworking spaces.&lt;/p&gt;

&lt;p&gt;At the start&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;even after we had a substantial number of remote developers&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;the team managers worked at the office.
That is a very common model.
But eventually, as the team changed and grew, we found ourselves with managers working remotely, too.
From 2013 through early 2016, my colleague &lt;a href=&quot;http://twitter.com/mariagutierrez&quot;&gt;Maria Gutierrez&lt;/a&gt; and I worked from our homes (me in Dallas, Maria in Edinburgh) as Engineering Directors, managing distributed teams ranging in size from 30 to 80.
We made a lot of mistakes, but we also got a lot of things right, and we learned a lot from successes and failures alike.
And at every step, we received valuable feedback from others at every level of our organization.&lt;/p&gt;

&lt;p&gt;It seems like a good time to start sharing what we’ve learned.
More companies are trying distributed teams.
There are many reasons to do so. Here are just a few:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A company might choose that direction, as LivingSocial did,
to make it easier to recruit excellent developers.&lt;/li&gt;
  &lt;li&gt;A company might want to provide more flexible working arrangements for its employees.&lt;/li&gt;
  &lt;li&gt;One company might acquire or merge with other companies in different cities.&lt;/li&gt;
  &lt;li&gt;Talented developers may wish to relocate for personal reasons, and the
company might decide to “go distributed” rather than lose the valuable
skills of loyal, dedicated employees.&lt;/li&gt;
  &lt;li&gt;The company might move its headquarters to a different part of the city,
with some team members asking to work from home rather than endure a longer
commute.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maria and I would like to share our experiences with those who might be starting down a similar path.
In coming weeks, we’ll be blogging here about how to be effective in managing distributed software teams.&lt;/p&gt;
</description>
        <pubDate>Thu, 26 May 2016 09:10:00 -0500</pubDate>
        <link>http://vanderburg.org/blog/2016/05/26/mdt_1_managing_distributed_teams.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2016/05/26/mdt_1_managing_distributed_teams.html</guid>
        
        <category>management</category>
        
        <category>distributed teams</category>
        
        <category>remote work</category>
        
        <category>telecommuting</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Choose Me To Lead Your Distributed Software Development Team</title>
        <description>&lt;p&gt;&lt;img src=&quot;/blogimages/glvheadset.jpg&quot; alt=&quot;Me at work&quot; class=&quot;right-inset&quot; width=&quot;190px&quot; height=&quot;190px&quot; /&gt;
After a little over five years, I’m moving on from LivingSocial.
What’s next for me?
Well, I’m looking for the right position.
At LivingSocial, we’ve spent five years learning how a distributed software development team can be really effective.
I’d like to help another company build on that experience.&lt;/p&gt;

&lt;p&gt;For the past three years I’ve been one of the leaders of our engineering team, overseeing a department ranging in size from 30 to 50 software developers and managers (part of a larger engineering team of about 150).
The majority of those people&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;including me and other senior managers&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;have worked from home.
It hasn’t all been smooth sailing, but we built a great team, learning valuable lessons about how a geographically distributed team can collaborate, manage work, recruit, train, mentor, maintain a healthy culture, and continually improve.&lt;/p&gt;

&lt;p&gt;I’ve enjoyed being in the middle of that, working closely with our VP of Engineering and CTO, as well as the other department directors and the managers on my team.
It’s been a wonderful opportunity to add a new dimension to my 25 years of experience as a developer and software architect.&lt;/p&gt;

&lt;p&gt;In the software industry, remote work and distributed teams are becoming increasingly common.
Many companies now have employees who work mostly from home or from other locations.
And there are good reasons to pursue that as a strategy.
But running a distributed team is &lt;em&gt;different&lt;/em&gt; from running a colocated team, and it’s difficult to do it well.
Most companies aren’t seeing as much effectiveness from their distributed teams as they (and the teams) would like.&lt;/p&gt;

&lt;p&gt;If you are building a distributed team and would like a senior, experienced engineering leader with solid technical chops to help you succeed, please contact me:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Email: glenn at this domain&lt;/li&gt;
  &lt;li&gt;CV: &lt;a href=&quot;https://www.linkedin.com/in/glennvanderburg&quot;&gt;https://www.linkedin.com/in/glennvanderburg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 10 May 2016 13:35:00 -0500</pubDate>
        <link>http://vanderburg.org/blog/2016/05/10/seeking.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2016/05/10/seeking.html</guid>
        
        <category>employment</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>About Cló</title>
        <description>&lt;p&gt;A little over a year ago, I gave a talk at &lt;a href=&quot;http://clojure-conj-2013.herokuapp.com/&quot; title=&quot;Clojure/conj 2014&quot;&gt;Clojure/conj&lt;/a&gt; called
&lt;a href=&quot;https://www.youtube.com/watch?v=824yVKUPFjU&quot;&gt;Cló: The Algorithms of &lt;span class=&quot;TeX&quot;&gt;T&lt;sub&gt;E&lt;/sub&gt;X&lt;/span&gt; in Clojure&lt;/a&gt;.
It was very well received, and a surprising number of people were interested in
the project (which at the time was only partly complete, unreleased, and in the
middle of a substantial redesign).&lt;/p&gt;

&lt;p&gt;A few people have been asking me about the status, so here it is: it is only
partly compete, unreleased, and in the middle of a substantial redesign.&lt;/p&gt;

&lt;p&gt;There are several reasons for that.  The first one is that my job has kept me
quite busy, with little time left over for a hobby project.  But that wasn’t
everything.&lt;/p&gt;

&lt;p&gt;At the time I gave the talk, my mother was experiencing medical problems that
would, over the next few months, bring her to her death on 20 April 2015 at the
age of 95.  In many ways it wasn’t a sad occasion: 95 is a ripe old age, and
her quality of life had been poor for a long time, so the point of this isn’t
to solicit condolences.  But caring for her in those final months, the funeral,
and then arranging a move for my dad a short time afterward took up most of my
time.&lt;/p&gt;

&lt;p&gt;But around the middle of 2015, I did start to get back to Cló again.  And I
realized something right away: before rebuilding Cló with my revised goals, I
needed to become a better Clojure programmer.  Cló was the largest Clojure
program I had ever worked on, and the first one where I was in charge of the
design.  So as I returned to the project, I found myself trying to do several
challenging things at once:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Decipher the mind-mangling complexity of
&lt;span class=&quot;TeX&quot;&gt;T&lt;sub&gt;E&lt;/sub&gt;X&lt;/span&gt;’s code;&lt;/li&gt;
  &lt;li&gt;Separate the optimizations from the essence of the algorithms;&lt;/li&gt;
  &lt;li&gt;Recast those thoroughly procedural algorithms into a functional style;&lt;/li&gt;
  &lt;li&gt;Correct the initial design mistakes from my first version of Cló; and&lt;/li&gt;
  &lt;li&gt;Level-up as a Clojure programmer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I can’t see a way around doing the first four simultaneously, but the last one
can be done all by itself.  I realized that it would be smart to get that one
out of the way first, by practicing Clojure on a simpler project.&lt;/p&gt;

&lt;p&gt;That project is &lt;a href=&quot;https://github.com/glv/snergly&quot;&gt;snergly&lt;/a&gt;, a Clojure implementation of the algorithms in
&lt;a href=&quot;http://weblog.jamisbuck.org/&quot;&gt;Jamis Buck&lt;/a&gt;’s wonderful book &lt;a href=&quot;https://pragprog.com/book/jbmaze/mazes-for-programmers&quot;&gt;Mazes for Programmers&lt;/a&gt;.  Toward the
end of summer, before my job got too busy again, I built a command-line Clojure
application that covered the first five chapters of the book. More recently,
starting with a conference trip in early December and continuing through the
Christmas holidays, I got that code working in ClojureScript to produce an
animated, browser-based display. Along the way I’ve learned a lot (about both
Clojure and ClojureScript, Om Next, Prismatic schema, and test.check).&lt;/p&gt;

&lt;p&gt;I think I’m ready to take another run at Cló.  The next time I have some spare
time to hack on something, that’s the project I’ll be working on.&lt;/p&gt;
</description>
        <pubDate>Tue, 16 Feb 2016 17:17:00 -0600</pubDate>
        <link>http://vanderburg.org/blog/2016/02/16/about-clo.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2016/02/16/about-clo.html</guid>
        
        <category>clojure</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Back Again</title>
        <description>&lt;p&gt;After a break of several years, I’ve decided to start blogging again.&lt;/p&gt;

&lt;p&gt;I never &lt;em&gt;decided&lt;/em&gt; to stop; I simply found myself not having much to say in
a blogging context.  But lately I’ve found myself wanting to write more.
So I’ve converted my old rublog-based setup and I’m ready to go.  Expect more
updates soon.&lt;/p&gt;
</description>
        <pubDate>Mon, 15 Feb 2016 18:25:00 -0600</pubDate>
        <link>http://vanderburg.org/blog/2016/02/15/back_again.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2016/02/15/back_again.html</guid>
        
        <category>blogging</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Cohesion</title>
        <description>&lt;p&gt;Developers I encounter usually have a good grasp of coupling&lt;span class=&quot;d&quot;&gt;—&lt;/span&gt;not only what it
means, but why it’s a problem.  I can’t say the same thing about cohesion.
One of the sharpest developers I know sometimes has problems with the concept,
and once told me something like “that word doesn’t mean much to me.”  I’ve
come to believe that a big part of the problem is the word “cohesion” itself.
“Coupling” is something everyone understands.  “Cohesion,” on the other hand,
is a word that is not often used in everyday language, and that lack of
familiarity makes it a difficult word for people to hang a crucial concept on.&lt;/p&gt;

&lt;p&gt;I’ve had some success teaching the concept of cohesion using an unusual
approach that exploits the word’s etymology.  I know that sounds unlikely, but
bear with me.  In my experience, it seems to register well with people.&lt;/p&gt;

&lt;p&gt;Cohesion comes from the same root word that “adhesion” comes from. It’s a word
about &lt;em&gt;sticking&lt;/em&gt;.  When something &lt;em&gt;adheres&lt;/em&gt; to something else (when it’s
&lt;em&gt;adhesive&lt;/em&gt;, in other words) it’s a one-sided, external thing: something (like
glue) is sticking one thing to another. Things that are &lt;em&gt;cohesive&lt;/em&gt;, on the
other hand, naturally stick to each other because they are of like kind, or
because they fit so well together.  Duct tape &lt;em&gt;adheres&lt;/em&gt; to things because it’s
sticky, not because it necessarily has anything in common with them.  But two
lumps of clay will &lt;em&gt;cohere&lt;/em&gt; when you put them together, and matched,
well-machined parts sometimes seem to cohere because the fit is so precise.
&lt;em&gt;Adhesion&lt;/em&gt; is one thing sticking to another; &lt;em&gt;cohesion&lt;/em&gt; is a mutual
relationship, with two things &lt;em&gt;sticking together&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This is also why we refer to a sound line of reasoning, for example, as
&lt;em&gt;coherent&lt;/em&gt;.  The thoughts fit, they go together, they relate to each other.
This is exactly the characteristic of a class that makes it coherent: the
pieces all seem to be related, they seem to belong together, and it would feel
somewhat unnatural (it would result in tight coupling!) to pull them apart.
Such a class exhibits &lt;em&gt;cohesion&lt;/em&gt;.  No glue is required, you don’t have to
build extra code to make the pieces fit together; the pieces hang together
naturally because they’re closely related.  In contrast, sometimes a class
will seem to have its fingers in way too many parts of your system.  Such a
class is &lt;em&gt;adhesive&lt;/em&gt;, and that’s not what we’re looking for.&lt;/p&gt;

&lt;p&gt;And whereas &lt;em&gt;coherent&lt;/em&gt; means things fit well together, we use the word
“adherent” to refer to a follower, and there’s a connotation that the follower
isn’t necessarily wanted: a hanger-on.&lt;/p&gt;

&lt;p&gt;There’s another common word that stems from the same root: “inherent”.
Something that adheres sticks to something else, and two things that are
coherent mutually stick to each other, but something that is &lt;em&gt;inherent&lt;/em&gt; isn’t
&lt;em&gt;stuck&lt;/em&gt; to something so much as it’s &lt;em&gt;embedded&lt;/em&gt;: it is an integral part of the
other thing, tightly and inextricably bound.  Although you don’t hear them
very often, the two sister words “inhere” and “inhesion” are real words, as
well.&lt;/p&gt;

&lt;p&gt;So &lt;em&gt;cohesion/cohesive/coherent&lt;/em&gt; occupy the middle territory between the sort
of arbitrary, forced relationship of &lt;em&gt;adhesion/adhesive/adherent&lt;/em&gt; and the
integral, unbreakable relationship of &lt;em&gt;inhesion/inhesive/inherent&lt;/em&gt;.  That
mental picture often helps me make wise decisions when I’m designing and
refactoring. I want to build classes that are &lt;em&gt;cohesive&lt;/em&gt;, not &lt;em&gt;adhesive&lt;/em&gt;.&lt;/p&gt;
</description>
        <pubDate>Mon, 31 Jan 2011 10:43:59 -0600</pubDate>
        <link>http://vanderburg.org/blog/2011/01/31/cohesion.html</link>
        <guid isPermaLink="true">http://vanderburg.org/blog/2011/01/31/cohesion.html</guid>
        
        <category>software</category>
        
        <category>development</category>
        
        
        <category>blog</category>
        
      </item>
    
  </channel>
</rss>
