The Curious Engineer

All blogs / Software / engineering practice

Test Double

testdouble.com/insights

Explore our blog for software developers, product managers, and tech leaders. Find favorite tools, quick tutorials, and opinionated hot takes on tech trends.

Software / engineering practiceTesting / QAEngineering management / careersAI / ML

Posts
421 from 12 Nov 2013 to 29 Oct 2026
Posting
monthly (15 in the last year)
Kind
company blog

2026 14

  1. Developers Developers Developers Accelerate your understanding of unfamiliar code with AI AI makes exploring unfamiliar code faster than ever, but speed isn't understanding. Discover how to bridge the gap and truly master a new codebase in Part 1 of this 5-part series. River Lynn Bailey
  2. Developers Developers Developers How did I write this blog post? 4 days, 210 commits, and 17 pull requests - the story of how I wrote this post, and prototyped a new Claude Code skill, lives in these details. River Lynn Bailey AI
  3. Leadership Leadership Leadership Should you replace Salesforce, or keep paying for it? Todd Kaufman Maximize software investment
  4. Developers Developers Developers Horizontal Progression for Software Dave Mosher AI
  5. Developers Developers Developers AI tooling may have solved coding, but not solutions delivery River Lynn Bailey AI
  6. Developers Developers Developers Defend your downtime to improve agentic output With agentic tools writing code, it feels natural to fill the waiting time by reaching for the next task. Before you do, though, have you considered what you might be losing by trying to parallelize more work? River Bail
  7. Developers Developers Developers What Feels Easy Might Be Your Greatest Strength We often mistake effort for value. By combining feedback, work history, and AI, James Walker discovered that the work that felt easiest was often what others valued most. James Walker Recruiting & careers
  8. Developers Developers Developers Agentic Tooling as Accessibility Most organizations expect agentic tooling to greatly increase the speed at which we write code. But there's another benefit in this new world that may not get as much as attention as it deserves: accessibility. River Bailey looks at h
  9. Leadership Leadership Leadership After the tests pass Engineers are great at testing correctness. Far fewer teams know how to measure whether their code is actually performing well once it's in production. Jed Schneider Accelerate quality software
  10. Developers Developers Developers Lay the Foundation Before You Reach for Advanced Agentic Tooling Is your code ready for advanced agentic tooling? River Bailey explores the foundational practices that help both humans and AI amplify good work, and avoid repeating the existing problems. River Lynn Ba
  11. Developers Developers Developers A practical guide to Firebase Emulator for local dev and Cypress testing Setting up Firebase Emulator to work with local dev, Cypress, CI, and Claude Code—what works, what doesn’t, and edge cases to watch out for. Robert Komaromi Software tooling & tips
  12. Developers Developers Developers AI Should Give Us Our Lives Back, Not Fill Them With More Work What do you do with the time saved using AI? River Bailey explores multiple threads while exploring the possibilities. River Lynn Bailey Software tooling & tips
  13. Leadership Leadership Leadership Distributed process ownership eliminates team bottlenecks Process ownership concentrated in a few hands creates invisible organizational drag. When distributed across the team, it eliminates bottlenecks, improves delivery, and frees leaders to do higher-value work. S
  14. AI amplifies everything (including what's broken). Start there.

2025 15

  1. Anyone can code: Software Is having its Ratatouille moment
  2. 5 rules to avoid the 95% AI project failure rate
  3. AI in the workforce: A shifting talent equation
  4. Build common (virtual) ground with unstructured remote calls
  5. C# and .NET tools and libraries for the modern developer
  6. Build with HTMX: Simplify development with a return to fundamentals
  7. Building software teams that manage mistakes rather than rejecting them
  8. 16 things you believe about software from Justin Searls' survey
  9. You build it. You own it. Test Double’s ESOP explained.
  10. Audentes Fortuna Iuvat: being bold amidst uncertainty
  11. Developer QA checklist for feature releases
  12. Developers need more context than you think they do. Here’s why.
  13. Beyond MVP: Why your most valuable tactic matters
  14. Think the customer is always right? Think again
  15. Critical choice, tight deadline? How we deliver speed and quality

2024 17

  1. Before deploying AI tools to your engineering team: A leadership readiness assessment
  2. New survey: How AI is already transforming product management
  3. Should you abstract away third-party vendors in your code?
  4. 7 big takeaways from CIO Tomorrow that every CIO should know
  5. Say hello to azure-blob: The new Ruby gem for Azure storage
  6. Stop shipping features. Start driving impact.
  7. CapEx vs. OpEx: A guide for VP of Engineering to software budgeting
  8. DataConnect 2024: Telling the data story
  9. Consultants aren't as expensive as you think
  10. Why your organization needs to shift from certainty to clarity
  11. A developer's review of CoPilot
  12. Unlock TypeScript conditional types for better code
  13. 14 tools every Ruby developer will love for performance and debugging"
  14. Unlock your potential: 5 lessons from a seasoned software consultant
  15. A plea for lean and efficient software development
  16. Best practices for remote team collaboration, video calls
  17. Must-have tools to supercharge your Python development

2023 14

  1. What the heck is Data as a Product?
  2. A quick way to automate Ruby releases
  3. Avoid the hockey stick problem in project management
  4. Harness your career transition into tech as a superpower
  5. How to spot and fix common recruitment anti-patterns
  6. Enhancing meeting productivity with varied agendas
  7. How we built a new lint rule for React Testing Library
  8. Creating powerful linting rules for better React code
  9. The end of legacy code
  10. How my experience as an engineer made me a better recruiter
  11. How to tell if AI threatens YOUR job
  12. How a supportive buddy can transform your remote onboarding experience
  13. Side project success: 4 tips to stay focused and motivated
  14. Effective and easy strategies to hate bugs a little less

2022 28

  1. Avoiding glue gems in Rails upgrades
  2. How to add deep links to your React Native app
  3. Building a linkblog with Hugo, Tailwind and Netlify
  4. Exploring the secrets of effective software consulting
  5. Lessons learned in type safety: TypeScript, Remix & Prisma
  6. Double Agent Profile: Eric Newbury
  7. Simplify your Rails app with email-based passwordless authentication
  8. Double Agent Profile: Cliff Pruitt
  9. Double Agent Profile: Pier-Luc Faucher
  10. Our ultimate reading list for software consultants
  11. A better way to sort Ruby objects: How our Put gem makes sorting by multiple conditions easy
  12. Double Agent Profile: Eve Ragins
  13. How to boost product development through collaboration
  14. Debugging Ruby on Rails with Visual Studio Code
  15. Double Agent Profile: Robby Thompson
  16. Boost performance and cut costs with Elixir and Erlang
  17. Double Agent Profile: Sukhraj Singh
  18. Double Agent Profile: James Walker
  19. How remote work boosts inclusion and equity
  20. Double Agent Profile: Kyle Adams
  21. Why I love adversarial testing: turning unit tests into a battle
  22. Paying it forward
  23. Boost your development speed with mocking callbacks
  24. How to create powerful APIs with GraphQL and Elixir
  25. How to fake time in a Postgres database
  26. Mastering architecture decision records: your team's secret weapon
  27. Video Series: End-to-end testing with Cypress
  28. Ending salary negotiations: A step toward true equity

2021 26

  1. Double Agent Profile: Justin Schoen
  2. Estimating software is hard: How, why, don't
  3. Track campaign analytics without leaving a mess for your users
  4. Double Agent Profile: Sam Jones
  5. Take control of your privacy: How to DeGoogle your phone
  6. Double Agent Profile: Anya Iverova
  7. Why hiring junior developers can transform your team
  8. Double Agent Profile: Glenn Harmon
  9. Discover your path: product engineering vs. consulting
  10. Double Agent Profile: Viral Patel
  11. Double Agent Profile: Daniel Flynn
  12. Double Agent Profile: Steve Jackson
  13. 4 reasons why being a software consultant is the best career move
  14. Double Agent Profile: Ali Ibrahim
  15. Track your Ruby code's time with the new time_up gem
  16. Double Agent Profile: Minnie Lee
  17. Double Agent Profile: Joel Helbling
  18. Double Agent Profile: Jennifer Konikowski
  19. Double Agent Profile: Neal Lindsay
  20. Why we switched from DEI to EDI
  21. Double Agent Profile: Alex Martin
  22. Double Agent Profile: Marla Brizel Zeschin
  23. Double Agent Profile: Jessie Puls
  24. Double Agent Profile: Landon Gray
  25. The best interview process ever for senior software engineers
  26. Navigating the build vs. buy dilemma for OAuth in Ruby

2020 7

  1. Taming deprecations: Rails 6.1's game-changing feature
  2. Effective pull request reviews boost team collaboration
  3. Empower your activism: A developer’s guide to making real change
  4. Debugging React routing
  5. Boost your productivity with these essential command-line tools
  6. Thriving in remote work: Tips to boost your team's productivity
  7. Cypress vs. Capybara

2019 9

  1. A first look at migrating to GitHub Actions from Travis CI
  2. Mastering Heroku Postgres backups: your complete guide
  3. Transform your React apps with the Model View Controller pattern
  4. 3 keys to upgrading Rails with minimal risk and disruption
  5. CSS: the visual state machine
  6. Are you really ready for serverless? Find out now!
  7. Abusing promises as a locking mechanism in JavaScript
  8. Why NoOps might be the future
  9. Building and deploying Node.js projects on Raspberry Pi made easy

2018 3

  1. Why you should consider dependency injection in Ruby
  2. Effective React testing
  3. Building trust in effective software consulting

2017 7

  1. How to manage conditionals in code effectively
  2. Agent Dossier: Brittany Moore
  3. Explore the power of tmux and tmate for teamwork
  4. Boost your app's accessibility: essential techniques for seamless navigation
  5. Accessibility benefits everyone: boost usability with simple changes
  6. Testdouble.js 2.0: JavaScript’s ultimate mocking library just got better
  7. Crafting an interactive pie graph: The power duo of React and D3

2016 4

  1. Agent Dossier: Dave Mosher
  2. Handling git conflicts with empathy: a developer’s guide
  3. Explore the synergy of Clojure and Node.js
  4. Common patterns using JavaScript promises

2015 3

  1. Deploy your Ember app on AWS with SSL in a few easy steps
  2. Avoid these pitfalls of buying custom software development
  3. Essential Rails test setup tips by Justin Searls

2014 3

  1. Breaking up (with) your test suite
  2. Enacting change
  3. Why estimates fail in custom software development

2013 1

  1. 1st-class web development with Lineman

Undated 270

  1. Field report all things ai
  2. Field report rails world 2025
  3. Field report rubykaigi
  4. Field report the final strange loop
  5. Financial terms every vp of engineering should know
  6. Finding joy at work
  7. Forecasting the future
  8. From engineer to consultant the powerful shift from inward to outward focus
  9. From resistance to results why agentic coding requires a new mindset
  10. Functionally zen
  11. Get in the box illustrated permissions guide to make claude chill
  12. Ghost engineers root cause fix
  13. Github actions terraform automation
  14. Github shortcuts to speed up prs
  15. Going to eleven
  16. Good teams ship great products great teams kill bad ones
  17. Great company cultures hold people accountable
  18. Guide advanced line graphs in react with mui x charts
  19. Guide to react component in the mui design system
  20. Handling herokus new heroku ext schema for postgres extensions
  21. Happier tdd with testdouble js
  22. Healthcare software teams keep fixing symptoms real problems run deeper
  23. How a product leadership transformation drove 3x sales growth
  24. How an early stage startup engineering team improved the bottom line fast
  25. How developers ask why are we building this feature
  26. How i use test doubles
  27. How id start a legacy modernization project now
  28. How modern frontend teams approach automated testing
  29. How product management unlocks business value and maximizes roi
  30. How standard ruby updates its rules
  31. How test data speeds up rails tests
  32. How test doubles interview process improves developer experience
  33. How to balance software architecture goals with limited resources
  34. How to build a documentation companion with claude skills six lessons from the field
  35. How to build a search engine with ruby on rails
  36. How to completely uninstall and reinstall homebrew postgres
  37. How to debug dependencies with git bisect
  38. How to find and remove dead css
  39. How to jump into new technology roles confidently
  40. How to launch on aws cloud without devops team
  41. How to listen well and offer emotional support in crisis
  42. How to make a gem of a gem
  43. How to program
  44. How to recruit the best product talent
  45. How to run effective retrospectives for teams
  46. How to scratch an itch
  47. How to shift focus from symptoms to build stronger healthcare software systems
  48. How to start speaking at conferences
  49. How to stop hating your tests
  50. How to synchronize json date formats for accurate data comparison
  51. How to test auth flows with playwright and next js
  52. How to trust again
  53. How we delivered fast api integration
  54. Humility in software engineering
  55. Implementing rubocop consensus building
  56. Importance of diagrams communicating ideas
  57. Improving app performance trucking industry
  58. Improving database schema without downtime
  59. In the age of ai were in this together
  60. Indypy talk pydantically perfect in every way
  61. Integrating rust with unity for better performance
  62. Intent isnt enough the impact of language in tech
  63. Interview questions software developer consultants
  64. Interview them where they are
  65. Introducing gem dating for ruby upgrades
  66. Introducing good migrations ruby gem
  67. Introducing han a research plan and implement plugin without the rails
  68. Javascript testing tactics
  69. Javascript testing tactics lightning edition
  70. Jest timers vs waitfor debounced inputs
  71. Keep ruby weird again
  72. Keep your coding agent on task with mutation testing
  73. Law of demeter explained
  74. Legacy systems and delivery pressure symptoms healthcare tech teams keep treating
  75. Lessons from luddites automate with intention
  76. Lets standardize rails
  77. Life after nil
  78. Listening for better tech recruitment
  79. Llmallard the low key ai chat bot you secretly need
  80. Looking for failure
  81. Low code no code platforms guide
  82. Make ruby great again
  83. Makefile usability tips for new developers
  84. Manage rails schema changes easily
  85. Managing git blame with ignore revs
  86. Managing legacy code rewrite vs renovate
  87. Managing ruby hashes and rails upgrades
  88. Managing ssh authentication with tmux
  89. Managing technical debt vs credit card debt
  90. Master pitch writing shape up
  91. Mastering automated refactoring tools a practical guide
  92. Mastering macro machine
  93. Matt jones on elixir and how to help support open source
  94. Maximizing value conference talks
  95. Migrating from mongodb to postgresql in rails
  96. Migrating legacy apis to serverless with aws
  97. Misconfigured aws s3 security breach prevention
  98. Mock objects in discovery tests
  99. Moving from angularjs to angular
  100. Natural sorting postgres collation
  101. Necessary sufficient
  102. Never staff to the peak
  103. Office politics
  104. Offshore software consulting risks
  105. Optimized rails enums with postgres
  106. Optimizing activerecord migrations for rails
  107. Optimizing ci cd with circleci for data engineering
  108. Optimizing code slides for clear presentations in keynote
  109. Optimizing docker builds for faster cloud deployments
  110. Optimizing rails forms with tailwind
  111. Optimizing software adoption lessons from beos
  112. Organizational observability the ai alignment problem starts upstream
  113. Outputs are cheap being wrong isnt
  114. Phoenix liveview without javascript
  115. Plant your flag reflecting on career growth
  116. Please dont mock me
  117. Please mock me
  118. Podcast an aberrant generation of programmers
  119. Podcast dont sleep on ruby and rails
  120. Policy update were still remote
  121. Power up scripts for rails apps part 3 kubernetes
  122. Power up with rails scripts part 1 environment setup
  123. Power up with rails scripts part 2 docker
  124. Practical security strategies for developers
  125. Practical tips to improve empathy
  126. Pragmatic approaches to agentic coding for engineering leaders
  127. Preparing effective tech conference talks
  128. Preventing burnout in software consulting
  129. Pride month learning and sharing lgbtq experiences
  130. Product leadership challenges networking
  131. Product management for business growth
  132. Product management restraint why less delivers more
  133. Profile river lynn bailey
  134. Programming flutter book updates and error handling
  135. Pydantically perfect a beginners guide to pydantic for python type safety
  136. Pydantically perfect declare rich validation rules
  137. Pydantically perfect normalize legacy data in python
  138. Pydantically perfect seamlessly handle non pythonic naming conventions
  139. Quality you cant generate ai is only as good as your constraints
  140. Rails 8 0 beta just dropped heres whats new and why it matters
  141. Rails aws elastic beanstalk setup
  142. Rails forms non active record objects
  143. Rails upgrade bug fixes and security support ending soon
  144. Rails upgrade deprecation warnings guide
  145. Rails upgrade dual boot docker setup
  146. Rails upgrade guide to incremental changes
  147. Rails upgrades hidden costs
  148. Rails world eileen uchitelle team culture over architecture
  149. Ransomware attack response turned software innovation
  150. Ratcheting to zero how incremental constraints eliminate technical debt
  151. React code style recommendations
  152. React component conditional rendering tactics
  153. React context for dependency injection not state management
  154. React data flow dom integration
  155. React forms complexity and user experience
  156. React project structure guide
  157. React query optimizing state management
  158. Red green refactor your context
  159. Refactoring best practices extracting functions
  160. Reflection on going back home ukraine
  161. Regular brainstorming for product innovation
  162. Regulatory compliance leads to high quality software
  163. Remembering chris seaton ruby community legacy
  164. Restitching the internet the robots were here the whole time
  165. Rethink tdd teaching strategies
  166. Return to office mandates impact
  167. Ruby standard config
  168. Rubyconf 2017 nothing new resource list
  169. Running a business demystified
  170. Rust unity zero copy ffi guide
  171. Self hosting vs cloud services comparison
  172. Setting up a new mac for development
  173. Shape up vs tdd for project management
  174. Shared understanding
  175. Should code review be mandatory non blocking review
  176. Simplify software setup with nix and devenv
  177. Simplifying crud operations in elixir with ectorresource
  178. Smaller development teams efficiency
  179. Software consulting phases for successful client engagement
  180. Software engineering and ai finding the plot again
  181. Software engineers communication skills
  182. Software innovation and why domain expertise is overrated
  183. Solving the boolean identity crisis
  184. Sometimes a controller is just a controller
  185. Speed is a side effect of making the system work
  186. Speed up your rails app with upsert all
  187. Starting your consulting journey at test double
  188. Stop chasing the perfect jira ticket
  189. Stop paying tech debts start maintaining code
  190. Story points alternatives
  191. Strengths of black business leaders
  192. Super performant new roc language
  193. Surgical refactors with suture
  194. Sustainable learning
  195. Symptoms to solutions biggest software challenges for healthcare in 2026
  196. Tame the frontend with elm
  197. Tech assessment turns uncertainty into roadmap
  198. Test double consulting roles responsibilities
  199. Test double las vegas retreat
  200. Test double poc erg first year achievements
  201. Test double way building great software teams
  202. Testdouble vs sinon js comparing javascript testing libraries
  203. Testing environment variables ruby
  204. Testing esm with mocha and testdouble js
  205. Testing json with node functional streams
  206. Testing logging in node js with tdd
  207. The anvil of alignment the value of monoliths over microservices
  208. The arab american story a silent minority
  209. The business of ai solve real problems for real people
  210. The human signal is getting lost in recruitment and it matters more than ever
  211. The impact of ai on software industry economics
  212. The looming demise of the 10x developer
  213. The moat is made of people
  214. The myth of industrializing software engineering
  215. The parable of the failing test
  216. The root causes healthcare teams overlook siloed data and misaligned priorities
  217. The selfish programmer
  218. The shockingly simple math for why we need test automation
  219. The slippery slope of docker dev environments
  220. The social coding contract
  221. The tldr on rubys new tldr testing framework
  222. Things i wish i knew before going remote
  223. This has happened before its happening again
  224. Three amigos with ai stop building the wrong thing faster
  225. Thruster vs kamal proxy guide
  226. Transitioning from javascript to go experiences
  227. Truth tables in software development
  228. Turn lagging statistics into leading indicators
  229. Turning observability into a team strength without a big overhaul
  230. Type safety at runtime with zod
  231. Under pressure
  232. Understanding bikeshedding in tech leadership
  233. Understanding code boundaries and seams
  234. Understanding legacy application rewrite vs refactor tradeoffs
  235. Unrequired love a discussion on javascript and dependency management
  236. Using cockroachdb with rails
  237. Using foreman and overmind for efficient web app development
  238. Virtual machines portability sustainability
  239. Vs code ruby extension performance tips
  240. Web vs native mobile apps which is better
  241. Were about to unwind fifty years of progress
  242. What does good code even mean now
  243. What i learned from pairing by default
  244. What is a meta programmer
  245. What is legacy software in the age of ai
  246. What it takes to keep humans in the lead with ai
  247. What its like to work as a consultant at test double
  248. What we ask in our equity diversity and inclusion edi interviews
  249. When code reviews arent mandatory
  250. When offshore software is cheaper and when its risky
  251. When playing it safe is the riskiest move
  252. Why 100 remote works for working parents
  253. Why edi work is super important to test double
  254. Why fixed bids fail more equitable approach software consulting contract
  255. Why hiring more developers costs more than you think
  256. Why i actually enjoy pr reviews and you should too
  257. Why its worth outsourcing your rails upgrades
  258. Why lineman js failed lessons
  259. Why modern engineering practices make business sense
  260. Why our hiring process is focused on value alignment
  261. Why product managers accelerate improve software delivery
  262. Why product operating model transformations stall and what to do first
  263. Why quality software is expensive to build
  264. Why rails upgrades are so important
  265. Why use git large file storage
  266. Why we coach the system not just the team
  267. Why were not chasing the ai hype and what were doing instead
  268. Write cleaner self documented tests by defining methods in rspec
  269. Youre holding it wrong the double loop model for agentic coding
  270. Zero downtime rails upgrades