Reading Assignment For The Day

Posted by Chris Shorrock Wed, 13 Sep 2006 14:36:58 GMT

I ran across I brief little article relating the challenges programmers come across when dealing with clients who don't understand the nature of architecting a system. It's a brilliant glimpse into the type of things we often put up with when building a system by contrasting our world with that of a real architect. So without further ado, If Architects Had to Work Like Programmers by Mike Morgan:

Dear Mr. Architect:

Please design and build me a house. I am not quite sure what I need, so let’s get started. My house should have between two and 45 bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I’ll make the final decision about what I want. Also, bring me the cost breakdowns for each configuration so I can arbitrarily pick one at a later time.

Keep in mind that the house I ultimately choose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that exist in my current house (the floor of my kitchen vibrates when I walk across it, and the walls don’t have nearly enough insulation in them).

As you design, also keep in mind that I want to keep yearly maintenance costs as low as possible. This should mean the incorporation of extra-cost features like insulated windows or composite siding. (If you choose not to use Anderson insulated windows, be prepared to explain you decision.)

Please take care that modern design practices and the latest materials are used in construction of the house, as I want it to be a showplace for the most up-to-date ideas and methods. Be alerted, however, that the kitchen should accommodate (among other things) my 1952 Gibson refrigerator.

To assure that you are building the correct house for our entire family, you will need to contact each of my children and our in-laws. My mother-in-law will have very strong feelings about how the house should be designed, since she visits us at least once a year. Make sure you weigh all these options carefully and make recommendations. However, I retain the right to overrule any recommendation you make.

Please don’t bother me with small details right now. Your job is to develop the overall plans for the house and get the big picture. At this time, for example, it is not appropriate to be choosing the color of the carpeting; however, keep in mind that my wife likes blue.

Also, do not worry at this time about acquiring the resources to build the house itself. Your first priority is to develop detailed plans and specifications. Once I approve these plans, however, I would expect the house to be under roof within 48 hours.

While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell it to someone else. It should — therefore appeal to a wide variety of potential buyers. Please make sure, before you finalize the plans, that there is a consensus of the potential home buyers in my area that they like the features of this house.

I advise you to run up and look at the house my neighbor built last year, as we like it a great deal. It has many things that we feel we need in our new home, particularly the 75-foot swimming pool. With careful engineering, I believe you can design this into our new house without impacting the construction cost.

Please prepare a complete set of blueprints. It is not necessary at this time to do the real design, since they will be used only for construction bids. Be advised, however, that you will be held accountable for any increase of construction cost as a result of later design changes.

You must be thrilled to be working on such an interesting project! To be able to use the latest techniques and materials and to be given such freedom in your designs is something that can’t happen very often. Contact me as soon as possible with your ideas and completed plans.

Sincerely, The Client

PS: My wife just told me she disagrees with many of the instructions I have given you in this letter. As the architect, it is your responsibility to resolve these differences. I have tried in the past and have failed to accomplish this. If you can’t handle this responsibility, I will have to find another architect.

PPS: Perhaps what I need is not a house at all, but a travel trailer. Please advise me as soon as possible if this is the case.

Posted in  | Tags , , ,  | 6 comments | no trackbacks

Time For Some REST

Posted by Chris Shorrock Wed, 06 Sep 2006 18:20:00 GMT

A while back my wife had planned a trip up to Kelowna for a few days (leaving in an hour) with some friends. In light of my current predicament regarding work the thought of rest and relaxation doesn't seem very well timed, but maybe this logic is flawed.

I was at BJJ practice last night and the ebb and flow of the situation was such that everything was effortless. My opponents were coming to me, they were falling into my traps, I didn't force anything I just let the situation dictate itself. As I reflect back this is similar to how my career has unfolded.

I've never really had to look hard for work, generally it has always found me. I suppose this is why I'm starting to get worried as it's a new experience, but like everything, experiences are to embraced and not ran away from. Things have always worked out in the past and I'm confident that they will continue to do so. I just need to let go and let the situation flow and the pieces drop where they may. This is not to say I should sit back and wait for the phone to ring but there is no point in worrying about tomorrow when tomorrow will worry about itself. This is why I think this period of rest may be well earned.

Speaking of REST, this newly created buzzword has really peaked my interest. Similar concepts (SOAP I'm looking at you) have always struck me as a poorly constructed mess, but REST appears to take HTTP and finally utilize it as it's designers had intended.

REST utilizes the CRUD (Create, Read, Update, Delete) line of thinking, and maps those commands to HTTP using the following relationships:

  • Create -> HTTP PUT
  • Read -> HTTP GET
  • Update -> HTTP POST
  • Delete -> HTTP DELETE

These commands become your verbs, while the HTTP URI becomes your noun. Therefore, where before we may have had the following to perform the CRUD functions:

  • POST http://www.mywebsite.com/person?command=create&name=chris
  • GET http://www.mywebsite.com/person?command=read&id=1
  • POST http://www.mywebsite.com/person?command=updatee&name=christopher
  • POST http://www.mywebsite.com/person?command=delete&id=1

Using REST's line of thinking we now get (Ok - the following isn't exact as REST utilizes XML to define the data, but it illustrates my point):

  • PUT http://www.mywebsite.com/person&name=chris
  • GET http://www.mywebsite.com/person/1
  • POST http://www.mywebsite.com/person/1&name=christopher
  • DELETE http://www.mywebsite.com/person/1

Not only is this much cleaner than the way we've done things in the past it forces the developer into a design that has been proven many times over. REST at it's core won't change the world, but it is a nice little way of cleaning up a mess that SOAP couldn't.

As a side note I've now wrote this entry out twice as when I tried to paste I accidently pressed command-w (I'm using the Dvorak keyboard layout which puts these two keys side by side). So if things seem a little rushed and not fully explained I'll assure you it was better in the first copy ;)

Posted in ,  | Tags , , ,  | 3 comments | no trackbacks