The Curious Engineer

All blogs / Software / engineering practice

Lucas F. Costa

lucasfcosta.com

Hot takes and cold truths on software, startups, and the lies we tell ourselves.

Software / engineering practiceEngineering management / careersTesting / QA

Posts
65 from 2 Jan 2017 to 21 Jun 2026
Posting
now and then (4 in the last year)
Kind
personal blog
Feed
https://www.lucasfcosta.com/feed.xml

2026 3

  1. Lucas' Laws of Project Management
  2. Backpressure is all you need
  3. Design docs considered harmful

2025 1

  1. Why your retrospectives don't work and how to fix them

2023 2

  1. How to do a successful Hacker News launch
  2. Why backlogs are harmful, why they never shrink, and what to do instead

2022 15

  1. How to distort Scrum until it no longer works
  2. You don't need Scrum. You just need to do Kanban right.
  3. Why deadlines are pointless and what to do instead
  4. Useful engineering metrics and why velocity is not one of them
  5. How creating a bot farm in an MMORPG got me into programming
  6. The Minimum Viable Nothing: ideas to validate products without building them
  7. How not to build a bike shed
  8. Why tall hierarchies slow organizations down and how to fix them
  9. Why your daily stand-ups don't work and how to fix them
  10. How and why exploiting uncertainty makes products more profitable
  11. Talking to your customers: a disruptive Agile framework
  12. How finishing what you start makes teams more productive and predictable
  13. Why long-term plans don't work and how to fix them
  14. How high capacity utilisation hurts a team's performance
  15. UX patterns for CLI tools

2021 4

  1. My book-writing routine
  2. Explaining explaining: a quick guide on explanatory writing
  3. How to replace estimations and guesses with a Monte Carlo simulation
  4. Make haste slowly: quantify economics

2020 3

  1. How much specification does a developer need?
  2. Why does package-lock.json exist, and how does it work?
  3. The most efficient way to solve problems: not having them

2019 3

  1. Don't write software like you write books: the value of delivering early and frequently
  2. Your terminal is not a terminal: An Introduction to Streams
  3. How I'm still not using GUIs: A guide to the terminal

2018 8

  1. The Absolute Essentials for Bit Manipulation in JavaScript
  2. Test-Driven Development is not about tests
  3. A Gentle Introduction to Lambda Calculus - Part 2: Execution
  4. In Praise of Plain Text
  5. A Gentle Introduction to Lambda Calculus - Part 1: Syntax
  6. Y: The Most Beautiful Idea in Computer Science explained in JavaScript
  7. Software Engineering in 100 Quotes
  8. Git Bisect A.K.A. Pure Git Wizardry

2017 11

  1. The Ultimate Guide to JavaScript Fatigue: Realities of our industry
  2. Big-O Explained and Why You Will Never Beat a Pigeon
  3. All About Recursion, PTC, TCO and STC in JavaScript
  4. JavaScript: From Workers to Shared Memory
  5. Writing Good Tests for NodeJS APIs
  6. Open Source Contributions Made Easy
  7. JavaScript Errors and Stack Traces in Depth
  8. Understanding Dependency Management in Go
  9. Quick vIM Tips That Will Save Your Life
  10. Getting Started With Testing in Go
  11. How to Write Assertions Right

Undated 15

  1. Everything You Need to Know About Regular Expressions In JavaScript - Part Two: Grouping And The RegEx API
  2. Everything You Need to Know About Regular Expressions In JavaScript - Part One: Basic Concepts
  3. FrontInPOA 2016: Meta Programming and Lots of New Friends
  4. Meta Programming In JavaScript - Part Four: Symbols
  5. Meta Programming In JavaScript - Part Three: Proxies and Reflection
  6. Meta Programming In JavaScript - Part Two: Freeze, Seal, Prevent Extensions and Inheritance
  7. Meta Programming In JavaScript - Part One: Properties and Property Descriptors
  8. We Should Stop Complaining About Open Source
  9. How I Learned to Stop Worrying and Love vIM
  10. Memoization in Javascript
  11. 5 Awesome and Free Services for your Open Source Projects
  12. Code Coverage Made Easy
  13. Multithreading in Node.js</Node>
  14. Using Debounced Functions
  15. Currying in JavaScript