DEV Community

Cover image for Laziness at work: How to harness it without getting fired
Gerardo Antonio Gerónimo Vasconcelos
Gerardo Antonio Gerónimo Vasconcelos

Posted on

Laziness at work: How to harness it without getting fired

In a previous post, I mentioned how being "lazy" could contribute a lot to our work, as well as avoiding unnecessary errors. Sounds great, right?

However, indiscriminate use of laziness can bring more problems than benefits. Lazy operations often make our code harder to understand, debug, and test. Sometimes, you might not even know when or how an expression is evaluated, or what side effects it could have. And if not careful, we could end up with a huge expression that was never evaluated or, even worse, cause a stack overflow.

With great power comes great responsibility

Some of the considerations we can keep in mind regarding the use of lazy loads or evaluations are:

  • Use them only when it makes sense. We shouldn't be lazy just for the sake of it; if an expression is cheap to compute, or its value is needed immediately, simply execute it.
  • Be aware of the trade-offs. Can it improve performance and modularity? Yes, but it can also introduce complexity and unpredictability; so we must make sure we understand the benefits and costs of using it in a specific context.
  • Test the code thoroughly. It is very likely that it will be more prone to failures and errors, so we must make sure to test it with different inputs and scenarios, and thus verify if there are unexpected behaviors or results.
  • Document everything, well... Not everything. Lazy operations can make the code less readable and maintainable; so it's advisable to make sure we clearly document and explain why and how they were used.

Developing with a lazy focus is a powerful tool that can help us write better software. But like any tool, it can also be misused or abused. Use laziness carefully and cautiously to make the most of its benefits without falling into its possible pitfalls.

Remember, don't let laziness take over you!

Top comments (0)