Categories
Software Architect

Continuously Integrate

97 Things Every Software Architect Should Know – 20/97

The build as a “big bang” event in project development is dead. The architect, whether an application or enterprise architect, should promote and encourage the use of continuous integration methods and tools for every project.

The term Continuous Integration (CI) was first coined by Martin Fowler in a design pattern. CI refers to a set practices and tools that ensure automatic builds and testing of an application at frequent intervals, usually on an integration server specifically configured for these tasks. The convergence of unit testing practices and tools in conjunction with automated build tools makes CI a must for any software project today.

Continuous Integration targets a universal characteristic of the software development process – the integration point between source code and running application. At this integration point the many pieces of the development effort come together and are tested. You have probably heard the phrase ?build early and often?, which was a risk reduction technique to ensure there were no surprises at this point in development. ?Build early and often? has now been replaced by CI which includes the build but also adds features that improve communication and coordination within the development team.

The most prominent part of a CI implementation is the build which is usually automated. You have the ability to do a manual build but they can also be kicked off nightly or can be triggered by source code changes. Once the build is started the latest version of the source code is pulled from the repository and the CI tools attempts to build the project then test it. Lastly, notification is sent out detailing the results of the build process. These notifications can be sent in various forms including email or instant messages.

Continuous Integration will provide a more stable and directed development effort. As an architect you will love it but more importantly your organization and your development teams will be more effective and efficient.

'Coz sharing is caring
Categories
Software Architect

Architects must be hands on

97 Things Every Software Architect Should Know – 19/97

A good architect should lead by example, he (or she) should be able to fulfill any of the positions within his team from wiring the network, and configuring the build process to writing the unit tests and running benchmarks. Without a good understanding of the full range of technology an architect is little more than a project manager. It is perfectly acceptable for team members to have more in-depth knowledge in their specific areas but it’s difficult to imagine how team members can have confidence in their architect if the architect doesn’t understand the technology. As has been said elsewhere the architect is the interface between the business and the technology team, the architect must understand every aspect of the technology to be able to represent the team to the business without having to constantly refer others. Similarly the architect must understand the business in order to drive the team toward their goal of serving the business.

An architect is like an airline pilot, he might not look busy all of the time but he uses decades of experience to constantly monitor the situation, taking immediate action if he sees or hears something out of the ordinary. The project manager (co-pilot) performs the day-to-day management tasks leaving the architect free from the hassles of mundane tasks and people management. Ultimately the architect should have responsibility for the delivery and quality of the projects to the business, this is difficult to achieve without authority and this is critical the success of any project.

People learn best by watching others; it’s how we learn as children. A good architect should be able to spot a problem, call the team together and without picking out a victim explain what the problem is or might be and provide an elegant work-around or solution. It is perfectly respectable for an architect to ask for help from the team. The team should feel part of the solution but the architect should chair from discussion and identify the right solution(s).

Architects should be bought into the team at the earliest part of the project; they should not sit in an ivory tower dictating the way forward but should be on the ground working with the team. Questions about direction or choices of technology should not be spun off into separate investigations or new projects but be made pragmatically through hands-on investigation or using advice from architect peers, all good architects are well connected.

A good architect should be an expert in at least one tool of their trade, e.g. an IDE, remember they are hands-on. It stands to reason that a software architect should know the IDE, a database architect should know the ER tool and an information architect an XML modelling tool but a technical or enterprise architect should be at least effective with all levels of tooling from being able to monitor network traffic with Wireshark to modelling a complex financial message in XMLSpy – no level is too low or too high.

An architect usually comes with a good resume and impressive past, he can usually impress the business and technologists but unless he can demonstrate his ability to be hands-on it’s difficult gain the respect of the team, difficult for the team to learn and almost impossible to deliver what they were originally employed to do.

'Coz sharing is caring