3 ms·
This nails it in my opinion. Too often I see people assume that programming/coding is somehow science based. It's not really, it's an art and you need to be a c
by optimuspaul 10y ago
This nails it in my opinion. Too often I see people assume that programming/coding is somehow science based. It's not really, it's an art and you need to be a creative person to be good at it. The science comes later (sometimes never for some).
- monk_e_boy 10y agoI moved from coding to teaching. It's amazing how they use math scores to predict how well someone will do at computing. I was rubbish at maths, but fine at coding. It's more art than anything.
- Clubber 10y agoIt is absolutely a creative endeavor. The science and math are just the paintbrushes and canvas.
- shermanyo 10y agoThis is really interesting to me, how different people view programming at a conceptual level. My current view (it changes every couple of years) is that as a skillset, programming is primarily based on planning and management, most akin to logistical management and orchestration. (we're just lucky our workers are CPUs and resources are memory/bandwidth vs workers you have to individually train, and physical resources that are permanently consumed) The focus of a programmer's work, and the skills required include: - domain knowledge and understanding of the work being done - developing use cases and modelling a solution, often built from well defined and understood 'components' and relationships between them (eg. factory/production, shipping/freight, warehouse/storage, storefront) - defining processes and procedures to deal with the various states throughout the project's lifecycle - logic and control flow through these processes including synchronization and validation The more I've looked at examples in areas outside CompSci, the more parallels I've drawn to general project planning and management skills, vs those more artistic or scientific. In case it's unclear, I _am_ talking about writing code, and not software development in general. I often think of my data model as a physical system, and its behavior in terms of real world systems. As a simple example, I visualize the function processing a FIFO queue as someone working a specific station in an assembly line factory: their job is to take incoming pieces of a known, expected type and do _something_. I find this helps me "zoom in and out" mentally, grouping things in context with some understanding of what's going on internally, while still treating it as a "black box". (eg. you can still picture what's going on inside a "factory" when you're looking at it as a whole, with several inputs and the produced output)
- lliamander 10y ago> programming is primarily based on planning and management, most akin to logistical management and orchestration. That's how I feel as well. Maybe it's a by-product of the software we work on? I work on IT management software and distributed control systems. When working with control systems, the "science" part typically is in the analysis and testing phases (since we have to come up with models of physical systems). For coding itself, however, it is closer to what you describe. > I often think of my data model as a physical system, and its behavior in terms of real world systems. I do this too, especially when programming in Erlang. When building software systems that are modeled as a large number of concurrent, message-passing actors/processes, it readily lends itself to this "physical systems" analogy.
- loafa 10y agoMore of a craft than an art. Sometimes it's more like woodworking, sometimes it's more like plumbing, but it's rarely anything like painting.
- dtjohnnymonkey 10y agoI have a friend who is an artist that spent the last 10 years working on his painting skills. I observed one interesting parallel between developing skills as a painter and as a programmer based on conversations with him. Beginning painters tend to get overly focused on very small details without having a good understanding of how they are bringing the painting as a whole together. They spend too much time on these details, whereas advanced painters are able to move very quickly with faster strokes. It's pretty amazing to see a painting where the strokes don't make sense when you look at them one-by-one, but the overall effect truly reflects something from reality. I found this to be true also with inexperienced developers. We focus on the latest trends, micro-optimizations, coding styles, and "small" details that are easier to master -- yet we struggle with the bigger picture things like delivering a product quickly. Kind of like the saying "you can't see the forest for the trees". (You focus on the incidental details, but not the larger purpose) On a slightly different note, I have several friends who are writers and I have found programming to be very similar to writing a novel. You have to construct a coherent world that "compiles", e.g. the characters interactions are consistent and make sense; each character has a role in the story like a component in a program would have; simplicity and directness tend to be more effective than ornateness; small changes in one part of a dialogue can have cascading changes across the rest of the storyline, much like a refactoring gone wrong.
- cynwoody 10y agoSome years ago now, I came upon a lovely essay entitled "Hackers and Painters†". Here is how it begins: When I finished grad school in computer science I went to art school to study painting. A lot of people seemed surprised that someone interested in computers would also be interested in painting. They seemed to think that hacking and painting were very different kinds of work-- that hacking was cold, precise, and methodical, and that painting was the frenzied expression of some primal urge. Both of these images are wrong. Hacking and painting have a lot in common. In fact, of all the different types of people I've known, hackers and painters are among the most alike. What hackers and painters have in common is that they're both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They're not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better. I think he got it right. †http://www.paulgraham.com/hp.html http://www.paulgraham.com/hp.html
- tunesmith 10y agoI graduated with a music degree and have been a professional programmer for twenty years... I have honestly never really seen programming as an art. Not in that sense. It's got some elements in common with different kinds of music, like how you choose to make it balanced and cohesive I guess, but to me it's kind of a pale shade of musical artistry. If you're performing, it requires you to tap into some sort of "being in the moment" type of flow that is almost the opposite of deep-programming flow. You have to be aware of the present moment while also interacting with the present moment. Getting "into the zone" while programming, if applied to performing music, is a great way to lose listeners. And if you're performing with others, you'll screw up the ensemble. If creating/writing, music requires a kind of delving-for-inspiration I almost never have to do while programming. Early 2016 I had to solve a programming problem that didn't fit any previous patterns and wasn't googleable, and I solved that in a kind of lateral-thinking flash of inspiration, so that's somewhat close, but it's still rare compared to normal programming practice... and even then, in programming those flashes are less personal. Programming is enjoyable in the sense that it's like both solving puzzles/problems and sometimes tending a zen rock garden. You think, you solve, you clean. And to a degree, you express. I don't really think that clears the bar of artistic, but it is manifestation and it is satisfying and it is sometimes personal so that's good too.
- popee 10y agoI always thought programming is kind of literature, because you write in language for machines and humans at the same time ie. mix of logic and inspiration.
- qwrusz 10y agoThere are multiple definitions of "art". And debates on how to define and classify "art" have been around forever. Where art thou, bro?.. The post you replied to seems to be using "art" in the very common sense like the phrase "more art than science" uses it: it's an art in that it requires some type of successful human judgment and subjectivity applied to the needs of a skill. If a fancy calculator can't give an official, right solution (or you don't have this calculator if it exists) somehow that became called an art. Technically, "art" applied to a skill or craft may be the oldest definition of the word. Obviously, these things are gray areas that involve both art and science. See Donald Trump's book "The Art of the Deal" for more info. Just a question if you see this: Why and how would "delving for inspiration" be an art or artistry? Creativity and inspiration don't seem to be the same thing. Where does the control and art come in when delving for inspiration? Likewise, in music you have the notes on the page (a computer can even play them). You also have accents and dynamics etc. on the page that require a higher level of subjectivity but instructions/descriptions can be written. Is there another level above that? Is there a part to performing a piece of music that can't be written? Is there a name for the unwritable part?