Suppose there was a profession called “maker.” What does a maker do? A maker makes things! Dinner. Birdhouses. Pants. Shopping malls. Camera lenses. Jet engines. Hydroelectric power stations. Pianos. Mars landers.
Being a maker is a rough business. It’s such a wide-ranging field, and just because you’ve made hundreds of flowerpots doesn’t give you any kind of edge if you need to make a catalytic converter for a 1995 Ford truck.
Now think about a profession called “programmer.” What does a programmer do? A programmer programs things! Autonomous vehicles. Flight simulators. Engine control systems. Solid state drive firmware. Compilers. Video games. Airline schedulers. Digital cameras.
If you focus in on one area it expands like a fractal. Video games? That covers everything from chess to 3D open world extravaganzas to text adventures to retro platformers. Pick retro platformers and there’s a wide range of styles and implementation techniques. Even if you select a very specific one of these, slight changes to the design may shift the problem from comfortable to brain teaser.
The bottom line is that it’s rare to do software development where you have a solid and complete understanding of the entire problem space you’re dealing with. Or looking at it another way, everything you build involves forays into unfamiliar territory. Everything you build is to a great extent a research project.
How do you come to grips with something you have no concrete experience with? By running experiments. Lots of little throwaway coding and interface experiments that answer questions and settle your mind.
Writing a PNG decoder, for example, is a collection of dozens of smaller problems, most of which can be fiddled around with in isolation with real code. Any significant app has user interactions that need prototyping, unclear and conflicting design options to explore, tricky bits of logic, API calls you’ve never used—hundreds of things. Maybe five hundred. And until you run those experiments, you won’t have a solid understanding of what you’re making.
(If you liked this, you might enjoy Tricky When You Least Expect It.)
Categories: Blogs Programming in the 21st Century
Erlang on Twitter
» statonjr (Larry Staton Jr.): I just liked “Elixir - A modern approach to programming for the Erlang VM” on Vimeo: http://t.co/CYykYf2tdZ
I just liked “Elixir - A modern approach to programming for the Erlang VM” on Vimeo: http://t.co/CYykYf2tdZ
» NotDoctorOk (Not Richard O'Keefe): I have 12 different kinds of
dictionary (one of them unfinished) and can foresee a need for
two more. http://t.co/RN76gjtvsK
I have 12 different kinds of
» rinaldifonseca (Rinaldi Fonseca): Current status: brincando com list comprehensions em Erlang
Current status: brincando com list comprehensions em Erlang
» bkmontgomery (Brad Montgomery ⚑): RT @justinvincent: How and Why We Switched from Erlang to Python http://t.co/L3uGOgYTN2
RT @justinvincent: How and Why We Switched from Erlang to Python http://t.co/L3uGOgYTN2
» jaz303 (Jason Frame): people, should i next dive into haskell, erlang or clojure?
people, should i next dive into haskell, erlang or clojure?
» andystopford (Andrew Stopford): @coreyhaines that sounds cool, how are finding nn coding in Erlang?
@coreyhaines that sounds cool, how are finding nn coding in Erlang?
» ricmrodrigues (Ricardo Rodrigues): @filip_woj learning Erlang ?
@filip_woj learning Erlang ?
» atmb4u (Anoop Thomas Mathew): Why #mixpanel switched from #Erlang to #Python - http://t.co/sqBpIFCiE5
Why #mixpanel switched from #Erlang to #Python - http://t.co/sqBpIFCiE5
» LittleBuddha87 (Francis Varga): Heading back to erlang lets see what comes out :-)
Heading back to erlang lets see what comes out :-)
Number of aggregated posts: 10648
Most recent article: May 14, 2013
» Moraru on This is Why You Spent All that Time Learning to Program: It is true that computer science was a pain in the back at time that i’ve had to learn it…
» Commercial hand dryers on Couchbase Meetup at new HQ: Buy online from here where you will get so much of variety in Commercial hand dryers for people. If you…
» Fort McMurray Homes on Motivated Reasoning and Erlang vs Python vs Node: I don’t really understand why this post is motivational? I don’t even see a post, just a title. Fort McMurray…