#Issue135
2 posts

The Pyramid of Unit Testing Benefits

Effective unit test coverage on your codebase is the holy grail of software development. While it takes effort to do, at times the benefits aren’t entirely clear. This article details the benefits of unit testing very effectively.
Read more

The Pyramid of Unit Testing Benefits

Effective unit test coverage on your codebase is the holy grail of software development. While it takes effort to do, at times the benefits aren’t entirely clear. This article details the benefits of unit testing very effectively.

  • Validates your code by giving you immediate feedback. Silly mistakes and bugs can be caught early through this process.
  • Forcing your code to be testable generally leads to better design and explicit dependencies.
  • You can use the test suite as an up-to-date documentation of the software. If the tests pass, that’s what the code is supposed to do.
  • Prevent regressions by building an extensive test suite.
  • We are all constantly refactoring our code. Having a good test suite acts as a good safety net to ensure that we still deliver the functionality that was promised.

Full post here, 3 mins read

Lessons Learned while Working on Large-Scale Server Software

Working on large scale software comes with its own unique set of challenges. Here’s a set of tips to remember when faced with a mammoth challenge. While the entire article is a longer and better read; here are some distilled points.
Read more

Lessons Learned while Working on Large-Scale Server Software

Working on large scale software comes with its own unique set of challenges. Here’s a set of tips to remember when faced with a mammoth challenge. While the entire article is a longer and better read; here are some distilled points.

  • Plan for the worst. Creating a baseline for the worst thing that can happen is comforting. It also helps us plan for failure (because failure is inevitable).
  • Don’t trust the network. We often take the network for granted. But network latency and flakiness can be a source of immense pain because your production system behaviour doesn’t match your localhost.
  • Crash-first software. Big, loud crashes bring a developers attention to the problem faster, thereby helping them fix the bug. Silent failures fester in systems far longer and crop up at the most inopportune moments.
  • People are the lynchpin of any system. A lot of success of large scale software depends on how people react to failure. This problem is magnified when a senior engineer leaves the team or new members join the team. Default to using tools and  processes to ensure that tribal knowledge is codified and persistent.

Full post here, 11 mins read