If architecting is a skill how can it improved? There is precious little architectural training available, probably the most comprehensive non technology specific architectural training being from the SEI. This lack of architectural training is a very serious problem for the IT world in my opinion. Whilst I would agree that there is a certain amount of skill or art in being an excellent architect there is still a lot of grounding or first principles of architecture that can be taught. I believe that if we are to improve the quality of software architecture then we need to start to teach these architectural principles rather than allow new architects build them through trial and error, often with disastrous and expensive consequences.
It has been centuries since architects in the building world were allowed to construct large scale buildings by trial and error, although that is certainly how it was originally done as evidenced by the large number of cathedrals that fell down. In the software world however we still create major systems by trial and error, costing billions of dollars a year in failed projects. Many of these could be avoided if the architects in charge had had some simple training and education.
Why is it that no one offers architectural training? I believe it is because it is not in any organisations interest to do so. Companies selling services are really selling architectural skills, along with the project management and developer skills to undertake the implementation. In most cases they use the general lack of architectural skills and expertise in their customers as a key to the sale of their services. In my opinion the last thing these services organisations want is a pool of skilled architects in their customer base.
The other obvious source for architectural training is Universities or other places of higher learning. It is a mystery to me why these do not offer Software Architecture courses. The Universities I have spoken to say that there is no motivation for them to provide new courses unless students or industry drive them to it. All the time there is little understanding of the importance and value of software architecture then there is no demand and so the Universities do nothing.
The snag is that for most of the life of the IT industry the answer to any failing project has been a magical sliver bullet; either technical (PC’s, Distributed computing, Client Server, OO, CORBA, DCOM, etc) or process based (CASE, RUP, Agile etc). However I think that software consumers are beginning to realise that there is more to a successful software project than using the latest technology (CVware as I rather amusingly heard it called the other day) or the flavour of the month design process and that a project will fail if it is not built using good sound architectural principles, in fact most projects do fail for exactly this reason.
My fervent hope is that this dawning awareness of the value of Software Architecture will cause the development of good architectural courses and an improvement in the level of architectural skills in the IT industry. Then at last we can start to decrease the wanton and profligate wastage of resources and money in our industry caused by the lack of good architectural practise. I also hope that it will stop people saying that Windows doesn’t scale when a project doesn’t meet the scalability requirements!
Please note these are my personal opinions and not the opinion or direction of my employer.
I totally agree with this. I work for a company that will pay for ongoing training, but I can not find suitable courses that go beyond the "ASP.Net in a nutshell", or other traning courses for MS certifications. I'm looking for courses on architecture (doesn'thave to be .Net specific), and can't seem to find much at all; especially in my area of the U.S.
I know of a Paper company in the U.S. that was disgruntled with the level of knowledge of their business in the people they were hiring. There really wasn't a good way for people to learn the skills that made it easy for them to pick up the jobs that the company needed. They solved this by talking with a local university and created a set of courses, offered through the university and taught by industry veterans and local professors. After someone completed the courses their name was put on a list of people to call when new positions in the company opened up. Perhaps the Industry DOES need to take this issue to the world of higher education and work up something similiar. Perhaps a set of courses on architecture, focusing on real world, current models, would be just what we need.
I respectfully disagree with this statement:
In my opinion the last thing these services organisations want is a pool of skilled architects in their customer base.
We have tried to sell architectual services to customers. No one will buy "architectual services" because the customer feels that they already know how to architect a solution. It is only later, when running in the real world do you see if the chosen architecture works or doesn't. It is not a good selling point to say to a customer "You're architecture is wrong, pay us money to help you to do it right the first time." I can guarantee that going in with that as a selling point will result in "NO SALE." The developers that already work at a company will see it as an insult. We called it mentoring, coaching, and architectual assistance. Each time, the developers already there acted as if we said that they were stupid and that their children were ugly. We just decided to take it off and not mention it unless someone asked. Fewer headaches that way.
Of course, we still charged the same amount of money and they still got architectual assistance, but we took off that as a sales pitch.
And I shouldn't say that all companinies can't sell architecture. There are a few that can. Wintellect is a good example. I guess having Jeff Prosise, Jeff Richter, and John Robbins doesn't hurt them in that area. :-)
I agree with Wally's statements about how companies have to carefully market their message in order not to create resentment in client teams.
Furthermore, an interesting question was raised - who's responsible for teaching budding architects the basics ? From my experience, the universities fail at this rather miserably, and no one's filled the void yet.
However, I'm not sure that software architecture should be divorced from software development. Too many times I watch as architects define some elaborate systems model, that eventually does not end up in code for the simple reason that it is not feasible. Worse, often these same architects blame the developers when the system does not deliver, for the reason that the developers didn't follow the architecture. Had the developers followed the architecture to the letter, the code just wouldn't have run.
I believe that architects need to be grown from the ranks of software developers in order to mitigate these problems.
I've yet to be proven wrong =)
I have to agree with Udi on this one (see previous comment). As a software developer, the range of my personal knowledge has coming from two areas: trial and error and learning from other more experienced people in my field.
There always has to be some trial and error when learning a new language or new platform (to push the boundardies), and I think it's difficult to progress one's career without practical experience (i.e. real world).
The daily list of stuff I found interesting while blogreading.
I agree with Udi also. Architects are typically divorced from developers, which is a shame. Architects need to roll up their sleeves and remember how to write code.
Sorry not to reply earlier, I was running a conference on MDA and only just got back online. To answer the comments:
I agree you need to be careful positioning architecture because everyone thinks they know how to do it, even when they dont!
I am less sure about the architects need to code, I will write a blog about this in the future.
thanks for the feedback
I agree that not only architects need to know how to write code!, but they need to code as well. I have been working on a few projects where a designer/architect was appointed, created a design/architecture far from practicality, and then left the development team with an unfeasible design.
That's why an architect should be able to write code in his/her mind when defining the high-level elements.
Also the fact that the architect will be doing some coding (can be very a small but key portion) can sell the architecture/design to developers.
I am not sure that architects should be practising devs. In the building world most architects are not able to do plumbing / electrics and brickwork so why should they in the software world. Does a building architect do the main wiring panel in a house whilst the electricans look on in admiration?
I do think that they need to understand the technologies and constraints that dev's have to live with. I think the instances where an unpractical architecture was defined was just bad architecture and wouldnt necessarily be fixed by the architect being a red hot dev
It just so happens that we (developmentor) have a .NET architecture and design class. I've just returned from Redmond having presented the second run to MS architects and developers
I believe one of the key things here is – what is an architect, or should I say what do people perceive as the role of an architect?
I’m of the belief that people base what an architect does upon their own career path and the size of organization in which they’ve worked
For example – a developer from a small software house would describe an architect as a person who defined the application framework, chose C# because he was good at it and came up with the data model as an after thought. On the flipside an architect from Morgan Stanley would know C# was the correct choice based upon several millions dollars of research (and told 1000 VB.NET programmers they’ve got to change!). Chosen application, security and infrastructure architectural models based upon industry practices and standards and if you talked to them about anything other than the technology acronym they’d glaze over, or have a meeting to go to.
Basically, I’ve concluded that only large organizations have separate individuals who are pure architects (and that’s all they do). Other organizations have designers who assume the role of an architect.
In cases where designers have been re-titled to ‘architect’ separating them from code is almost impossible. The definition of a designer is that they should be platform experts, which inherently means they come from development backgrounds.
I personally find that the title ‘architect’ is not always appropriate, which is why perhaps we get confused i.e. should architects dabble in code/technologies. Here I would suggest that the person meddling isn’t an architect (in the purest sense anyway). Here the person is a designer who has taken on the title of architect due to what are normally economic reasons i.e. the company is not of a size to warrant employing an architect and designer.
Yes, I had a look at your course and thought it was pretty good. It's nice to see developmentor moving up into this space.
I totally agree with you about architect roles and the "mobile" architetc who moves from design into architetcure and back again. I tend to see mainly large orgs where they have specialist architects but i accept there are a lot of architects who do both jobs. Back to the building analogy if you are building a small house then you dont need to be too fussy about the plans and the lead contractor can normally do some of the work on the house. If you are building a major skyscraper that dosnt work too well.
Anyway I totaly agree that there a designers who do both code and architetcure, pure applications architects and nowadays enterprise architects who are effectively the city planners of the building world.
Most of this bog has been at the designer / application architect level rather than pure architecture (my latest blog and the ones on modelling are more at that level). My real interest and area of work is actually enterprise architecture at the moment where there is very little guidance.
Thanks for the vote of confidence in the course ;-)
I'm intrigued, or simply misinterpreting what you’ve said, are you saying modeling is just for architects?