Wednesday, March 21, 2012

Of Programmers and Architects

I'm not exactly sure why, but programmers love architects. Sure, we lifted the design pattern concept from their work, but it goes beyond that. If you tell me you're job is that of software architect, or you're an architect of a project, I'll read that as you being at the top of the pyramid. You're the one who's in charge of the big picture, not cranking out lines of code day in and day out.

As I'm making my way through one architect's story, I've had a bit of a realization. Say an architect draws up the plans for a deck. When that drawing is complete, he doesn't have a high level vision for the deck. No, he effectively has the deck. Sure, there's the small implementation detail of needing a team to build out the deck per his specifications, but that's somewhat besides the point.

In my case, a computer executes my code, and in his case, a building crew. But at the end of the day, we're both creating something that essentially exists (at least as a complete specification) before it exists.

Perhaps programmers shouldn't be ascribing to being architects—architects should be ascribing to be programmers.

Thus ends my deep thought of the day.

4 comments:

  1. The difference is that once your start building the deck, it's harder to change than changing code would be if you find a problem with the design. Architecture has been around a lot longer than programming. I can't see architects taking too many tips from programmers until the field as a whole matures more.

    ReplyDelete
  2. >> The difference is that once your start building the deck, it's harder to change than changing code would be if you find a problem with the design

    That's true. But, I think there's more to it than that.

    Previously, I imagined a structure like:

    Architect -> Workers
    maps to
    Software Architect -> Programmers

    But, and I think it's more along the lines of:
    ? -> Architect -> Workers
    maps to
    Software Architect -> Programmers -> Computers

    The point being, the guys who are building a deck aren't making decisions. Neither is the computer. Both groups are just executing what they've been told to do.

    Programmers, and Architects, however, are the ones making the decisions and effectively expressing it in code (or blueprints).

    This matters in a number of ways. For example, if you have a strong architect and diligent workers, you'll get a good result.

    If you have a brilliant software architect and diligent but not brilliant programmers, you're results may not be so top notch. That's because the decision making is happening at the programmer level, not the software architect level.

    >> I can't see architects taking too many tips from programmers until the field as a whole matures more.

    In general, I agree. But, I'm always looking for what other industries can teach me. And I assume smart architect would want to do the same thing. Lessons about building abstraction or managing complexity may be helpful in the same way that architectural patterns has been with programming.

    ReplyDelete
  3. Check out architectural engineers, too:

    http://www.wisdomandwonder.com/article/3354/we-need-more-architectural-engineers-in-it

    ReplyDelete
  4. Thanks or sharing Grant!

    ReplyDelete