For me, learning functional programming in comp sci was the most eye opening. This was part of my programming languages course. We did functional programming in Lisp, but we had to use it purely -- we couldn't declare variables. That, combined with what my OS prof said once, something like "there is no useful program that doesn't take input and produce output," gave me proper insight to what a clean, purposeful software solution is.
With functional programming, where you have no variables, everything you produce is a function of your input. Constants and the source code itself consist of the input. And of course your only goal is to produce output.
You can make designs that achieve a lot of functionality with a small amount of code by following that idea. Lisp itself is proof of that.
You can also create emacs. I'll stop here.
Wishing without work is like fishing without bait. -- Frank Tyger