Gilbert has posted 6 posts at DZone. View Full User Profile

Why You May Need an Architect

  • submit to reddit

You may need an remedy the work of a worse programmer. Sometimes I recommend adding a software architect to a team, and sometimes I don't. My recent assignment makes me think about why you may need someone like me, a software architect.

A project is behind schedule and over budget. The team has run out of options. Management asks me to review the application and recommend a quick fix. A web application was built from "scratch" four months ago using technology both old and new. It sounds like it is a typical Internet-facing business application. For the record, let me just say that the existing source code is puzzling.

End-users complain of inconsistency. A fix introduces more bugs. I can understand why the programmer chose JavaScript. I cannot understand why all of the JavaScript is in-line; there is not one .js file. Nearly identical lines of JavaScript code are copied to two dozen pages.

A lead developer (or architect) establishes the proper way to maintain JavaScript code in a web application. She argues for an external JavaScript (.js) resource for common code. She demonstrates the benefits of building a common library to increase the consistency of the application and reduce defects. She insists on testing the application before installing it live on the Internet.

End-users complain of poor performance. The latest release is slower. I can understand why the programmer chose Java Server Faces (JSF). And yet, it is not really JSF! Code is written to undermine the JSF way of doing things. It actually fights against JSF.

The use of JSF is a far-reaching, architectural decision. Again, a lead developer (or architect) establishes the proper use of JSF. She is a mentor for embracing the JSF way of doing things. If JSF is not working for the team, she argues for something else.

End-users complain of surprising results. At one point, I could not believe my eyes. No, I thought, this is not possible. I stepped away from my computer. When I had cleared my mind, I looked at the source code again. Yes, the web application does not support multiple users! When generating a PDF, for example, the name of the file is a hard-coded constant. When two people run a report, the last one "wins". It fails most of the time. Beside the fact that one person accidentally sees another's data, the last report is viewable by anyone who has the URL.

Supporting multiple, simultaneous users is more difficult than supporting one user at a time. A lead developer (or architect) raises her concern when a design decision fails to support multiple users. She insists that test cases include scenarios for multiple users.

Behind schedule and over budget are symptoms. There is a problem the team cannot resolve. In my opinion, it lacks architecture. And it lacks architecture because no one was assigned the role of architect.

Published at DZone with permission of its author, Gilbert Herschberger.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Andy Leung replied on Mon, 2010/07/12 - 7:28am

No offense but this is software architecture level? I thought this is fundamental design issue. That's not even close to college project level. So to simply fix this "defect" is to fire "it" and hire someone else.

Shaw Gar replied on Mon, 2010/07/12 - 9:43am


Shaw Gar replied on Mon, 2010/07/12 - 9:43am

You certainly don't need an architect. You need decent developers with design skills. I get to read articles such as these mre recently at DZone. Not sure why people don't think much on what they have to say, if it is useful or not, before they post it to wider audience.

This article is a clear example of NOT meeting those check points. Maybe we need a content architect ;-)

Tero Kadenius replied on Mon, 2010/07/12 - 12:25pm

The term architect is misleading here (as it is most of the time).
The term is so overloaded that almost anytime anyone uses it, it causes confusion.
In this article it is clearly used as a synonym for a technical lead or a senior developer.
The author argues that an experienced senior developer is needed to fix
the mess caused by inexperienced development team and if that technical lead would
have been assigned to the project in the beginning, the team could have avoided shooting
itself in the foot in the first place.

I agree. The role of the technical lead can be very important, but it depends on the skillset of the team. A skilled and experienced team may not need one.

Replacing every team member with a better version is hardly ever an option.
Let's face it, everybody starts as an inexperienced junior developer and some people just need more guiding than others.

Stephane Vaucher replied on Mon, 2010/07/12 - 1:32pm

The author is mixing up the role of a lead developer and that of an architect. The architecture seems to be in place. I do not see why you would need another architect. As mentioned by Tero, you need the team to enforce these decisions; adding an experienced developer could help.

Gilbert Herschberger replied on Mon, 2010/07/12 - 6:41pm in response to: Shaw Gar

Could you please provide a link to guidelines for writing an article on DZone?

Gilbert Herschberger replied on Mon, 2010/07/12 - 7:07pm

In this case, the manager hired an experienced developer. He is experienced with web application design. He has a track record of successful web development. And yet, this project exceeds his capacity and experience. Tough decisions. Once you are behind schedule and over budget, do you add an experienced developer to the team? Brooks addresses that in Mythical Man Month. Do you replace the lead developer? These are tough decisions. In this case, a business executive hired me to review the web application. Hiring someone to review the application was a smart choice, wasn't it? He didn't want to hire a team leader or an experienced developer to review the application. His next decsion has a large financial impact. Should he abandon the application and start over? Should he bring in a consultant to mentor the team leader? He trusted a software architect to help make tough, high dollar decisions. Do you believe that hiring an architect was excessive? He could have saved money by hiring a senior developer I suppose.

Fireblaze ___ replied on Tue, 2010/07/13 - 4:12am in response to: Gilbert Herschberger

Why hire another person?

What about the manager, why doesnt he enforce the rules of programming 101.

Say that the manager enforces the "7 Top Tips for Quality Java Software" It may take a few days to read though all the source code and compare them with the tips outlined then all of the team can see what is good and bad and what state the project is in.

What is needed is the manager stepping up and handle the situation, if the manager wants to keep the developer that writes the bad code, assign another programmer to go though the code and point out for the manager what is good and what is bad and then the manager can have a talk with the developer about why he isnt following good tips about quality software.

Stephane Vaucher replied on Tue, 2010/07/13 - 4:16am in response to: Gilbert Herschberger

The message is not clear. The way you talk about it, it sounds like it is a small project with little vision. In any case, the manager was unhappy with the system, so he hired an external consultant (you) to help him get back on track. What is lacking in the article are the architectural decisions involved (eg. complex subsystem interactions). That is the issue I have with the article. It seems to me that he hired you because you seemed competent and you happen to call yourself an architect. Do I believe hiring an architect was excessive? Well, most programmer I know who call themselves architects are glorified programmers who do not want to program anymore. They also want a cool title and a larger paycheck.

Alessandro Santini replied on Tue, 2010/07/13 - 5:28am in response to: Shaw Gar

I totally agree - the overall quality of the submissions is constantly decreasing.

More and more people writes weak articles thinking that this would be a showcase for them anyway (i.e. "Mr. XXX YYYY regularly posts on leading industry websites and is widely acknowledged as ... ").

Liezel Jane Jandayan replied on Thu, 2011/08/25 - 6:28am

The practice of architecture involves offering or rendering services that include pre-design services, programming, planning, providing designs, drawings, specifications and other technical submissions, the administration of construction contracts and the co-ordination of any elements of technical submissions prepared by others and technical designers.-Jonathan Berkowitz

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.