Java Architect or Java Developer?
I just read an article “Hiring the phantom Java architect”. The article raises some questions about the role of a Java developer and a Java architect.
Are these two separate entities or is there some overlap? Can an architect also be a developer? What should be the division of work between an architect and a developer?
** Be part of the Best Java Blogger 2 Contest (May 2005) **
My observation is that generally architects who try to stay away from coding don’t get the necessary
respect from the developers. You hear comments like “It’s easy to
preach, the practice is what’s difficult” . While architects who are
very good at coding and also take up some coding work regularly gain
the developer’s respect very quickly. Developers come to them with their
problems and are more open to suggestions from such an architect.
In the article, the author is quite critical of
hiring managers for wanting a 50:50 architect + developers. He says
that “Architects are often idealized as Java gurus. The reality is they
are not gurus. Rather, they are the creative visionaries of an
organization’s Java future.”. He adds that “Yet when the 50-50 approach
is used to select a Java technologist, you end up with a generalist?not
a specialist. In the end, this lack of decisiveness ultimately creates
a lack of focus within your project.”
For the companies, I think it makes sense to recruit developer+
architect type people. This is especially true for small and medium sized companies where most work is executed by teams of less then 10 people. These teams just can’t afford to have one full fledged architect who is not involved in the coding.
Also an architect who stays away from coding can very soon lose
touch with the ground realities of Java development. This is the worst part, as then the architect starts pushing in technologies just for the sake of it. So even when the project doesn’t need them., you will see EJBs, web services and all sorts of stuff being forced into the system.
What do you think? Do you prefer having specialized architects or senior developers handling that responsibility while also being involved in the coding?
Reference:
>>? Hiring the phantom Java architect
Hi
Very good Blog, with purposeful discussion, in my opinion ‘Architect’ is one who interfaces the management, Client and the development team. He should have clear understanding of this entire domain; Coding is only a part in the whole picture. An architect needs to have clear understanding on areas such as…
1) Client Requirements
2) Management/Organizations strategy
3) Technology
4) Ability of the team and
5) Good communication and leadership skills
Mere senior developer may/may not handle all this roles. An Architect role require more than development.
Yes, I too agree that staying out of Technology and asking developers to develop something just for the buzzword sake doesn’t do anything good and this is where he (an Architect) has to apply all the other skills he should posses.
Thank you.
Regards,
Sudhakar
:grin ‘Quick somebody get me one of those Software Architects’…
So I’m one of those ‘Coding Architect Types’ currently interviewing, a friend of mine (great guy, good depth of knowledge, not terribly experienced though), hooks me up with an interview at a small company (who just got bought by a BIG company). Talking to my friend’s boss, he is hiring 6 people to get a substantial application written and deployed into production in 6 months. So I start interviewing him a little:
Q) ‘What positions are you looking to fill?’
A) ‘We are just looking for talented Senior and Junior people, we’ll all work together to get the job done, we don’t care about titles (i.e. Architect) here’
Q) ‘How far along are you in requirements gathering?’
A) ‘Well, I have a preety good idea of what it needs to do, but we haven’t gotten sign-off on whether it’s going to be J2EE or .Net’
Q) ‘How will the team be made up?’
A) ‘We have some guys who are experienced with front end, some guys who are experienced with the middle tier, and some guys who know a little about databases. We’ll all work together to get it done.’
Q) ‘How seasoned are your team members? Have they worked together for very long?’
A) ‘Three guys have been here for a while, I just hired (As a senior developer), we’re still looking for the remaining two individuals’
Q) ‘How business critical is this application?’
A) ‘Mission critical, now that we are owned by we need to scale to support the increased demand.’
Q) ‘What’s your contingency plan?’
A) ‘We’ll just work hard to get it done. I don’t want to think we can’t get it done on time, we HAVE to get it done on time.’
Q) ‘How many big projects have you been involved with?’
A) ‘I was heavily involved with the design and implementation of our current system’ (which was done in PHP)
Q) ‘If I came to work here, who would I be reporting to?’
A) ‘I would be your direct supervisor.’
Q) ‘What is your (job) title there?’
A) ‘After the buy-out, I became ‘Director of Software Engineering”.
…By now you’ve picked up on where this is heading. I was asked to come back for a second interview, declined. This is where the lack of leadership for someone called Architect is sorely needed (as posted by chinmay), however, this project is doomed, here’s the rundown:
Big Project,
Mission Critical,
Shady Requirements,
New Team,
Tight Deadline,
No Contingency Plan,
Clueless Management … 😡
:grin ‘Quick somebody get me one of those Software Architects’…
So I’m one of those ‘Coding Architect Types’ currently interviewing, a friend of mine (great guy, good depth of knowledge, not terribly experienced though), hooks me up with an interview at a small company (who just got bought by a BIG company). Talking to my friend’s boss, he is hiring 6 people to get a substantial application written and deployed into production in 6 months. So I start interviewing him a little:
Q) ‘What positions are you looking to fill?’
A) ‘We are just looking for talented Senior and Junior people, we’ll all work together to get the job done, we don’t care about titles (i.e. Architect) here’
Q) ‘How far along are you in requirements gathering?’
A) ‘Well, I have a preety good idea of what it needs to do, but we haven’t gotten sign-off on whether it’s going to be J2EE or .Net’
Q) ‘How will the team be made up?’
A) ‘We have some guys who are experienced with front end, some guys who are experienced with the middle tier, and some guys who know a little about databases. We’ll all work together to get it done.’
Q) ‘How seasoned are your team members? Have they worked together for very long?’
A) ‘Three guys have been here for a while, I just hired (As a senior developer), we’re still looking for the remaining two individuals’
Q) ‘How business critical is this application?’
A) ‘Mission critical, now that we are owned by we need to scale to support the increased demand.’
Q) ‘What’s your contingency plan?’
A) ‘We’ll just work hard to get it done. I don’t want to think we can’t get it done on time, we HAVE to get it done on time.’
Q) ‘How many big projects have you been involved with?’
A) ‘I was heavily involved with the design and implementation of our current system’ (which was done in PHP)
Q) ‘If I came to work here, who would I be reporting to?’
A) ‘I would be your direct supervisor.’
Q) ‘What is your (job) title there?’
A) ‘After the buy-out, I became ‘Director of Software Engineering”.
…By now you’ve picked up on where this is heading. I was asked to come back for a second interview, declined. This is where the lack of leadership for someone called Architect is sorely needed (as posted by chinmay), however, this project is doomed, here’s the rundown:
Big Project,
Mission Critical,
Shady Requirements,
New Team,
Tight Deadline,
No Contingency Plan,
Clueless Management … 😡
a fast learner, good teacher, good leader…
50:50 or 80:20 doesn’t matter, I do agree creative visionaries are more important. With this characteristics imply that the architect is a smart guy and hard working.
a fast learner, good teacher, good leader…
50:50 or 80:20 doesn’t matter, I do agree creative visionaries are more important. With this characteristics imply that the architect is a smart guy and hard working.
You do realize that Macromedia Flex requires an Application Server & thus a JVM, and the Avalon framework also requires a VM (namely the .NET CLR)?
But I do agree in general that Apache’s time is best spent elsewhere, and that a JVM/JDK from Apache will never be able to keep up with changes or equal the quality of Sun’s JVM/JDK.
Also Sun has licensed several patents/technologies that are included into some of the API code. How will Apache Foundation deal with this?
You do realize that Macromedia Flex requires an Application Server & thus a JVM, and the Avalon framework also requires a VM (namely the .NET CLR)?
But I do agree in general that Apache’s time is best spent elsewhere, and that a JVM/JDK from Apache will never be able to keep up with changes or equal the quality of Sun’s JVM/JDK.
Also Sun has licensed several patents/technologies that are included into some of the API code. How will Apache Foundation deal with this?
an architect who dose not touch actual coding is not a successful architect !!!
an architect who dose not touch actual coding is not a successful architect !!!
Assuming for the sake of argument that there is some ‘architecting’ activity that less experienced developers don’t do. What is it?
Identifying big pitfalls before disaster strikes
Reviewing code and helping developers
Deciding the technical approach
Planning the work so that strategic issues get pulled forward as tactical objectives are met
Deciding what process runs where
Solving hard technical problems – process X on host Y is hung because it makes a blocking call to F and all threads in X are waiting for a lock held by thread P in X that is hung …
Drawing attractive UMl diagrams at the end for the manager.
But to effectively lead developers the architect needs credibility, mandate, and authority. If you don’t code but until now wrote 80% of the system thats fine. But as a new hire you have to code. If you are the ‘architect’ who does some coding and doesn’t manage who works on what when then you will be ineffective because as soon as you try to do anything that affects any developer they will see you as someone adding to their workload / obstructing their success and they be incentivised to neutralize you.
To be effective you have to have some clear team management / lead role.
Assuming for the sake of argument that there is some ‘architecting’ activity that less experienced developers don’t do. What is it?
Identifying big pitfalls before disaster strikes
Reviewing code and helping developers
Deciding the technical approach
Planning the work so that strategic issues get pulled forward as tactical objectives are met
Deciding what process runs where
Solving hard technical problems – process X on host Y is hung because it makes a blocking call to F and all threads in X are waiting for a lock held by thread P in X that is hung …
Drawing attractive UMl diagrams at the end for the manager.
But to effectively lead developers the architect needs credibility, mandate, and authority. If you don’t code but until now wrote 80% of the system thats fine. But as a new hire you have to code. If you are the ‘architect’ who does some coding and doesn’t manage who works on what when then you will be ineffective because as soon as you try to do anything that affects any developer they will see you as someone adding to their workload / obstructing their success and they be incentivised to neutralize you.
To be effective you have to have some clear team management / lead role.
From my opinion an architect must do some coding. If he doesn’t he loses touch of latest in java or any tech. And thus unnecessarily he forces the technologies in the project. Which in result doesn’t works at all.
From my opinion an architect must do some coding. If he doesn’t he loses touch of latest in java or any tech. And thus unnecessarily he forces the technologies in the project. Which in result doesn’t works at all.
Architect for what? so he is a business analyst. Architect how to? so he is a developer. He even should presee risk. So architect should know everything.
Architect for what? so he is a business analyst. Architect how to? so he is a developer. He even should presee risk. So architect should know everything.
The problem is that there are no clearly defined definitions of these titles (or any other titles for that matter) and as we all know people try to sell their image as best as they can when shopping for a job which leads to these obfuscated and contorted buzzwords. If you are a Java Dev. don’t feel bad if you call yourself Java Architect because the same thing happened in the management area a decate or two ago when the accountant become a Financial Advisor and Strategist or the treasurer became Chief Financial Officer … you get the idea. It is done throught the industry as a ‘smoke and mirrors’ so that people become confused and think more about the good sounding title than they would if you would tell them that it’s just the guy that writes the code.
The problem is that there are no clearly defined definitions of these titles (or any other titles for that matter) and as we all know people try to sell their image as best as they can when shopping for a job which leads to these obfuscated and contorted buzzwords. If you are a Java Dev. don’t feel bad if you call yourself Java Architect because the same thing happened in the management area a decate or two ago when the accountant become a Financial Advisor and Strategist or the treasurer became Chief Financial Officer … you get the idea. It is done throught the industry as a ‘smoke and mirrors’ so that people become confused and think more about the good sounding title than they would if you would tell them that it’s just the guy that writes the code.
yes,a architect should be a developer!
yes,a architect should be a developer!
When Mr. Bill Gates promoted himself to be ‘Chief Software Architect’, everyone tried to use ‘Software Architect’ to distinguish himself or herself from other ‘software developers or engineers’. I think that this will hurt ourselves more in the future. Bottom line is that ‘software architecture’ and ‘software building’ are not the same. You can ask architect, civil engineer, eletrical engineer about this. Personally, I prefer ‘Software Developer or Engineer’ because that is whom we are, aren’t we? If you want to, we can add the prefixes like ‘junior, senior, principal’ and suffixes like ‘I, II, III, IV, V, …’. These should cover everyone in the software world!
When Mr. Bill Gates promoted himself to be ‘Chief Software Architect’, everyone tried to use ‘Software Architect’ to distinguish himself or herself from other ‘software developers or engineers’. I think that this will hurt ourselves more in the future. Bottom line is that ‘software architecture’ and ‘software building’ are not the same. You can ask architect, civil engineer, eletrical engineer about this. Personally, I prefer ‘Software Developer or Engineer’ because that is whom we are, aren’t we? If you want to, we can add the prefixes like ‘junior, senior, principal’ and suffixes like ‘I, II, III, IV, V, …’. These should cover everyone in the software world!
For the last 3-4 years I’ve been in the role ‘Architect’ (in the 50/50 vain as described in your article) I’m starting to realize this word itself is becoming way overused… After inteviewing my last 3 or 4 supposed ‘Architects’ I realized everyone who’s ever used Java considers themselves ‘Architect’… ‘I read Java for Dummy’s, hence Architect’…Maybe there should be another title ‘Buzzword Architect’ who would be the guy who is the CTO’s confidant, doesn’t get anything done, but throws out cool technology terms like ‘Service Orientated Architecture’ (Yeah, I misspelled it intentionally). Hmm, maybe I’ll create a website ‘AmIArchitectOrNot’ in the same vain as ‘AmIHotOrNot’ where people could take an online test to quantify this role as ‘Architect’.
For the last 3-4 years I’ve been in the role ‘Architect’ (in the 50/50 vain as described in your article) I’m starting to realize this word itself is becoming way overused… After inteviewing my last 3 or 4 supposed ‘Architects’ I realized everyone who’s ever used Java considers themselves ‘Architect’… ‘I read Java for Dummy’s, hence Architect’…Maybe there should be another title ‘Buzzword Architect’ who would be the guy who is the CTO’s confidant, doesn’t get anything done, but throws out cool technology terms like ‘Service Orientated Architecture’ (Yeah, I misspelled it intentionally). Hmm, maybe I’ll create a website ‘AmIArchitectOrNot’ in the same vain as ‘AmIHotOrNot’ where people could take an online test to quantify this role as ‘Architect’.
Don’t let words like Architect or Developer trip you up. If you’ve got anyone telling you to use technology X without having to use it themselves, you are working in the wrong kind of environment.
Don’t let words like Architect or Developer trip you up. If you’ve got anyone telling you to use technology X without having to use it themselves, you are working in the wrong kind of environment.