Tuesday, July 10, 2012

Are You a Software Architect?


There are a number of different qualities that you can look for in a software architect
and their past experience is often a good gauge of their ability to undertake the role.
you need to look deeper to understand the level of involvement, influence, leadership and responsibility that has been demonstrated across a number of different areas.


All you have to do is figure out what the requirements are and design a system that satisfies them
Broadly speaking, the software architecture on most projects can be broken down into two phases; the architecture is defined and then it's delivered.
Delivery of the software architecture
Definition of the software architecture



Definition of the software architecture
the architecture definition part of the role can be broken down further into a number of different elements



Management of non-functional requirements
Non-functional requirements need to be specific, measurable, achievable and testable if we are going to satisfy them
Sometimes the stakeholders will tell us that "the system must be fast", but that's far too subjective

Architecture definition:
It's fair to say that every software system has an architecture,
but not every software system has a defined architecture.
The architecture definition process lets you think about how you're going to take the requirements along with any imposed constraints and solve the problem.
Architecture definition is about introducing structure, guidelines, principles and leadership to the technical aspects of a software project
Defining architecture is your job as a software architect but there's a big difference between designing a software system from scratch and extending an existing one.

Technology selection:
it does have its fair set of challenges when you look at cost, licensing, vendor relationships, technology strategy, compatibility, interoperability, support, deployment, upgrade policies, end-user environments and so on.

Architecture evaluation:
an architecture works if it satisfies the non-functional requirements,
provides the necessary foundation for the rest of the code
and provides a sufficient platform for solving the underlying business problem
If you can test your architecture, then you can prove that it works. And if you can do this as early as possible, you can reduce the overall risk of project failure rather than simply hoping for the best.

Architecture collaboration:



Delivery of the software architecture

Ownership of the bigger picture:
sells the vision throughout the entirety of the software development lifecycle,
If you've defined an architecture, it makes sense to remain continually engaged and evolve your architecture rather than choosing to hand it off to an "implementation team".

Leadership:
Owning the bigger picture is one aspect of technical leadership
These include taking responsibility, providing technical guidance, making technical decisions and having the authority to make those decisions.

Coaching and mentoring:
While technical leadership is about steering the project as a whole, there are times when individuals need assistance
coaching and mentoring provides a way to enhance people's skills and to help them improve their own careers.
there's a big difference between coaching your team in architecture and design versus helping them with their coding problems.

Quality assurance:
From a software development perspective, these could include
coding standards,
design principles and source code analysis tools through to the use of continuous integration, automated unit testing and code coverage tools.


Design, development and testing:
The last thing that falls squarely within the role of a software architect is design, development and testing.
why shouldn't the day-to-day coding activities be a part of an architect's role?
the architect can experience the same pain as everybody else on the team, which in turn helps them better understand how their architecture is viewed from a development perspective.

Are you a software architect?
there's a high probability that those same developers are already undertaking parts of the software architecture role, irrespective of their job title.

http://www.infoq.com/articles/brown-are-you-a-software-architect/











Core Technical Requirements
Software architects must have a background in coding software using one or more programming languages.
This coding experience will be with complex and large-scale solutions in a team environment.

Soft Skills
The software architect must have excellent interpersonal skills

Issues during performance testing often require the architect to determine root cause and design a solution

http://www.ehow.com/list_6785106_software-architect-requirements.html#ixzz20ADaYwJX







Who is Right for the Architect Role?
Too frequently, "architect" is a promotion offered to top-notch developers in an effort to retain them
The best architects, then, are good technologists and command respect in the technical community, but also are good strategists, organizational politicians (in the best sense of the word), consultants and leaders.
http://www.bredemeyer.com/who.htm


No comments:

Post a Comment