A few weeks ago, I found myself suddenly obsessed with buying a new camera. I've done all of my photography using the Fuji X system since the X-T1 was released, and have invested significant time into learning the system and significant money into acquiring various camera bodies and lenses for it. Changing systems would involve throwing all of that out, and is a big deal. I spent a few days in a haze of near misses with research, digging into all kinds of alternatives, adding items to a shopping cart or browsing at in-person camera stores before pulling back at the last minute. Why, I kept asking myself, did I want this new gear? Switching to a new camera system takes a lot of money and requires a lot of time to learn the new tools. The answer took me a few days to come to terms with, but it wasn't complicated. I wanted a better camera because I wanted to take better photos. My camera club in Dublin had recently completed its annual competition, and I didn't even get third place in any of the categories. Frustrated in that result (despite loving all of the photos I submitted), I wanted to take better photos so that I would win the next time.
As a photographer, there is a complex interplay betweeen the artist and the tool. How much of my photography is the camera, and how much is the photographer? The choice of a camera and lens is a distinct and specific part of capturing every photo, like a painter choosing to use oils or acrylics. I use a long telephoto lens for taking up-close photos of birds. Macro lenses are needed in order to take those incredibly detailed photos of very small things. When I'm trying to take a photo and it just doesn't work, it can be easy to think, "if only I had a better camera" or "if only I had the right lens". When I say to myself, "I want to take better photos", what I really mean is, "I want to be a better photographer". Camera gear isn't holding me back from producinig better images, though. I need to improve my actual photography skills, my understanding of the craft. It can be tempting to give in to that "easy" way of thinking, though, and just try to get a "better" tool rather than investing more in the skills and tools I've already got.
So how does any of this relate to software development?
When it comes to software development, I'm not a novice. I've spent more than two decades working hard at understanding everything I see. I don't just slam through tasks; I take the time to learn how to do them, even if that means that I move slowly. Tools like Webpack and Babel unlocked huge amounts of potential in how we build websites, but I still look at every new tool and spend the time to evaluate whether it will make me more effective. Does it act as a force multiplier for the skills I've already got? Does it get some difficult things out of my way so that I can focus on more important things? What is the cost of adopting these new tools, both in user experience and in developer experience? Things like TypeScript require a significant amount of training to be effective and make development more complex. Whether this tradeoff is worthwhile to you likely depends heavily on how many people you work with. The more engineers in a project, the higher the likelihood that somsone with incomplete knowledge of a complex system will break things. In those cases, it's generally a lot preferable to have development move a bit slower in order to prevent scenarios where everything breaks. Developers who take the time to really learn how to use TypeScript also tend to move even faster when using it than they would have without it, because they are better able to make use of the tools, but developers who don't dedicate that time can often find the whole experience quite frustrating and hunt for shortcuts like as
-casting in order to keep moving and feel like they are improving.
Tools like ChatGPT or Copilot don't help people build skills. In the same way that this novice photographer was deluding himself into thinking that spending a bunch of money on a new camera would make him a better photographer, a novice engineer can fool themself into thinking, "this will make me a better programmer". CTOs and VPs of Engineering can say, "it's cheaper than hiring experts or training our existing programmers". Leaders hope that these tools will allow them to hire less-experienced engineers or get existing engineers to fill gaps with minimal reskilling. It's a shortcut, and it might feel good in the short-term. In the longer term, though, the growth is minimal and the results are lacking. If I buy that fancy new camera now, then what will I do when that camera fails to magically make me take better photos? When I see photos taken by experts, the camera is nowhere near as important as the person using it. That photographer didn't become an expert by buying better cameras, they became an expert by developing their skills over the long term.
If you're a programmer or a photographer, resist the easy shortcut and invest in yourself. Become a better creator, not just someone who requires better tools to improve.
Since you've made it this far, sharing this article on your favorite social media network would be highly appreciated 💖! For feedback, please ping me on Mastodon: @sangster@macaw.social.
Published