A little lecture from photography
Although it has nothing to do with my basic concept of my blog, I’d like to point out an analogy that occured to me in our recent travel. One of my hobbies, which I neglect a lot these days, is photography. But the last week, which we spent in the north of Argentina, I took my Nikon and had plenty of opportunities to take some nice pictures.
Remembering back to when I started with the camera, my approach to learning photography with the digital reflex was quite technically. I studied a lot of specifications and books about photography and spent hours trying all combinations of the parameters time, aperture and sensitivity. I even experimented a lot with the white balance, because I thought I could do better than the automatic. Then I learned all the different tools for focusing fixed and moving objects, and to configure the automatic light measurement, so it does what I want. But still, the results were not satisfying at all.
Transferring this approach to programming, almost the same thing keeps happening to me. I want to write a piece of UI for demo or proof of concept, and spend a lot of time writing a nice middleware or ViewModel for it. There’s a nuget package doing offline sync for me, and instead of just using it for now, trusting the implementation and focusing on the task at hand, I start debugging and profiling it, and forget that a collegue is waiting for my piece to being able to finish his own.
What I want to point out, is that we should always think twice when we want to deep dive into a system, when the task we’re working on at the moment doesn’t require it necessarily, and when it’s more important to just write the piece of logic (runnable in a little test environment), or a piece of UI to verify it with the product owner or user (and just use some design data as a start). Once the PoC is accepted, we can still deep dive and understand and test everything.
Back to photography… when it happens to you that you start thinking of which combination of parameters you want to use, or which focus and light measurement setting could be best, then in many cases, you end up loosing the moment, and the picture. Especially when starting with a new camera, just trust the automatic and focus on taking the picture. In my travel last week, I could take a pretty nice picture of the town we stayed in for some days. But it was not about having the perfect parameters. It was just done with automatic, but the secret was to stand up early and use the very first sun rays of the days. And climb on a little mountain which had the perfect angle on the town, in combination with the direction of the sun.
So what I took out of this, was this lecture: Before working on a task, figure out the main objectives. And especially those that are not clear and precisely defined yet. Then just implement this little part (without the complete system integration) – in other words ‘just take the picture’. Then, in a second loop, the integration of the piece and perfection of the implementation can still be done.
Although this came from photography, I still wish you
HAPPY PLANTING 🙂