Breaking Down the False Dichotomy

For years, I unconsciously bought into the idea that there are “technical people” and “creative people”—two distinct tribes with different skills and mindsets. Starting this photography journey has completely shattered that assumption.

The more I dive into photography, the more I realize that coding and creative work share fundamental patterns and principles. They’re not opposites—they’re complementary ways of problem-solving and self-expression.

Pattern Recognition in Both Worlds

Visual Patterns vs. Code Patterns

In photography, I’ve learned to recognize visual patterns:

  • Leading lines that guide the viewer’s eye
  • Rule of thirds for balanced composition
  • Color relationships that create harmony or tension
  • Light patterns that reveal form and mood

In development, I work with code patterns:

  • Design patterns that solve common problems
  • Architectural patterns that organize complexity
  • Data flow patterns that manage state
  • Testing patterns that ensure reliability

Both require training your brain to see underlying structures that others might miss.

The Iteration Mindset

Photography Workflow

My photography process has become surprisingly systematic:

  1. Capture multiple variations of a scene
  2. Review what worked and what didn’t
  3. Refine technique based on results
  4. Repeat with intentional improvements

Development Workflow

This mirrors my development process:

  1. Build a working version
  2. Test and identify issues
  3. Refactor for better performance/maintainability
  4. Deploy and gather feedback

Both are inherently iterative processes where perfection isn’t the goal—continuous improvement is.

Problem-Solving Approaches

Technical Debugging vs. Creative Problem-Solving

When a photo isn’t working, I ask similar questions to when code isn’t working:

Photography:

  • Is the exposure correct? (Are the fundamentals right?)
  • Is the composition distracting? (Is the structure clear?)
  • What story am I trying to tell? (What’s the intended outcome?)
  • How can I simplify this? (What can I remove?)

Development:

  • Is the logic correct? (Are the fundamentals right?)
  • Is the architecture maintainable? (Is the structure clear?)
  • What problem am I trying to solve? (What’s the intended outcome?)
  • How can I reduce complexity? (What can I remove?)

Constraints Drive Innovation

Artificial Limitations

In photography, I’ve discovered that constraints boost creativity:

  • Using only one lens forces you to move and think differently
  • Black and white photography makes you focus on light and composition
  • Limiting yourself to one subject reveals infinite variations

In development, constraints also drive better solutions:

  • Memory limitations lead to more efficient algorithms
  • API rate limits encourage better caching strategies
  • Browser compatibility requirements force cleaner, more robust code

Aesthetic Sensibility in Code

Photography has made me more aware of aesthetics in code:

Code as Visual Medium

Clean, well-formatted code has visual appeal:

  • Consistent indentation creates visual rhythm
  • Meaningful variable names tell a story
  • Logical grouping creates visual hierarchy
  • Whitespace provides breathing room

The Beauty of Elegant Solutions

I’m now more drawn to code that has what photographers call “visual weight”—solutions that feel balanced, purposeful, and free of unnecessary elements.

Patience and Observation

Waiting for the Right Light

Photography has taught me patience in ways that development work sometimes doesn’t encourage. Waiting for golden hour, observing how light changes throughout the day, watching for the right moment—these require a different kind of attention than sprint deadlines typically allow.

Debugging with Fresh Eyes

This patience translates to development. Instead of frantically trying solutions when stuck on a bug, I’m more likely to step away, observe the problem from different angles, and wait for clarity to emerge.

The Beginner’s Mind

Embracing “I Don’t Know”

Starting photography as a complete beginner has been humbling and energizing. It reminded me how much I love the learning process—something that can get lost when you’re an experienced developer working on familiar problems.

Asking Different Questions

In photography, I ask questions like:

  • “What would happen if I shot this from below?”
  • “How would this look with different lighting?”
  • “What story does this composition tell?”

These “what if” questions have started influencing my development work:

  • “What would happen if we approached this problem differently?”
  • “How would this look with a different architecture?”
  • “What story does this API tell?”

Cross-Pollination of Skills

Systematic Learning

The structured approach I use for learning new programming languages works well for photography:

  • Study fundamentals before advanced techniques
  • Practice daily rather than cramming
  • Build projects to apply knowledge
  • Seek feedback from experienced practitioners

Creative Problem-Solving

Photography’s emphasis on creative problem-solving has influenced my development work:

  • Looking for unconventional solutions
  • Considering the emotional impact of user experiences
  • Thinking about the “composition” of interfaces
  • Finding beauty in functional design

The Compound Effect

Better at Both

Learning photography hasn’t distracted from my development skills—it’s enhanced them. The visual training improves my UI/UX sensibilities. The patience required for good photography makes me a more thoughtful code reviewer. The willingness to experiment with techniques makes me more open to new programming paradigms.

Different Types of Expression

Both coding and photography are forms of expression:

  • Code expresses solutions to problems
  • Photos express perspectives on reality
  • Both require technical skill in service of communication
  • Both improve with practice and feedback

Practical Applications

In Development Work

Photography skills that transfer to development:

  • Composition awareness improves interface design
  • Pattern recognition helps identify code smells
  • Light sensitivity enhances understanding of visual hierarchy
  • Storytelling mindset improves user experience design

In Photography

Development skills that transfer to photography:

  • Systematic thinking improves technical execution
  • Debugging mindset helps troubleshoot exposure issues
  • Modular thinking improves composition planning
  • Version control habits help organize and track progress

The Meta-Learning Skill

Perhaps the most valuable insight is that learning how to learn is a transferable skill. The process of becoming better at photography is teaching me how to become better at acquiring any new skill—including future development technologies.

What’s Next

This intersection has me curious about other creative-technical crossovers:

  • UI/UX design with systematic design thinking
  • Music production with audio programming
  • 3D modeling with computational geometry
  • Writing with documentation and technical communication

A New Definition of “Technical Person”

I no longer see myself as just a “technical person” who happens to be learning photography. I’m a person who enjoys learning, problem-solving, and creating—whether the medium is code, light, or anything else.

The technical and creative aren’t opposing forces. They’re different lenses through which to engage with the world, and the richer perspective comes from using both.

Interested in seeing how this philosophy plays out? Check out both my code projects and my photography portfolio to see the intersection in action.