Why software is the intersection of art and science

A very long post that can probably be summarized as 'I like it because it's fun.'

This is a topic I continually explain to friends and wanted to write it down just to have my thoughts collected somewhere. A lot of people ask, "Why software?" And here's my two cents: It's an intersection of art and science that makes me get up every morning excited to code (lame).

The Science Part

We all know that software development is built on logic, algorithms, and math, right? But, I hate math, and so does every other sane person. Software is math, but it has a purpose. It's all about solving problems in the most efficient way possible. Abstract ideas like loops, data structures, and as much as it nauseates me, even Big O notation come to life. I love problems that makes your brain work in a way it's never worked before, and software engineering has an endless supply of those.

The Art Part

I am the least logic-minded person I've met. I pretty much only created art in my free-time as a kid, and even now I still create music all the time. I think the ability to create art is one of the most fundamental aspects of being human, and it's a big reason life has value (that's dramatic, I know). You know that feeling when you see a piece of art, like a painting or a song, and it just makes sense? That's what well-designed software feels like. Saying that out loud makes me feel like the least cool person to exist. Anyways, it's not just about slapping code together to make something functional. It's about the design, the user experience, the beauty of it. It's about writing code that's clean and maintainable. You can learn a lot about a person by the way they code—their way of solving problems, their way of expressing logic.

The Intersection

You craft a fast, efficient algorithm but also put in the work to make sure it's understandable and good to look at. A user interface, for example, needs to be functional, fast, and easy to use. But, it's also incredibly important to look good. It has to feel right- and that's not easy to do. It's an art form. BUT ALSO THERE'S PSYCHOLOGY BEHIND WHY IT FEELS RIGHT. I could talk about this for seven years. I think this balance is what makes a good engineer. When you can find a bug and solve it like a puzzle but also take time to think about how the software feels to a user. It's not all 1s and 0s; it's also hues, spacing, timing, and emotion. Math to magic.