The other day I got tagged on a Twitter conversation between a couple of my colleagues, Ben Dowen and Dan Ashby, which ended with Ben citing me as an example:
But there is a trap, in that a Dev who Tests, or Tester who codes both risk becoming Test Automators ... The counter argument is Testers who code can do as @qahiccupps does, and use and build tools to explore.
A jumble of thoughts tumbled out as I read it and here they are, in no particular order.
It is flattering to be mentioned but I'm far from the only person doing this. Maaret Pyhäjärvi and Rob Sabourin are vocal about the value it can bring and go out of their way to tell and teach others how to get it.
Ben is right when he says I use coding as a tool, and as a tool factory. It's a means to an end.
Coding itself doesn't give me a lot of pleasure. Having created a useful thing gives me an enormous amount of pleasure.
I am not a great developer. But then I rarely need to be.
Yes, I have made bug fixes that are now running in production. But I can also chuckle about the memorable PR comment "auch!" if I find myself getting too big for my boots.
But coding is not just the code.
It's has been, and remains, interesting and valuable for me to read around the theory on software development, the languages and the kinds of languages out there, the ideas and practices that are or were current, and the sociology of developing software at scale. I also read the source code of the products I work on.
Why? Because these things are relevant to my work: the technologies chosen, the people chosen, the process and practices chosen, and the interactions between those things.
Interactional expertise is Harry Collins' term for having sufficient knowledge about a topic, and the community around it, that you can talk to experts and practitioners at their level. I often aim for this level, because without it there is always a layer of indirection in conversations.
Coding has helped me move towards interactional expertise with software developers. But I seek it with product owners, technical authors, UX specialists, and other colleagues too.
Writing complex programs is not really my jam. Finding today's answer is more often what I'm after.
I'm usually happy to lash things together and make a path from end-to-end. I can refine later, when and if I need to.
I tend to prefer interpreted languages where I can get quick feedback, run in minimal environments, and move from command line to script easily.
IntelliJ is the IDE my team uses. It is powerful and complex and intimidating.
But I've learned enough of it to be comfortable changing, building, running, and debugging the code for the product I work on.
And, to circle back to the top, I've made some tools that support me in doing that. I've got scripts that tunnel to various environments, pull and run Docker images for the versions of products I want to test against, or collect environment data for reporting issues.
Perhaps I seem to have done and know a lot about code, about myself, about work? Let's be clear, it didn't come instantly, or easily.
Just last week I wrote my first Python script. Why Python? Because I've only read Python in the past, and there is Python code in my product, and I thought it'd be an opportunity to deepen my knowledge. Why a script? Because I had a need I couldn't satisfy otherwise.
I wrote some code by myself, and I paired with a colleague on it for an hour, and I Googled a lot, and I hacked a first pass into existence. I doubt it's very Pythonic, but it met my needs.
This is how it works for me, for code and everything else, a loop: be intentional, learn a bit, try a bit, reflect a bit, repeat.
Image: https://flic.kr/p/2kPSKnahttps://twitter.com/FullSnackTester/status/1497680124447232002?s=20&t=ImMaXpG_QcnH0VPLfdP6GA
Comments
Post a Comment