Is Programming Art? - MPJ's Musings - FunFunFunction #33

Fun Fun Function · Intermediate ·📰 AI News & Updates ·10y ago

Key Takeaways

Discusses the artistic aspects of programming, including the definition of art and the role of programmers as artists

Full Transcript

good Monday morning I am mpj and you are watching fun fun function so I got into an internet argument the other day on Twitter where a company had tweeted out saying that debugging is an art I got really riled up and I was like no that's not what art is your misunderstanding art you can't called debugging art it got me thinking about this topic and I want to talk about it today today I want us to think a little bit about if programming is Art and if so what parts of programming to answer that we have to set up some definitions of art uh I'm going to talk about three of them and I'm going to settle on my favorite one spoiler alert is that I'm going to conclude that some programming is Art uh but that programmers are bad at that art I'm also going to talk a little bit about why I think this is a really big problem and how it is causing us a lot of damage and finally I'm going to propose a solution to the problem suggesting that we should create more kinds of programmers let's let's let's begin by talking about the definitions of art first of all the Wikipedia definition art is a diverse range of human activities in creating visual auditory or performing artifacts artworks expressing the author's imaginative or technical skill intended to be appreciated for their beauty or emotional power so yeah they talk about artwork artwork paintings and dance and stuff another definition uh the definition that I got into that Twitter argument about is the definition that defines art as um creative craft so this article the art of the bugging of it's written by uh Remy sharp REM on Twitter I've linked it down below he is awesome you should follow him it refers to uh the Wikipedia article on on debugging uh and it it says this however even with the aid of a debugger locating bugs is something of an art that's an expression you often use yeah it's something of an art actually and when people say that it's something of an art they often mean that partially that that task is very hard hard requires a lot of skills and that there is no clear right or wrong way there's no prescribed manual on how to do it not a fan of this definition I think it's too broad to be useful it's like a CEO would say that yeah I'm programming my organization because I'm building it and structuring it and creating flows you know I mean get what that person is coming from when they're saying that but if we use words that widely it becomes really hard to communicate in my opinion a definition that I like and that definition is a middle ground created by the comic book author Scott McLoud Scott McLoud is a u talented comic book author but he's most known for his book understanding comics and in that book he uh gives us a definition of Art and that that is very often misquoted as art is something people do that doesn't get them money or sex that's not quite what he said but it's close any human activity which doesn't grow out of the need to survive and reproduce uh survive or reproduce and what Scott uses as an example in the book is um you know you have imagine a prehistoric man they're standing around waiting for a mammoth or something to appear so that they can hunt and kill an OT and and he has nothing in particular to do um so he just starts you know tapping on a rock it's not really a reason for doing this it's just something humans do when you see people waiting for the bus you might see them just Draw Something in the uh sand with their foot when people sign their signature they might add a little Quirk to it or for instance when you walking to work uh even though you know the uh shorter routes by now you might just decide to yeah I'm going to take this ride today and McLoud he speaks about why this is so useful uh behavior for us as humans and it's because diverging from a common working way can accidentally lead to a better way I'm going to make a confession here I'm sometimes really really really annoyed with people that throw around the term beautiful code and what is often showed as for elegant code is these esoteric on liners that are indeed very expressive and impressive and and cool but in the end that is not the kind of code that I want to see at my workplace uh when I'm at work I spend most of my time understanding other people's code that is that is my biggest time sync therefore I want the code that I see at work to be as simple to understand as possible above all else I think that code at the workplace should be optimized for understandability it should be super dumb and easy to understand that said I think it's very important to be doing this just not in the shared code basic work perhaps in a side project or you know wherever you have a space to experiment because experimenting and doing like these weird quirky things is what might accidentally lead us to new happy accidents that challenge the status quo such as jsx in react when I first saw jsx you know I was I was angry I was that's crazy you don't do that that's the you have taken us back so many years that's horrible the person that invented this cannot possibly have thought about best practices and and and what we have learned from the last 10 years of development and that's probably true they probably didn't think of that they probably just played around and thought that yeah if we just do something else what will happen and they invented something awesome but again don't experiment too much in the code base that you and your colleagues share like run your experiments on your own so I like this Scott McLoud definition of Art in the uh in the programming context you know doing things uh not for survival and not for reproduction but just because we do it and because it gives us these happy accidents but we don't see a lot of those happy accidents in programming I think and I think it is because we're bad at this I think that programmers are bad at Art the level of insights and and happy accidents that we generate is that it's so low um we I'm sitting here being excited about how someone mixed two languages into each other and that makes it feel like we've grown as an industry I really think that I really I really think that this is a huge problem that we have as an industry I feel that we are a bit stuck to me it feels like whenever I run into some article on a new cool programming thing it turns out to actually be something that was invented in the 1970s during that era people seem to be genuinely uh creative and they seem to invent a lot of uh New Concepts that did not exist before don't get me wrong I think that we are making a certain uh kind of progress as um with when it comes to software development but I think that all that progress is made by us piling more and more things on top of each other my gaming computer uh its processing power is obscene compared to the the the computer I had when I was a child but the thing is it doesn't boot a lot faster than my computer did when I was a kid Photoshop actually takes longer to start on that computer than the the old Photoshop uh started on my old computer and I think that this is because the way that we increase developer productivity currently is by piling one system on top of each other we haven't really changed anything in the fundamentals in instead we have a system that we have built that controls the system and then because that was too complex we have built another system that the approach that we take to make developers more effective is to encapsulate more add more layers of IND direction of course I'm going to refer to a talk by Jonathan Blow which touches on this topic which is wonderfully inflammatory uh and you should uh you should watch it to get your blood pressure up I don't want to be all dystopian here there are absolutely people that are changing the fundamentals for instance I think machine learning is so exciting right now where they actually made a computer beat Alpha go by not programming it because programming was was too slow what they uh realized was that they needed to create a computer that could actually learn I totally think that qualifies as fundamental progress so we're making some but I think that we could do a lot better so how can we make this better how can we make uh software developers better at Art well we're going to talk about that after the coffee bre so as I said in the beginning of the show I think that we need more kinds of programmers I did not study computers in school actually I uh I studied theater uh my brother is an artist and my uh my girlfriend is a florist many of my friends are musicians light and sound designers ever since I started programming I felt annoyed that Pro programming even though it's a clearly a creative profession is separated from all these other creative crafts it feels like all those crafts they're they're in a group and they are grouped over here but programming which is also a creative craft and I can definitely relate to a lot of the challeng that challenges that the the people I hang out with in those circles have even though they're SE the same I feel like programming is in its own group over here and that disturbs me and my theory is that this is because we almost exclusively create one type of programmer if I look at the people uh at my job they are mostly all of them from the same background they studied computer science at schmer which is a famous Tech University in my town and they worked at Volvo and then they came to uh Spotify and that background seems to uh be very good at uh creating programmers because all of those people are extremely talented and nice and easy to work with and uh they're good programmers but they are one kind of programmer there's another guy at my work who uh he has background in biology so it's not like everyone is like this but it's not really the norm that there is a diverse background about among programmers it seems to be mainly one type of programmer that dominates and this is different from um some other fields for instance let's say um painter if I Google painter I get uh two kinds of images I get uh this image and I get this image es being a painter you can be a painter in two different ways and they are two different courses in school right both of these types of painters probably have a big overlap in skill set but one of them have studied these skills in a in an art school context in an art course and one of them have studied it in a uh you know I don't know exactly what school like a building professional I guess but the thing is that we only create this type of programmer we don't create a programmer that looks like this or at least not at any extent we don't teach programming at art schools even though teaching programming to Art School students would be a perfectly reasonable thing to do it seems like crazy that not every art school student should know at least some kind of basic Arduino programming for instance same goes for stage Tech or many other creative professions I think fashion could do really well with it too but we don't so we don't see a lot of use of software in art installations even though that would be so awesome and on the reverse note we don't see a lot of good art in in software for instance when it comes to games there really isn't a lot of good art in games there are some good examples like braid or firewatch by the way you should look at this essay on firewatch it's amazing and Ultra hipster but if you compare to crafts uh like movies which has a much more uh evolved Art Space uh and you compare them to things like Birdman for instance it becomes very pale and this makes sense because programmers are not trained in how to make art they're not educated in it so it becomes you know so so so the way we are creating programmers today the way we're thinking about that um I it makes us create a community of software developers that are all thinking in the the same way and I think that's a problem there is a big effort nowadays to bring more people into programming but I think that we could do a better job at bringing more types of people into programming and there are some people doing great work at that for uh one of my favorite examples is Linda Lucas she is the author of hello Ruby this is hey hello in Swedish because it's translated it's a children's book about a girl named Ruby and her friend Jango and the snow leopard and the Linux the Penguin and the idea with this book is to get uh young girls interested in in programming and engineering and tinkering at a very early stage because right now in our culture we have like an army of people telling young girls that engineering is is Voice work which is unfathomably dumb up until the 1960s computer programming was actually considered to be a women's profession a linked an article about that in the description and then we somehow managed to convince two generations of women that they shouldn't do programming and now we sit here with a huge programmer shortage in the job market while just one in 20 people that visit this channel are women but getting more women into programming that is only like the biggest and most obvious problem to solve I think that in general we need to get way more types of people into programming at Jan K listened to this dude who who who talked about his journey from being a forklift driver to being a JavaScript developer and I guess was so that was so awesome there's an amazing Channel called Dev tips for designers which is what it sounds like and I really hope that we can expand this to way more areas like teaching artists and uh Architects and and musicians or whatever teaching way more groups programming and getting more people in involved and so that we can become less um inbred in our thinking for lack of a better word what did what did we talk about today summary uh we talked about the definitions of art we talked about Scott mccloud's definition that any human activity which doesn't grow out of the need to survive or reproduce is Art and by that definition going wild with programming might be art H and that is useful because diverging from a common working way way can accidentally lead to a better way I also talked about how programmers are bad at this we're bad at Art and that's a problem because our thinking becomes kind of inbred and I think that we can help that by creating more kinds of programmers you have watched an episode of fun fun function new episodes every Monday morning sometimes it's episode teaching you some specific juicy programming nugget and sometimes it's episodes like this where I Muse about something they are usually shorter than this one though if you like this episode you can find more of them there until next Monday morning stay curious [Music]

Original Description

💖 Support the show by becoming a Patreon https://www.patreon.com/funfunfunction Is programming art? I talk about the artistic aspects of being a programmer, how we are bad at it, what damage that causes, and what to do about it. Table of contents: 01:15 ► Different definitions of art 03:10 ► ScottMcClouds definition of art 07:00 ► Programmers are bad at art 10:30 ► More kinds of programmers 17:09 ► Summary I'm also active on: • Twitter https://twitter.com/mpjme • Medium https://medium.com/@mpjme • Quora https://www.quora.com/profile/Mattias-Petter-Johansson Resources: Linda Liukas TED Talk https://www.youtube.com/watch?v=vcxwcWuq7KQ Jonathan Blow on Software quality (good for blood pressure) https://www.youtube.com/watch?v=k56wra39lwA MPJ's Musings https://www.youtube.com/playlist?list=PL0zVEGEvSaeH21VDycWYNWU7VKUA-xLzg Forklift Driver to Developer in 9 Months https://www.youtube.com/watch?v=zKLkHbcjwsc Firewatch is Mine Essay https://www.youtube.com/watch?v=Z74nUBkMdSg Fun Fun Function channel https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q Bird Man Trailer https://www.youtube.com/watch?v=uJfLoE6hanc DevTips for Designers https://www.youtube.com/watch?v=Pt49y1gm0jw&list=PLqGj3iMvMa4KOekRWjjajinzlRK879Ksn Computer programming used to be womens work http://www.smithsonianmag.com/smart-news/computer-programming-used-to-be-womens-work-718061/?no-ist Art of Debugging by Remy Sharp (@rem) https://remysharp.com/2015/10/14/the-art-of-debugging Scott McCloud Defintion of Art http://scottmccloud.com/2010/07/05/things-i-never-said/ Music by Bensound http://www.bensound.com/royalty-free-music/track/extreme-action Music by Joakim Karud https://soundcloud.com/joakimkarud
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from Fun Fun Function · Fun Fun Function · 40 of 60

1 Higher-order functions - Part 1 of Functional Programming in JavaScript
Higher-order functions - Part 1 of Functional Programming in JavaScript
Fun Fun Function
2 Map - Part 2 of Functional Programming in JavaScript
Map - Part 2 of Functional Programming in JavaScript
Fun Fun Function
3 Reduce basics - Part 3 of Functional Programming in JavaScript
Reduce basics - Part 3 of Functional Programming in JavaScript
Fun Fun Function
4 Destructuring: What, Why and How - Part 1 of ES6 JavaScript Features
Destructuring: What, Why and How - Part 1 of ES6 JavaScript Features
Fun Fun Function
5 Reduce Advanced - Part 4 of Functional Programming in JavaScript
Reduce Advanced - Part 4 of Functional Programming in JavaScript
Fun Fun Function
6 Closures - Part 5 of Functional Programming in JavaScript
Closures - Part 5 of Functional Programming in JavaScript
Fun Fun Function
7 Too many tools and frameworks!
Too many tools and frameworks!
Fun Fun Function
8 Currying - Part 6 of Functional Programming in JavaScript
Currying - Part 6 of Functional Programming in JavaScript
Fun Fun Function
9 Recursion - Part 7 of Functional Programming in JavaScript
Recursion - Part 7 of Functional Programming in JavaScript
Fun Fun Function
10 Promises - Part 8 of Functional Programming in JavaScript
Promises - Part 8 of Functional Programming in JavaScript
Fun Fun Function
11 Staying relevant as a programmer
Staying relevant as a programmer
Fun Fun Function
12 Factory Functions in JavaScript
Factory Functions in JavaScript
Fun Fun Function
13 Composition over Inheritance
Composition over Inheritance
Fun Fun Function
14 Software needs to be better - FunFunFunction #1
Software needs to be better - FunFunFunction #1
Fun Fun Function
15 Unit testing: How to get your team started - FunFunFunction #2
Unit testing: How to get your team started - FunFunFunction #2
Fun Fun Function
16 Straight-line code over functions - FunFunFunction #3
Straight-line code over functions - FunFunFunction #3
Fun Fun Function
17 Clojure - FunFunFunction #5
Clojure - FunFunFunction #5
Fun Fun Function
18 The growth stages of a programmer - FunFunFunction #6
The growth stages of a programmer - FunFunFunction #6
Fun Fun Function
19 5 tips to quickly understand a new code base - FunFunFunction #7
5 tips to quickly understand a new code base - FunFunFunction #7
Fun Fun Function
20 Semicolons cannot save you! - FunFunFunction #9
Semicolons cannot save you! - FunFunFunction #9
Fun Fun Function
21 Functors - FunFunFunction #10
Functors - FunFunFunction #10
Fun Fun Function
22 Functors: I was WRONG! - FunFunFunction #11
Functors: I was WRONG! - FunFunFunction #11
Fun Fun Function
23 Questions and Answers - FunFunFunction #12
Questions and Answers - FunFunFunction #12
Fun Fun Function
24 Streams - FunFunFunction #13
Streams - FunFunFunction #13
Fun Fun Function
25 Prototypes in JavaScript - FunFunFunction #16
Prototypes in JavaScript - FunFunFunction #16
Fun Fun Function
26 Fast or Flexible? - FunFunFunction #17
Fast or Flexible? - FunFunFunction #17
Fun Fun Function
27 Coders are herd animals - FunFunFunction #18
Coders are herd animals - FunFunFunction #18
Fun Fun Function
28 Weekend Kubernetes Shenanigans - FunFunFunction #19
Weekend Kubernetes Shenanigans - FunFunFunction #19
Fun Fun Function
29 Monad - FunFunFunction #21
Monad - FunFunFunction #21
Fun Fun Function
30 Moar Weekend Shenanigans - FunFunFunction #23
Moar Weekend Shenanigans - FunFunFunction #23
Fun Fun Function
31 Questions and Answers - FunFunFunction #24
Questions and Answers - FunFunFunction #24
Fun Fun Function
32 Losing motivation - FunFunFunction #25
Losing motivation - FunFunFunction #25
Fun Fun Function
33 LONGEST KUBERNETES SHENANIGANS! - FunFunFunction #26
LONGEST KUBERNETES SHENANIGANS! - FunFunFunction #26
Fun Fun Function
34 Fast code is NOT important - FunFunFunction #27
Fast code is NOT important - FunFunFunction #27
Fun Fun Function
35 Pair Programming a Facebook Messenger Bot - FunFunFunction #28
Pair Programming a Facebook Messenger Bot - FunFunFunction #28
Fun Fun Function
36 Writing unit tests for personal projects? - FunFunFunction #29
Writing unit tests for personal projects? - FunFunFunction #29
Fun Fun Function
37 Let's Code a Pomodoro Button - FunFunFunction #30
Let's Code a Pomodoro Button - FunFunFunction #30
Fun Fun Function
38 What editor do you use? - FunFunFunction #31
What editor do you use? - FunFunFunction #31
Fun Fun Function
39 Arrow functions in JavaScript - What, Why and How - FunFunFunction #32
Arrow functions in JavaScript - What, Why and How - FunFunFunction #32
Fun Fun Function
Is Programming Art? - MPJ's Musings - FunFunFunction #33
Is Programming Art? - MPJ's Musings - FunFunFunction #33
Fun Fun Function
41 Generators in JavaScript - What, Why and How - FunFunFunction #34
Generators in JavaScript - What, Why and How - FunFunFunction #34
Fun Fun Function
42 Haskell Basics - FunFunFunction #35
Haskell Basics - FunFunFunction #35
Fun Fun Function
43 Haskell - Baby's first functions - FunFunFunction #36
Haskell - Baby's first functions - FunFunFunction #36
Fun Fun Function
44 Is Big O relevant to you? - Q&A Part 1 - FunFunFunction #37
Is Big O relevant to you? - Q&A Part 1 - FunFunFunction #37
Fun Fun Function
45 How much are you allowed to Google? - Q&A Part 2 - FunFunFunction #38
How much are you allowed to Google? - Q&A Part 2 - FunFunFunction #38
Fun Fun Function
46 Haskell lists - FunFunFunction #39
Haskell lists - FunFunFunction #39
Fun Fun Function
47 var, let and const - What, why and how - ES6 JavaScript Features
var, let and const - What, why and how - ES6 JavaScript Features
Fun Fun Function
48 Why are some programming languages popular? - MPJ's Musings  - FunFunFunction #41
Why are some programming languages popular? - MPJ's Musings - FunFunFunction #41
Fun Fun Function
49 Does a developer need to be nice? - MPJ's Musings - FunFunFunction #42
Does a developer need to be nice? - MPJ's Musings - FunFunFunction #42
Fun Fun Function
50 bind and this - Object Creation in JavaScript P1 - FunFunFunction #43
bind and this - Object Creation in JavaScript P1 - FunFunFunction #43
Fun Fun Function
51 Examples of this and bind - Object Creation in JavaScript P2 -  FunFunFunction #44
Examples of this and bind - Object Creation in JavaScript P2 - FunFunFunction #44
Fun Fun Function
52 Prototype basics - Object Creation in JavaScript P3 - FunFunFunction #46
Prototype basics - Object Creation in JavaScript P3 - FunFunFunction #46
Fun Fun Function
53 Separation of concerns RANT - MPJ's Musings - FunFunFunction #47
Separation of concerns RANT - MPJ's Musings - FunFunFunction #47
Fun Fun Function
54 Cellular Automata - Pair Programming - FunFunFunction #49
Cellular Automata - Pair Programming - FunFunFunction #49
Fun Fun Function
55 The 'new' keyword - Object Creation in JavaScript P4 - FunFunFunction #50
The 'new' keyword - Object Creation in JavaScript P4 - FunFunFunction #50
Fun Fun Function
56 __proto__ vs prototype - Object Creation in JavaScript P5 - FunFunFunction #52
__proto__ vs prototype - Object Creation in JavaScript P5 - FunFunFunction #52
Fun Fun Function
57 Unity game pair programming - Let's code - FunFunFunction #53
Unity game pair programming - Let's code - FunFunFunction #53
Fun Fun Function
58 Throw out your tools - MPJ's Musings - FunFunFunction #54
Throw out your tools - MPJ's Musings - FunFunFunction #54
Fun Fun Function
59 Unit tests vs. Integration tests - MPJ's Musings - FunFunFunction #55
Unit tests vs. Integration tests - MPJ's Musings - FunFunFunction #55
Fun Fun Function
60 Object.create - Object Creation in JavaScript P6 - FunFunFunction #57
Object.create - Object Creation in JavaScript P6 - FunFunFunction #57
Fun Fun Function

Related Reads

📰
An AI Challenge: Theoretical Physics (JWST, LHC) vs the Nag Hammadi Library
Apply Socratic methods to challenge dogma in theoretical physics and ancient texts, promoting critical thinking and avoiding consensus averaging
Medium · AI
📰
AI’s land rush is reaching Native American reservations
AI data center development is expanding to Native American reservations due to available land, water rights, and tax incentives, raising concerns and opportunities for indigenous communities
The Next Web AI
📰
OpenAI And Anthropic Are Preparing For IPOs—Here’s How They Stack Up
Learn how OpenAI and Anthropic compare in valuation, revenue growth, and strategy ahead of their IPOs
Forbes Innovation
📰
Paris-based AI voice startup Gradium raises $100M seed, backed by Nvidia
Gradium, an AI voice startup, raises $100M seed funding, learn how AI voice technology is attracting major investments
TechCrunch AI

Chapters (5)

1:15 ► Different definitions of art
3:10 ► ScottMcClouds definition of art
7:00 ► Programmers are bad at art
10:30 ► More kinds of programmers
17:09 ► Summary
Up next
Fable Returns, GPT 5.6 Blocked, OpenAI's NEW Chip & More!
Pranjal
Watch →