“Can anyone learn to code?” With stereotypes around programmers (that they’re anti-social wunderkinds) and misconceptions around what programming is really like (that it’s more mathematical than creative), the instinct may be to say no – “No, I’m not wired that way.” But it should be clear to us that human potential is infinite when we look past perceptions—history has shown us time and time again that we’re only limited by our assumptions of what we’re capable of and our access to effective education.”
-Avi Flombaum, Flatiron School Co-Founder and Dean
When most people think of programming, they think math nerds and walls of impossible to read text. While sometimes I agree about the walls of text, I’ve come to realize that, as Avi says, programming is in large part creative. It’s about knowing how your program should function, planning, and then coding it in what seems like a not so straight forward manner. Knowing how to think in a way that your language of choice will tell a computer what to do. That was probably my biggest obstacle before diving in, my self doubt about being a mathematical type. In fact, since I’ve started, I’m a lot more interested in math. I would say that learning how to code has piqued my interest in a way where I have the motivation and drive to improve my math skills. However, I still think programming is largely creative. Not in an artsy kind of way, but in a problem solving aspect. With an interest in creating tools for people, I can’t help but build parallels between editing television, and programming user facing apps.
Coming from the TV Post Production Industry, I’ve learned that effective communication in design, flow and implementation is paramount. At the end of the day, every show has a message deep down(even if that message is pure entertainment), and as an editor, we are shaping that communication to the viewer.
The first parallel: Good storytelling often reduces complex details into easily digested tidbits for viewer consumption.
This is huge for both programming and editing. It’s easy to be overwhelmed by the big picture; in editing it’s the hours and hours of footage, and in programming it’s the sheer scope of the entire project weighing on your shoulders. Both require a cool head and a game plan to execute your vision. In editing, our approach is usually building the story out, one act at a time. In my last job, that meant 5 acts, plus a cold open, which is an intro to the show. So already, we are focusing on one act at a time. Inside those acts are scenes, and those further reduce the burden of cutting the entire show. Programming is very similar, you really can’t look at the whole project as you’re building, otherwise you will face the entire overwhelming weight of the project. We need to separate common areas of the app. So if it’s a user facing app, we might separate Authentication, and Authorization right off the bat. We know we will need those two things, but perhaps there’s a solution that takes care of both. Then we might focus on our backend, building tests for our business logic, breaking down the problems even further into individual tests for each model. When our backend is up and running, we may stub out functionality in the front end for testing purposes. And so goes the development process until it become a polished masterpiece(like all my apps of course).
The second parallel: Effective communication is paramount.
Editing for television means taking your audience into consideration when you’re laying out your story. We must dictate the emotions associated with certain scenes. For example, if it’s an action scene, we need to amplify that for dramatic effect, and so the audience knows that the stakes are high, or if it’s a happy scene, the audience should feel that emotion too. On the same note, programming(or product design) user facing apps, we must know convey a message of ease, with a feel good emotion attached. Frustration is not the emotion of choice we want for the user. We should think of programming like the art that it is and refine each decision to reflect a greater message with our choices.The flow should be clear, and the functionality should reflect the needs of the user.
It is said that perfection is achieved not when there’s nothing more to add, but when there’s nothing left to take away.
Software development has many parallels to my roots in video editing, and as a budding fullstack developer, I enjoy incorporating creative problem solving to reduce complex problems into manageable morsels of code!