Don of the Day

Don of the Day


Adventures in software development with Xamarin and the Web

Software developer, building things with code in sunny Scottsdale, AZ.

Share


Twitter


Software Developers & Photography

Don FitzsimmonsDon Fitzsimmons

Maybe you have observed this phenomenon too. There are a lot of software developers who are passionate about photography. So much so that it's a joke among the hosts of a popular photography show I watch weekly. On the show, called The Grid, the hosts sometimes take questions from aspiring photographers looking to find their way into the business of being a photographer. Often, it's a software developer like me.

I've noticed this in my own experience too. Not only am I very much into photography, but during my software career, many of my coworkers have been as well. In every position I have held, there's always a resident photographer among the development team. Upon reflection, it makes sense. Photography and software development have a lot in common. This may sound strange, but let me elaborate.

Photography and Software: Creative Pursuits

Not many people think of software development as a creative pursuit, but it is. The typical caricature of a software developer is a geek who loves numbers, algorithms and so much complicated maths. Okay, that's true in some cases, but creating software is so much more than that. It's creating something from nothing (ex nihilo).

As a developer, you have a vision for a product and you employ a vast array of technical tools to realize that vision. You also work within a set of constraints: the application must be stateless, it has to run on X operating system, it most conform to X business rules and most of all, it must provide an intuitive user experience.

There so many variables when writing software, so many things to balance and keep track of. To succeed, you have to focus, to build up the whole picture in your mind. But all of this complexity, the constraints and balance are part of the process of creating. When the application is complete, when your vision is realized, the software developer can step back and marvel at his creation. That's why I love writing software. It's not the nuts and bolts, the frameworks, or the algorithms. It's the creativity that draws me.

If you've dabbled in photography, you know it can get very technical, but, unlike software development, most people associate photography with creativity and art. Seems natural. Photography results in pretty pictures, a visual medium, not unlike other visual things we call art. For people who take photography seriously, they too have a creative vision, a mental image that eventually works itself out into a final product that one can stand back and gaze at with pride. That's why I love photography. Despite the need to understand the technical aspects of photography, it's the creativity that draws me.

Photography and Software: Technical Pursuits

Just as photography is assumed to be creative, even artistic, software is assumed to be technical. As stated above, there is just as much creativity involved in software creation as there are technical considerations. Software requires a mental model filled with all sorts of technical things: languages, frameworks, platforms, patterns, interfaces and a whole host of things required to realize that creativity.

Photography also requires a large mental model filled with its own technical considerations. There's ISO, shutter speed, aperture, focal length, exposure metering, composition, lighting, posing, image work flow, image editing software and the list could go on. Photography, as a creative pursuit, requires a lot of technical know-how. It's possible to enjoy photography without paying too much attention. You could just switch that mode dial to auto and fire away. You could also use a drag and drop app builder to create software, but that's not what creative people desire.

People who truly enjoy advancing creativity quickly realize that a creative vision can't be satisfied with auto mode or drag and drop, because our vision isn't satisfied until we can match our sense of taste with our end-product. We need to understand the technical details that will enable us to get where we want to go. And so, we educate ourselves and find that balance between the technical and the creative so that we can make something that didn't exist before. It takes a lot of time and a lot of failure but there are many rewards along the way.

Photography and Software: You Never Arrive

Both of these disciplines have something else in common: you will never stop learning. With software, there will always be a new development framework, a new device to cater to, or an entirely better way to do something you thought you mastered. With photography, there's always new and improved gear on the market, better editing software, the mystery of understanding light and the infinite things you can do with it. The joy of both disciplines is the creativity and constant growth. The last application you coded was your best and the last photo you created was your best, but there's a constant desire to make the next one better.

Certainly you can master software development, you could also master photography. It's possible to reach a point where you've done so much, gained so many years of experience and reached that point where other people recognize you as an expert. But I'm willing to bet Steve McConell, Yukihiro Matsumoto and Anders Hejlsberg strive to improve their craft, just as Joe McNally, Jay Maisel and Dan Winters continually work to improve theirs. In both photography and software, you could evolve your craft significantly by occasionally reviewing the fundamentals.

Photography and Software: Problem Solving

Much of software development can be distilled down to problem solving. In fact, you could argue that it's all problem solving. A business has a process that needs to be more efficient. The inefficiency is a problem, let's solve it with software. The application is broke, fire up the debugger and let's step through the code to pinpoint the problem. Many software job interview questions involve solving a set of problems using pseudo code to asses the developer's ability to think through and provide a solution.

Are photographers problem solvers? Well known wedding photographer and former photo journalist, Ryan Brenizer has the term "problem solver" in his title. On his about page, Zack Arias has this to say,

I can handle any technical difficulty you can throw at me. I once heard that a photographer’s job description is “problem solver”. I would have to agree with that.

So why are photographers problem solvers? Just like software development, you always have something working against you: lighting conditions, lousy locations, difficult subjects or a busted flash trigger. Both disciplines involve so many variables and constraints, it's amazing anything good results from all of the hurtles. But a true professional, in either discipline, will know how to deal with and solve the problem and get the outcome they desire given the circumstances.

Sometimes creativity can come from self-imposed problems in both disciplines. For example, constraints like shooting with only a 50mm lens for a year, or only using one manual flash and an umbrella (suggested by Zack Arias) can do wonders for expanding your ability and creativity in photography. Likewise, forcing yourself to only rely on command line tools for development, or limiting yourself to coding your own JavaScript instead of relying on a framework will help expand your development skills. These are Liberating constraints.

A Few More Things

I've outlined why I think so many software developers are passionate about photography. There are many similarities among the two disciplines. Creativity, technical know-how, constant learning and problem solving. I'm sure there are more, but to me, those are the big ones. I enjoy writing software and making images, although I wouldn't call myself a professional photographer, I do charge clients for my work, mostly so I can justify the expense of buying camera gear.

There are some pointed differences between these crafts. For example, I can buy a pretty inexpensive laptop, spend a couple hundred dollars on software licenses and code the next big app. Most software development can be done with little expense. Photography is expensive. You can start with a budget setup, but you'll find yourself limited in short order. Between a decent camera, lenses, lighting gear and editing software (Lightroom, Photoshop, plugins, etc), it's easy to spend thousands of dollars and many people get wrapped up in the obsession with acquiring more gear (a.k.a. GAS).

You can open a laptop and start coding whenever you want, but photography requires a subject, whether it's a person or a landscape, you have to get off your duff and go somewhere, or talk to people. There's timing and scheduling involved. Photography forces you to do something more than sit, although you will find yourself in front of a computer for hours on end processing your images once you return home.

A Question

What about photographers who have become software developers? I can't say I know of any people who started out as a photographer, but ended up a software developer. Shouldn't there be just as many of those? Apparently not.

Software developer, building things with code in sunny Scottsdale, AZ.

Comments