Coding Well
I don't usually do this, but here's a verbatim excerpt from a post on LifeDev that I just love. Having goals in the pursuit of software engineering and design is a good thing. I've heard most of these expressed before but not as well as this. (original post by glen on July 23rd, 2008)
Programmers are a great example of thinking outside the box because, well… programmers can actually create the box. Here are some of the ways that we can learn from programmers on how to boost our creativity.
1. Learn a new language
Programmers are constantly learning new languages, either for fun or necessity. Don’t limit yourself to what just what you know and are comfortable with. Branch out and learn a new skill.
2. Start from the ground up
If you’re going to write software, you can’t just start halfway through the project. You have to start at square one. Sometimes this is the best way to find a creative solution for a problem is to go back to the beginning and work forward.
3. Question everything
Questioning everything means taking every assumption and making sure it’s correct. All programming starts with making the most basic assumptions, and then building on those basic assumptions. If something is wrong with the code at the base, then the software isn’t going to work well at all.
Sometimes creativity is limited by assumptions. New solutions arrive when we tear down assumptions and start with fresh perspectives.
4. Do it for fun
If you know any programmers, they’re constantly building something. Even when they’re done for the day on work-related projects, they’ll spend hours of time working on fun projects for themselves. Their work is also their hobby.
Continually mulling over new ideas and solutions is something that shouldn’t be a chore. It should be something that you find yourself doing constantly, like a reflex. And it should excite you.
5. Never stop testing ideas
Programmers are constantly benchmarking code to make sure that it’s as efficient as possible. Even the smallest change can bring a program or Web site to it’s knees, so constant testing and improvement is important to any bit of software.
Ideas should be tested rigorously and refined on a consistent basis. Your ideas will change over time, it just depends how much. Constantly evaluating them and just plain thinking them through is a great way to “benchmark” your idea.
6. Find a passion
If you’ve ever spent more than two minutes talking with a programmer about his work, you’ll find out very quickly that programmers have a passion for what they do. They eat, sleep and breathe programming.
Do you have a passion for your ideas and projects?
Programmers constantly improve their knowledge and usage of their tools. A great coder keeps tabs on software and is constantly finding ways to improve his usage of them. You’ll seldom find a programmer who doesn’t tweak his toolbox regularly.
No matter what your skill set, you’re limited to your skill with the tools you use to create. The more of an expert you are with your tools, the more you’ll be able to create.
8. Start making abstract associations
- What if you used computers as telephones?
- What would happen if you used a web site as a Word processor?
- Would people care about what other people are doing right now?
The people behind projects like Skype, Google Docs and Twitter all have one thing in common: They fused seemingly abstract concepts together. Taking what-ifs and testing them is a great way to start thinking of things in a different, more creative light.
9. Think of structure as a tool, not a limitation
People associate creativity with taking a giant, blank canvas and letting our ideas flow without any sort of limiting structures. However, there’s a huge problem with this type of thinking: It’s a great big creativity myth.
See, limitations are everywhere. We can’t avoid them, we can only hope to work with them. A programmer embraces the limitations of his programming language or tools and works around them. These limitations help him as they make a foundation to work from. Sometimes discovering a new workaround will lead to an even bigger idea. Necessity is the mother of invention.
10. Don’t rule anything out until you try it.
Your kindergarten teacher was right: There is no such thing as a stupid question. If you’re adhering to #3 and dismissing all assumptions, you can’t be certain it’s not going to work until you’ve tested it. How do you know it won’t work unless you try it? You might be surprised. Even if the proposed solution doesn’t work, it may help you find a solution.
Sometimes it’s just best to start with a prototype and try it out. If your prototype doesn’t work, then trash it. If it does, you’ll have stumbled upon something that just might work.
11. Always look for a simpler and more elegant solution.
A good programmer is one that understands that finding the simplest solution is always going to be better. Complicated solutions lead to… complications. A practical approach to programming always works best in the long run.
Our ideas sometimes become too complicated. We get caught up in the novelty of the idea that we ignore how practical it really is. The simplest way to solve a problem is often the best way to solve a problem.
12. Don’t be afraid to build off the code of others.
The beauty of the Internet is that the solution your looking for has probably already been done by someone else. When building a new site I almost always use pre-existing open source code. Why recreate the wheel?
Putting a great idea into motion doesn’t mean you have to start from scratch to create it. Use existing ideas and turn them in to something better. Sometimes a great idea is only modifying something that’s already been done. Gmail is a great example. They “reinvented” email by adding useful features to traditional email.
13. Don’t be afraid to collaborate.
Some of the best coding — or any creative projects for that matter — are done not just by one coder but by many excellent people inspired to work toward the same goal. Assemble a great team, use the most brilliant ideas no matter who they come from, and let everyone contribute.
14. From the very basic, create the beautiful.
Programmers often use some very basic code over and over, and while those small bits of programming language aren’t necessarily beautiful in and of themselves, they can come together to create a final product that is amazing. No matter what creative project you’re working on, pay attention to the details, but most especially pay attention to the effect those details have on the overall picture.
Christ Church, Victoria, B.C.
We saw this church in Victoria, B.C. and it truly was amazing (and I believe God-centered and glorifying in its design). It's a pity that churches are often just like business offices or other "ordinary" places. I guess some would disagree but I think that a return to "great" architecture in church buildings is a wonderful thing. The UMC and some other denominations seems to have gone through a period of uglification in their architecture -- somehow trying to modernize or reinvent something that wasn't in need of an update. People in general seem to be less willing to spend the big bucks on churches than on other things like the poor and the needy. I know other issues can't be ignored, but worshiping God in a place like this seems to really help put things in perspective. Just like the robe, the solemnity of the service, and the order of the liturgy, the architecture seems to be a huge aid in the worship. I'm sure like all things in the Christian life and even those things in worship, it can become an idol but I have a hard time believing it's wasted money or effort. The Temple was a truly glorious place; a feeble attempt at showing the glory that will be revealed in heaven, but a worthy attempt. As Christians we carry out the creation mandate to bring order out of chaos in the world. A building like this that's built not to commemorate its long-standing members, nor to enshrine saints, but to stand as a place of worship -- a place set apart.
I know it's far, far away for our small group (and even a large and prosperous church like the above took over 100 years to get where they are), but I look forward to the beginning of such an effort.
Update: Regarding Dave's comment -- I wasn't very specific about what "like this" I think is good... I think it's architecture that reflects attributes of God and his nature. So yeah -- creative is a good thing but I think that awesome and majestic is important too... Obviously some of these characteristics are a little subjective. I hadn't really thought of it so much but Dave mentions the re-using and revitalizing of buildings; this seems perfectly to reflect the transformative power of God's Kingdom. Thanks Dave.
Following my nose…
Heading home for the evening after another stressful day. The work isn't terrible but it can be oppresive doing the same thing too many times in a row. I sit in my car cruising at 64 mph down I-405. It's an early Fall evening about 7:02pm. The HOV lane has just opened to all traffic so I pull over. My car just hit a decade and has that not entirely pleasant old-car smell. A mixture of Lysol, dust, plastic, and ancient French fries still stuck under the seat. Lysol dominates the smells, trying to hide the others. It reminds me of the smell of hospitals; somewhat sterile but not quite masking the unpleasantness beneath. The radio is playing another boring song. I would turn on something but I haven't updated my iPod with anything recent in a while and I don't feel focused enough to listen to a lecture. It's getting cool fast as the sun is going down and I have a hard time adjusting the air to not be too cold or too warm. Finally I crack my window.
Something changes. The subtlety of the smells that assault me is arresting. "Smells" is a terrible word -- the scents, the aromas, the feel of the night that I can't see and can't touch. It's Fall; I smell the trees -- you always smell the trees here at night -- but it's richer than usual. I also pick up one of the first wood-smoke smells of the year. There's something about the mixture of the coniferous trees (a constant here) and the now, barely-turning deciduous trees. It's a faint scent of decay but a decay that's all part of the life-cycle for these trees. It doesn't smell of death, it smells of change, of transition, of eventual transformation. None of this is new -- I've experienced it before but not for a year. I've forgotten -- completely forgotten what a joy this is.
As I head by the Kirkland exits I see two colorful hot air balloons hanging low over the valley. They're catching the light as the sun is setting. I consider trying to take a picture. I stop myself -- why bother? There's something in this setting I could never recreate. It's not the look of the thing, it's the environment, it's the sensations I'm feeling as I look at this. A picture is about as inane as purchasing a Yankee Candle called "Northwest Nights". It simply cannot compare.
It's 7:16 as I come up on Bellevue. Bits and pieces of scents are still recognizable but as traffic picks up and the large diesel semi's roll by I'm confronted with too many unpleasant, harsh, mechanical smells. This is a city and the trees can't compete here with the concrete and glass and perpetual productivity. This smell of progress might mean good things for the economy but it's not welcome right now. Too much of today was spent focusing on producing, expanding, producing. I hurry past.
It's still built-up here but the trees are back. I catch fragmented aromas from restaurants -- I can't possibly recognize the detail but some of it is familiar. Little shards of memories in my brain are activated as my olfactory receptors bind with the incoming molecules. For me, my sense of smell has always produced the most distinctive memories. In our world of digital photos, streaming video, and iPods, it's easy to cloud old memories through constant re-stimulation as we dig through our old albums, watch the same movie again or up that play count on our favorite song. I have no words for the smells I'm experiencing. I'm like a mute wine connoisseur trying to express not just the relative goodness or badness, but trying to define the thing. It seems impossible. How can I be smelling wood smoke that reminds me of specific memories from when I was 6 when I have no idea what type of wood, how this smell differs from the myriad of others, or why this particular memory has become so ingrained with this smell? A segment of the odor gamut (such as the broad category of all smoke smells) doesn't map to a correlating range of memories but is instead somewhat chaotically tied to various random memories. The relationship seems one-way: I can't pull up a memory and re-imagine the odor. Only the other way around.
It's 7:27 as I sweep through the Renton "S-curves". This isn't the first night that I've escaped into this fragrant world and I know what to expect here. Somewhere in the valley just south of Lake Washington there must be a coffee production plant. The smells are heavenly. I've always liked the smell of coffee but something about the intensity that I'm experiencing is so much greater. Momentarily as I continue driving along the highway, the trees, the grass, the smells of the highway itself are all gone and replaced by this warm smell that pervades everything.
My head feels light and I realize I'm hyperventilating through my nose as I try to take it all in. With a pang of loss, the scents retreat and I switch my attention back to driving as I wrap around the Valley Highway clover-leaf ramp and head south down the valley.
Did I say that the coffee was my favorite part? The valley has its own pleasures. With limited agricultural intermixed with large warehouses in the valley I move away from the hilly, rocky, mountain smells of the massive conifers and now pick up wafts of grass, small patches of crops. I distinctly smell pumpkins as I drive past: one of the smells that I know distinctly but experience infrequently enough to still have it remain far from ordinary. A field of cows causes a burst of synapses as many memories flood through my consciousness. Not the most pleasant scent but it's not about that -- the memories -- it's the memories which are making this so extraordinary.
Puyallup is only a few miles away now. More deciduous trees here and that early-Fall, mildewy smell rolls in again. It's a bit colder now and the left side of my face feels slightly numb from the constant exposure to the turbulent wind through the window. I briefly roll the windows up and turn the heat on. I regret it instantly. The blast of burning dust and filtered engine smells wipes everything. I'm warm now but everything starts disconnecting and the memories fade out. I drop the windows again and turn the heat off. This is worth the cold.
As I dodge traffic up South Hill and hit the exit ramp, I realize that this is coming to an end. With the decrease in speed and the noisy, exhaust-laden traffic on Meridian I'll barely be able to differentiate anything. I roll the windows up again and turn on the radio. Appropriately, a sad song is playing. I commiserate with the artist as I head due south down Meridian. When I take a left on 136th I realize I have one last unpolluted mile. I enjoy the smell of horses from the one remaining farm on the road, faint but still there. Nestled so close to the homes around me, I can smell the dinners of families. Some good, some not so good, but all with that unique signature. I don't know if I've eaten any of the meals but they remind me of so many dinners growing up.
It's 7:56. Finally, I'm home. The trip is over and I have to end this now. I roll into the garage, grab my bag and head in. And then it hits me. The best scent of them all -- it's that eerily unique smell of your own house. Work was rough but tonight, God is good.
I'm home.

