Why You May Need an Architect
You may need an architect...to 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.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)





Comments
Andy Leung replied on Mon, 2010/07/12 - 7:28am
Shaw Gar replied on Mon, 2010/07/12 - 9:43am
Shaw Gar replied on Mon, 2010/07/12 - 9:43am
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 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
Gilbert Herschberger replied on Mon, 2010/07/12 - 6:41pm
in response to:
Shaw Gar
Gilbert Herschberger replied on Mon, 2010/07/12 - 7:07pm
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" http://www.javalobby.org/java/forums/t101755.html. 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
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