testing
Don’t bother with migrations for performance-based indices
I used to write database migrations for performance-based indices, like adding an index to a foreign key column. I don’t do it anymore, and do not recommend the practice. Instead, write your SQL against a production-like database (same schema and data), and run it against production directly as part...
Read more
Diffusing religious arguments
I called arguments between assemble-your-own vs. kitchen-sink framework approaches a religious one akin to tabs vs. spaces in my previous post. All of my leadership positions have been on brownfield products, usually turnarounds, so I’ve walked into minefields of religion that I’ve had to diffuse in order to focus...
Read more
Comparing assemble-your-own vs. kitchen-sink frameworks
In my previous post, I wrote about some of the “performance” tradeoffs in build-yourself vs. off-the-shelf approaches as an analogue for remote vs. collocated teams. I’d like to wade deeper into the build-yourself vs. off-the-shelf approaches, in this case going with an “assemble-your-own” framework (Sinatra with Sequel, Flask with...
Read more
Performance of remote vs. collocated teams
I saw a tweet the other week about remote teams having lower performance than colocated teams: It's not possible to not take a significant performance hit if you're not collocated. Remote if you must, but don't imagine that it's not costing both money and time to do that. —...
Read more
Linting pull requests
A couple weeks ago on Twitter, I joked about adding a way to bypass Cozy’s Pull Request linter by including #YOLO in the pull request description. It spawned an interesting discussion and a few people asked for more details about how the linter works. Some devs at @CozyCo said...
Read more
Automated testing shows a respect for employees
In the tech-artists.org G+ community page there was a comment on a thread about unit testing: A key factor in TA tools is the speed at which we need to deliver them, and our audience is considerably smaller than, say, engine tools code. Therefor it becomes somewhat hard to...
Read more
Change should be the ally of quality
In The Beauty of Testing, Steven Sinofsky writes: …great testers understand one the cardinal rules of software engineering—- change is the enemy of quality. This is not a cardinal rule. This is a outdated and obsolete mode of thinking. Change is how you discover great UX. Change is how...
Read more
Technical debt metaphors get it so wrong
In my previous post about technical debt, I explained how modern definitions of technical debt are harmful. Now I turn my attention to equally harmful metaphors. Viktoras Makauskas made the following metaphor in a comment on my last post. This is a pretty perfect stand-in for metaphors I’ve read...
Read more
Undefining “technical debt”
For me, technical debt is defined pretty loosely as stuff you don’t like in the code and need to change to keep up velocity. However, I’ve seen lots of articles lately discussing a precise definition of “technical debt.” I would sum them up as: Technical debt is incurred intentionally....
Read more
We’re not so different, you and I
Ben Sandofsky wrote a post about why QA departments are still necessary, specifically with regards to mobile app development. He makes a good point: mobile apps create a distribution bottleneck that makes very rapid iteration impossible. I agree, and this is a good angle to think about. I would...