I like to read code on paper. Some people only read code on the screen. I have at times wondered what drives each coding style. The reason I like to code on paper is because it helps me see the big picture. I get to take in all of the code. And it allows me to change venues when looking at code. For example I can print out a big piece of code and go sit in the park or lay on my bed, or sit in the kitchen, or whatever.
I find that being able to flip between pages and mark things and take notes on paper is invaluable for seeing the big picture, or what I would call “outside in” coding. I tend to code outside in, and I think screen only coders write “inside out”. When you write code inside out it means you start writing small functions and you just keep putting them together until you have something useful. Looking at the big picture is less important because you are always focused on one little section at a time and your project grows this way.
Inside out coding is great because you always have something working. The downside is that it doesn’t necessarily help you get to a radically different place. It is harder to chart a course this way. Similarly, writing code outside in has the downside of not necessarily having the benefit of rapid iterative development, and not necessarily seeing all of the opportunities and patterns that may arise from deep in the structure of the code.
I have come to believe that both styles of development are important, and that it is in fact helpful to have a mix of styles on a team. The idea is that inside out is great for creating building blocks, and the outside in thinking provides form structure and direction.
Part of the reason I am thinking about this is because there is a very popular school of thought that currently promotes iterative development, which is often synonymous with inside out development. I believe iterative development is great when you don’t have too far to go. But I think that big picture thinking, as opposed to a purely iterative process is invaluable to certain types of innovation and to getting to a less obvious place. Properly managed, inside out and outside in together can be a very effective combination.