Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Is it actually possible to develop software without also architecting it?

share|improve this question

closed as too broad by gnat, MichaelT, Glenn Nelson, jmort253, Kilian Foth Nov 4 '13 at 9:08

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

6  
Also, is 'architecting' actually a word? –  Alison Nov 28 '10 at 22:22
2  
Check this out while waiting for answers:martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf –  user2567 Nov 28 '10 at 22:27
1  
@Pierre thanks, this might also be an answer ;) –  Alison Nov 28 '10 at 22:41
1  
Good question. And inversely: is it possible to architect software without staying in touch with the gory details of the actual implementation? –  Dimitri C. Dec 2 '10 at 9:38
1  
@Dimitri C. If that's not already a question on here, it should be. –  NickC Dec 3 '10 at 1:52
show 2 more comments

7 Answers 7

up vote 21 down vote accepted

Is it actually possible to develop software without also architecting it?

Yes, and either:

  • Your software will suck

or

  • Someone else must be performing the role of architect. In order for software development to be effective there must be an architect, and if their team is large enough to warrant developers that are not also "architecting" (or engineering), then those who are working as architect must be providing enough direction, technical specifications, frameworks, task breakdowns, etc. that tasks can be completed by those who are programmers but not engineers;
share|improve this answer
4  
+1 for mentioning that not all programmers are engineers. Not that I am keen on people being that way. –  Orbling Nov 29 '10 at 3:25
    
The linked answers seem to assert that programmers are some sort of lesser beings incapable of seeing things from a high level but somehow have the ability to create software. Do "programmers" even exist? –  mike30 Dec 14 '12 at 21:08
add comment

Software Architects who become too disconnected from the actual coding process become ineffective. They must be developers themselves. As Uncle Bob Martin once put it:

Even though [the software architect] is designing the whole thing, I think it would be appropriate for him to be able to dive down into [coding] for a day or two and make sure that at the bottom level these decisions that he is making at the top level make sense. He should, to some extent, live in the bed that he is making for everybody else.

http://s3.amazonaws.com/hanselminutes/hanselminutes_0171.pdf

See also
http://en.wikipedia.org/wiki/Software_architect

share|improve this answer
2  
That quote sounds like awesome advice for anyone in IT management too. –  the Tin Man Nov 28 '10 at 23:33
    
+1 "He should, to some extent, live in the bed that he is making for everybody else." –  Amir Rezaei Oct 11 '11 at 9:19
add comment

No, developer and architect are not completely separate roles in a healthy development organization.

Having either architects who never lower themselves to the code, or developers who never think about the architectural impact of the changes they make is a recipe for misunderstanding, "othering", and inefficiency.

They're usefully separate conceptual glasses through which to view the world but you can't usefully do one and never the other.

share|improve this answer
    
+1 Even though I think the answer is yes. Because ideally it should be no, it is a recipe for disaster to have people on the team that can not be both. –  Orbling Nov 29 '10 at 3:26
add comment

It can be seen that the term "development" is a general word for the entire process.

If broken apart it consists of:

  • Analysis of requirements
  • Elaborating concepts
  • Architecting
  • Preparing specs
  • Implementing the thing

In that regard I'd say it is rather unlikely that you will develop software without "architecting" it in one way or another.

Anyway, the terminology about programming process is notoriously imprecise. Developing, implementing, coding, designing, architecting, it all is used and misused on a daily basis. Don't think much of it.

And yes, the meaning is also subjective. Whatever a word means, often depends on a person who's saying it.

share|improve this answer
add comment

To answer the headline question:

Yes

At least in so far as they don't have to be done by the same person - a team might have one architect and several developers who work at a lower level.

Pragmatically an architect has to have reasonably current development skills and I suspect in most cases contributes to the development at a design and code level. Frequently for smaller projects you do everything. But for a big project? It can be enough to do on its own.

But... when I had a dev team - I was doing architecture (or at least making architectural decisions) but doing very little dev work - company of 8, dev team of 4 including me... not a lot of opportunity for me to concentrate on coding whilst ensuring that the other 3 devs had requirements and specs and were able to work on stuff without interruptions whilst having their questions answered promptly.

share|improve this answer
add comment

In my understanding, some, but not all, developers are also architects. An architect who is not a developer (i.e. doesn't code anymore) is possible, but IMO likely to create more problems than he actually helps solving.

share|improve this answer
add comment

Architect is a reference to the real architecture science and the meaning of that is that you have to think and PLAN for what you are doing before doing it. In architecture those principles are (since the Babylonians):

  • use - if the construction serves its purpose
  • structure - if the construction stands and is safe
  • design - if the construction impresses or sends a emotional message

I guess that in IT if you apply the same principles before developing your software you may be called as well an architect.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.