Subscribe to Engineering Impact, the weekly newsletter for managers of software teams.
This week: Habits that programmers should avoid, hidden costs that engineers ignore, what am container, a git squashing guide
ut his list, is that many of the bad habits have nothing to do with the skill-set of coding. In fact, less than half of the items Ken mentions, (16 by my count) explicitly relate to writing code.
While you may debate individual points (e.g. “not having a Twitter account”), his article underscores what the effective leaders know to be true. Technical chops are not the only skills required to be a successful engineer
Poor software decisions impose a tax that can be burdensome for many years. Without understanding these hidden costs, software estimates can slip by wide margins. Edmond Lau highlights the complexities that introduce overhead and add friction to getting things done on time:
- Code Complexity (dependencies and combinatorial growth)
- System Complexity (technology and tools)
- Product Complexity (lack of focus)
- Organizational Complexity (people!)
Lau proposes some practical strategies to fight against complexity. One strategy is to periodically pay off technical debt. He relates a story from working at Quora, where his team gamified the process of refactoring legacy code and tracked the purging on a leaderboard. If you’d like to be able to quantify your own team’s legacy refactoring, or check out a leaderboard for top contributors to paying off technical debt, GitPrime can help.
No doubt you’ve heard of “Docker” and “Containers” but maybe the jargon and hype stopped you from investigating further. If you’ve ever wished for a simple explanation for yourself or to share, this the definitive post on Containers.
Glyph, also known as “the twisted guy” cuts through the noise in a longform gem. He walks methodically through why containers are confusing, how containers fix an old design flaw in UNIX, and the four ways they provide value. By the end, you’ll have a grasp on why you should be adopting some form of ‘container technology’ to build your software.
One of our lead engineers, @ghickman endorses, “As someone interested, but not working in ops, I was never sure what containers really represented and his article cleared that up.”
When GitHub introduced the squash and merge button, it provided quick access to a power feature of Git. Although it can make code review easier by compressing work into a tidy view, it comes at a cost. Squashing makes it more difficult to locate and remove bugs. It also obfuscates how features come into existence and can make ‘git blame’ unreliable.
Check out the illustrated guide to Squashing in Git to understand what really happens when you squash, and why you may want to limit squashing on your team.
If you enjoy Engineering Impact, sign up to get it weekly.
Twitter Facebook LinkedIn
Ben Thompson is a co-founder at GitPrime where he leads design and customer experience. He is a Y Combinator alumni, with a background in product design, branding, and UX design. Follow @thebent on Twitter.
Get Engineering Impact: the weekly newsletter for managers of software teams
Keep current with trends in engineering leadership, productivity, culture, and scaling development teams.