Okay, so something I learned in my current job vs my previous job is that you have to be able to work either inside-out or outside-in.

And as I sit down to write this, I looked up the meanings and they’re different from how I’m going to use them. These are how I’m defining them.

Outside-In: Doing all of the pretty stuff first - html/css, then working back towards the server or data source.

Inside Out: Making sure all the data needed is making its way to the client (and back to the server) before worrying about how it will look on a page.

In my last job, I did outside-in development. And (when I wasn’t being lazy) it worked to a pretty great success. That’s because the way ‘a project’ (or a ‘story’, or whatever unit-of-shippale-work you want to use) had this workflow:

  • Designer provides a pixel-perfect rendering of what they want
  • Server-side people provide all the APIs neccesary to present data
  • Web devleoper (me) writes the c#/html/css/js to present data in the way the designer wants.

So I would work outside-in, writing all the html/css/js to make the pages look exactly like the designer wants, with hard-coded data in the the html. Then I would work my way from the ouside back to the server (the inside) until everything was complete.

That worked out pretty well, but it didn’t translate into my new gig.

Here our workflow is much more agile (for some definition of the term). Our business folks bring features to us as a whole technology team and we figure it all out on the fly. And with the way we commit to work, it means we don’t exactly know what our APIs will look like and we don’t exactly know what our design will look like (with no dedicated designer, its a very collaborative process).

The first few months working here I spent trying the outside-in approach, making a mockup and then filling in data. But that failed pretty badly, because I was trying to hit a moving target.

So instead now I work inside-out, focusing on what data needs to make it to the client and making sure the path is there before worrying too much about how it will look on the page.

The comparison seems largely apples-to-oranges, because the jobs are in very different contexts and have very different user bases (a dozen or so users vs millions), but it helps to be aware of which approach I’m taking to a given project. Am I worried about getting the data first? Or am I worried about making the page pixel-perfect first?