I've been doing programming for 11 years. Design for 11 years. Or actually, programming and design for 11 years.
You see, the word programming has a rather broad scope. It can be about writing the HTML for a webpage, fighting with PHP & MySQL, writing embedded code for hardware (ref Colin) etc. It covers a rather broad range of stuff right?
The word design, however immediately conjures up mental images of artists, abstract art pieces, architects with pencils on their ears, building models, and to a certain extent if you let your mind wander, SDE, NAFA, SOTA etc. Websites with graphics that let your jaw drop, the SMRT graffiti, and especially, epic buildings like National Library (I know there are probably better and epic-er ones but humor me please, I like the NLB). Somehow this seems more niche and specialised to me.
However, let me propose a (maybe) new concept. Programming is part of design. It is one small part of design.
----
Stop reading for a while, think about it. Think about what you have learnt these years (if you're a programmer and you don't believe what I just typed). Then continue reading.
----
The idea that programming is part of design has probably been a part of me for some time now. But it just occurred to me consciously, and as I write this post, I think I can stand by this view, and show you a different point of view into something probably hard.
I always held that view all these years that programming is strongly logic-based. After all, how much different can you calculate some numbers? However, this actually applies to the execution. The term "top-down design" by definition, means breaking down a problem into smaller parts to be solved by computer. There's two parts to it, one is the solving part, and one is the breaking down part.
Design comes when us, the human, puts our experience into solving a problem. We decide how to break the problem down, and decide how to structure our solution, before converting the solution into commands for the computer to interpret. By that nature, we are designing the program. After all, it's not purely hard logic like math, where proof by various methods are required before something is accepted. There are many ways that reach the same answer, some more efficient than the others, but nonetheless, a solution.
Engineers would know that we all have this design project in year 4. Same thing here, it simply is a matter of putting our judgement to a problem, to obtain feasible and safe answers to a certain problem. There are many ways too, and none is more correct than any other if all of them meet the specs.
It all boils down to our creativity. Programming is an art, a skill that doesn't follow rigid guidelines but our experience, our creativity. It can be shaped, moulded in the way that we want it to be.
I guess I have to clarify to my IT1005 students about this.
----
Design, when used in my first definition (of artists and architects) is a much more specific definition that people may have, that is more artistic, more graphically-inclined. Programming and engineers attacking their design project are practicing the more generic idea of design, that implies putting creativity and experience to work. Both definitions embody the spirit of human creativity.
In this class, we routinely classify ourselves as a programmer/coder or a designer. This probably limits our potential in crossing into the other field, since we have already boxed ourselves into one specific term. We all can focus on one, but don't limit yourself to just that!
Let's hope there isn't any more explicit emphasis of "programmers vs designers" in this course, and hope everyone will try both sides! (:
(and of course, I lost my original purpose of the post by going rather deep into this topic... the wonders of the shower. good, it'll make for another post when I have the time :D and haha there are very weird statements in this post. I promise I'll try to not edit this post! Promise!)
Yup you are right! We should not limit our potentials based on what people label us. I went into CS3216 as a designer, couldn't do any coding but from the projects, I learnt lots of front-end coding and some web programming.
ReplyDeleteGuess what internship opportunity the module got me for the summer: Apple :D and as a web developer hahaha! So I was doing backend and front end coding for my internship.
YUP the sky is NOT the limit. There's still outer space!
I totally agree with your idea that we should all be both designers and programmers. It would be so boring to do the same specific task for all three projects. and also sometimes you cannot really separate them especially when CSS is much more favoured than a sliced up img based website. and wow you really have an extensive experience in designing and coding :O. Hope i can learn more from you
ReplyDeletehaha, looking forward to see your group's app! :D