08.09.2013 Views

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 1 Architects and Architecture Today 23<br />

Ano<strong>the</strong>r school of thought thinks, instead, that every architect is a born developer. To take<br />

<strong>the</strong> metaphor one step fur<strong>the</strong>r, we could say that <strong>the</strong> class Architect inherits from <strong>the</strong><br />

class Developer and adds some new methods (skills) while overriding (specializing) a few<br />

o<strong>the</strong>rs. Becoming an architect is <strong>the</strong> natural evolution in <strong>the</strong> career of some developers.<br />

The basic differences between an architect and a developer are experience and education.<br />

You gain experience by spending time on <strong>the</strong> job; you earn your education from studying<br />

good books and taking <strong>the</strong> right classes. In addition, an architect has <strong>the</strong> ability to focus<br />

her vision of <strong>the</strong> system from a higher level than an average developer. Fur<strong>the</strong>rmore, an<br />

architect has good customer-handling skills.<br />

An architect might not write much production code. But she writes a lot of code; she<br />

practices with code every day; she knows about programming languages, coding techniques,<br />

libraries, products, tools, Community Technology Previews (CTPs); and she uses <strong>the</strong> latest<br />

version of Visual Studio or Team Foundation Server. In certain areas of programming, an<br />

architect knows even more than many developers. An architect might be able to write tools<br />

and utilities to help developers be more productive. And, more often than you might think<br />

at fi rst, <strong>the</strong> architect is just a member of <strong>the</strong> development team. For example, an architect<br />

writing production code is an absolutely normal occurrence in an agile context. It is also a<br />

normal occurrence in small companies regardless of <strong>the</strong> methodology. At <strong>the</strong> same time,<br />

an architect who writes production code might be an absolutely weird occurrence in some<br />

large-company scenarios, especially if a traditional and non-agile methodology is used.<br />

What about <strong>the</strong> two of us? To which school do we belong?<br />

Well, Andrea is more of an architect than Dino because he lives on <strong>the</strong> fi fth fl oor. Dino,<br />

on <strong>the</strong> o<strong>the</strong>r hand, is closer to development because he has quite a few highly technical<br />

ASP .<strong>NET</strong> books on his record and, more importantly, lives on <strong>the</strong> second fl oor. We don’t<br />

play golf, though. Dino plays tennis regularly, whereas Andrea likes squash better. We just<br />

have been denied access to <strong>the</strong> fi rst school of thought.<br />

Note In no o<strong>the</strong>r area of engineering is <strong>the</strong> distinction between those-who-design and<br />

those-who-build as poorly accepted as it is in software. The distinction exists mostly through<br />

postulation ra<strong>the</strong>r than fl owing from a public recognition of skills.<br />

The canonical comparison is with civil architecture. Bricklayers have <strong>the</strong>ir own unique skills that<br />

engineers lack. No bricklayer, though, will ever dream of questioning designs or calculations, simply<br />

because <strong>the</strong> bricklayer lacks <strong>the</strong> skill to make <strong>the</strong> decisions himself. Bricklayers do <strong>the</strong>ir own work<br />

<strong>the</strong> best <strong>the</strong>y can, taking full advantage of having <strong>the</strong> building work delegated to <strong>the</strong>m.<br />

In software, <strong>the</strong> situation is different because architects and developers have common roots. The<br />

more skilled a developer is, <strong>the</strong> more he feels encouraged to discuss design choices—and often<br />

with reason. The more <strong>the</strong> architect loses contact with everyday programming, <strong>the</strong> more he loses<br />

<strong>the</strong> respect of o<strong>the</strong>r developers. This generates a sort of vicious circle, which magically becomes<br />

better as you switch to an agile methodology.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!