Are there any Software Architects here?
-
I suspect that a Software Architect designes applications which bend in a high wind instead of breaking... ;)
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
Nailed it in one, Griff. I understand the sentiment regarding codeslingers, but the write-ups I like here are the ones where someone explains why you would or wouldn't use a capability. Sure, we'd all like to have a triple-redundant quantum cloud cluster to perform sorts before they are requested, but here on Earth, maybe a call to sort() is good enough... I would extend the argument that a "pure" coder (software developer) implements what the customer wants, but a "Software Architect" designs and implements what a customer needs. (And "customer" in this case is anyone who wants the software...even the coder his/her self.) In reality, neither group is "pure"--a beautiful set of code, even to precise customer specs, is a failure if it doesn't get the real job done. And a perfect design doesn't mean crap if no one will use it.
vuolsi così colà dove si puote ciò che si vuole, e più non dimandare --The answer to Minos and any question of "Why are we doing this way?"
-
Ravi Bhavnani wrote:
And of course, an architect should be an experienced developer.
I like the definition you provide and especially that you added that last part about the SA (Software Architect) being an experienced dev. It's so important but we've all experienced someone who has Architect in their title but who is definitely missing the development experience. IT can be quite terrible. I find the difficulty that many here are having explaining what an Architect does/is interesting bec. then how do you prove Architect abilities to a prospective employer. Thanks for your great input.
newton.saber wrote:
how do you prove Architect abilities to a prospective employer.
That's easy.. you show them that you already have the title someplace else. The implication is that, since you weren't born with the title, someone, somewhere thought you deserved it and christened you with it. Whoever that was, they trust them.
We can program with only 1's, but if all you've got are zeros, you've got nothing.
-
I think the "Architect" portion of the title is often misapplied. I worked for several years as a systems engineer (computer based systems for HVAC automation) in the construction industry. "Architect" in that context is how I see "Architect", abstractly, in "software architect". It means looking at more than code, object design, UI and workflow, etc. It means looking at hardware, power requirements, air conditioning, real estate/building rental, contracts, business processes, financing, project management, cost projections and estimating, labor management, software estimating (the real voodoo economics), and all the other aspects associated with the total life of the project. Consider this example: You are the software architect tasked with taking existing code (mostly VB6, some C++, some Java) in a product suite that is currently in production with existing customers who depend on it. There is existing cash flow to consider. There are existing enhancements and bug fixes in the pipeline to consider that, if not done to meet deadlines, affect contracts and cash flow, as well as the company's reputation. The marketing research team has made a very persuasive case that the company must, within 2 years, have its product suite providing some or all of its services on mobile devices (as appropriate for the functionality). Further, VB6 is a 32 bit language, and it is obsolete, no longer supported by Microsoft. Its compatibility with current Windows OSs is "iffy" at best, and questionable going forward in a market where you would need to support Windows, Android, iOS, and perhaps Windows Phone. Part of your challenge is to migrate completely off VB6 without negatively affecting existing contracts, maintaining the existing product, and meeting marketing's need for an updated and enhanced version that meets the market's needs on desktop, laptop, and mobile devices, and does so securely, with good performance. To do all that requires a lot more than software engineering alone. An architect for a building has to broadly cover similar areas, and often draws on others' expertise to do so, but making his or her own decision because they understand how each disciplinary area works and interacts. A software architect should do no less.
Great reading and great points and you are the first I've noticed to mention $$$. Your points make the importance of all the outside elements pushing in on a project and the necessity of making sound trade-offs on the decisions made. At the end it isn't about the technology at all, it is about a business solution. However, as soon as I say that, people are going to think I'm saying you could just write everything in JavaScript, but I don't mean that either. I mean the most important thing is the business solution related to the bottom line. That's why the true architect has to know so much because: 1. it has to be economically feasible for the company 2. it has to keep the company secure, 3. it has to be easily maintainable so the company doesn't lose $$$ doing maintenance, etc.
-
newton.saber wrote:
how do you prove Architect abilities to a prospective employer.
That's easy.. you show them that you already have the title someplace else. The implication is that, since you weren't born with the title, someone, somewhere thought you deserved it and christened you with it. Whoever that was, they trust them.
We can program with only 1's, but if all you've got are zeros, you've got nothing.
patbob wrote:
you show them that you already have the title someplace else
I'm hoping you just forgot the emoticon for laughter. Those are the "Architects" many of us have worked for in the past. I once asked a onsite Architect, "How long have you been doing this?" He answered, "A little over 1 year." "Oh, but how long have you been coding?" "Just a year. I became an Architect when I learned C#," he said. "What were you doing before that?" "I was a accountant and knew the business." He had the title though.
-
Great reading and great points and you are the first I've noticed to mention $$$. Your points make the importance of all the outside elements pushing in on a project and the necessity of making sound trade-offs on the decisions made. At the end it isn't about the technology at all, it is about a business solution. However, as soon as I say that, people are going to think I'm saying you could just write everything in JavaScript, but I don't mean that either. I mean the most important thing is the business solution related to the bottom line. That's why the true architect has to know so much because: 1. it has to be economically feasible for the company 2. it has to keep the company secure, 3. it has to be easily maintainable so the company doesn't lose $$$ doing maintenance, etc.
I agree, and thanks. Of course, the ones who would think you are saying you could write everything in JavaScript are missing the $$$ point. When it comes to the technology considerations, you have to pick technology, including the languages involved, that provide the performance, reliability, and scalability in the end-user environment that keep the user using your product (cash flow to your company) and not another product (loss of cash flow to your company). Loss of cash flow means folks don't get paid. IMHO, software architects, at least this one, should keep his or her hands in coding to some degree in order to know what the technology holds. If nothing else, coding and testing new language features and testing capabilities to gauge usefulness and benefit. At least enough time to know whether or not something is worth having others spend time with it.
-
...and I don't (necessarily) mean you have the title of Software Architect. I believe many people are Architects -- because of what they do -- but do not have the title. Also, (unfortunately) many people have the title, but aren't actually Architects. Big Question So, if you are an Architect, what is it that you believe you do that a software developer doesn't do? CodeProject : Developer Heavy, Architect Light? I'm asking that as a question, not trying to rile anyone up. I notice a lot of codeslingers around here, but curious if CodeProject also attracts Software Architects. What do you think? Interesting Question What value do you think a Software Architect really brings? What skills do you expect from an Arthitect? Can the value a Software Architect adds be put into words / definitively measured? Just curious about your thoughts.
Here is one fellows opinion: http://noperfectprogram.wordpress.com
-
I agree with you. Someone who is an Arhitect but doesn't really have the development chops to back it up isn't an Architect at all. Also, I've read that book, 97 Things Every Software Architect Should Know[^] Not a bad read because it's from so many viewpoints.
newton.saber wrote:
Someone who is an Arhitect but doesn't really have the development chops to back it up isn't an Architect at all.
I agree. Software architecture is highly technical, not just conceptual. Anyone with a CS background can work at the conceptual/design level, but it takes a high degree of technical knowledge to know how to do that in a way that will actually work as needed in the real world. Plus, programmers are not likely to listen to an "architect" who can't speak their language and understand what they are doing. I know I wouldn't. It's like someone being semiconductor architect without ever having been an electrical engineer, something's fishy about that. A software architect without a programming background is someone I'd consider a glorified project manager, or a misplaced academic. Part of the problem, I think, is that it's a prestigious title but rarely needed. Any experienced programmer can do basic architecture, it's part of the skill set, and it's all that's needed on most projects. It's really only the large, complex projects that require a specialist to come in and work on the architecture. And that's really how I think of it, architecture is a specialized programming job in the same way that being a DBA is a specialized IT job, someone you bring in when the needs are beyond what the programmers can/should do on their own. But everyone seems to want the title, whether a full-time architect is needed or not.
-
Mycroft Holmes wrote:
I do the design of the app from the database structure through to the UI.
So few devs know to do it this way -- which is a hybrid Domain Modeling start and works for most projects very well / far better process than 95% of the devs use. Thanks for mentioning it.
newton.saber wrote:
So few devs know to do it this way
Really? I've done development this way for a long time, just from experience, I assumed most people did it that way. Actually, working on DB structure is the part of my job where I'm actually doing a bit of architecture, that's when everything has to be thought through. It's just mindless tedium after that. Show me your (sane) DB structure and I have a pretty good idea of how the entire system works, it's the first thing I want to see when working on a new system.
-
Architects design systems that they think just takes bricklayers (programmers) to build, whereas, in fact the programmers need to be structural engineers to build safe and robust systems from the architect's plans, as architects have little knowledge of how things actually work in the real world.
========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================
Chris Quinn wrote:
as architects have little knowledge of how things actually work in the real world.
Some of them.
Chris Quinn wrote:
in fact the programmers need to be structural engineers to build safe and robust systems from the architect's plans
That of course is too generic. - It ignores that doing that in any complex system is a significant challenge and one that cannot be achieved by any one individual. - It ignores that to do that there are in fact implementation details that must be done which really have nothing to do with architecture unless the architect is going to a very low level. For example avoiding injection attacks. - It ignores that the knowledge required to do this in a significant enterprise is probably beyond the capability of any single individual. For example locking down a web server and locking down a database server (and apps) are very different.
Chris Quinn wrote:
Architects design systems
Architects can have other roles of course. For example insuring that customer requirements do not subvert long term corporate goals and that customer requests can be correctly munged to produce something that is cost effective to implement.
-
patbob wrote:
you show them that you already have the title someplace else
I'm hoping you just forgot the emoticon for laughter. Those are the "Architects" many of us have worked for in the past. I once asked a onsite Architect, "How long have you been doing this?" He answered, "A little over 1 year." "Oh, but how long have you been coding?" "Just a year. I became an Architect when I learned C#," he said. "What were you doing before that?" "I was a accountant and knew the business." He had the title though.
I work for a biotech company and we have the same thing going on here. We have chemists who have some C++ and C# experience who are "architects" because they know/understand the chemistry algorithms. They can't design code very well. It takes professional SW engineers to fix the bad code.
-
A related question: what is the difference between a software architect and a software designer? I have seen titles such as "Software Design Engineer" and other like it. Then, what is the difference between architecture and design? (It may be just a question of philosophy.) Also, how does a software architect differ from (compare to) a construction (building) architect? Is there a list of what a construction architect does?
-
I work for a biotech company and we have the same thing going on here. We have chemists who have some C++ and C# experience who are "architects" because they know/understand the chemistry algorithms. They can't design code very well. It takes professional SW engineers to fix the bad code.
And so it goes... Good luck to you.
-
...and I don't (necessarily) mean you have the title of Software Architect. I believe many people are Architects -- because of what they do -- but do not have the title. Also, (unfortunately) many people have the title, but aren't actually Architects. Big Question So, if you are an Architect, what is it that you believe you do that a software developer doesn't do? CodeProject : Developer Heavy, Architect Light? I'm asking that as a question, not trying to rile anyone up. I notice a lot of codeslingers around here, but curious if CodeProject also attracts Software Architects. What do you think? Interesting Question What value do you think a Software Architect really brings? What skills do you expect from an Arthitect? Can the value a Software Architect adds be put into words / definitively measured? Just curious about your thoughts.
A software architect is a good programmer and thinks ahead how the parts interoperate, whether or not the system is extensible and has good judgement to predict performance. A "software architect" which is not a good programmer is a disaster. One cannot have guts feeling about interoperability, extensability and performance without the skill to actually build the pieces. The grounding would be missing. While a manager can compensate not being a top-notch expert by using people skills, listening skills and listing to the best engineers, an architect cannot. Without the skills one makes a fool out of oneself when trying to tell professionals how to do their work. Well, the syntax details of a language might be the one thing which does not matter. A good software developer can do or is in the process of learning to do software architecture. But mediocre software developers can still code an algorithm without understanding the bigger picture.
-
No. Real architects don't only design, they also code.
If your actions inspire others to dream more, learn more, do more and become more, you are a leader.-John Q. Adams
You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering.-Wernher von Braun
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.-Albert EinsteinSome of my inputs include: Software architects should -Design -for ease of understanding -for maintainability -for quality -for performance -write code -for the same reasons above -expect the highest quality code and design from his development team -know about testing, at least have a plan and have a good test team -keeping a common secure code base -be in communication with the customer, management, and all team members -look over the shoulders of his development team -have numerous code and design reviews with the developers -understand the data his system consumes, produces, and has internally This is not a full list.
-
...and I don't (necessarily) mean you have the title of Software Architect. I believe many people are Architects -- because of what they do -- but do not have the title. Also, (unfortunately) many people have the title, but aren't actually Architects. Big Question So, if you are an Architect, what is it that you believe you do that a software developer doesn't do? CodeProject : Developer Heavy, Architect Light? I'm asking that as a question, not trying to rile anyone up. I notice a lot of codeslingers around here, but curious if CodeProject also attracts Software Architects. What do you think? Interesting Question What value do you think a Software Architect really brings? What skills do you expect from an Arthitect? Can the value a Software Architect adds be put into words / definitively measured? Just curious about your thoughts.
Mmmmmmm! Are there any Software Architects here? Software Architect? Well, architects design things. We in the software industry are often compared to those in the building industry, but I think that the software industry is closer to the movie making industry, and the software architect more like the director (who might some times take a role and act!) But what makes a Software Architect? Firstly, a Software Architect must understand the full Software Development Life Cycle(SDLC) AND where in that cycle they operate. Like a movie, each software application has a life cycle. Like a movie, a software application can be used over and over by the end user. Unlike a movie, a software application can be changed in it life cycle and continued to be used by an end user. (although there can be a Director's Cut) To make that happen, players in the SLDC must understand their role as well as the SDLC. So who are these players? There are 5 major players and under each of them are teams of other players. These are: Project Manager: Team of Sub-Project Managers Scrum Master or some other project methodology champion. Business Process Manager: Team of Business Process technicians Team of Business Analysts Software Architects: Software Team Leads Teams of Senior Developers and Developers Quality Assurance Manager: Team of Testers Team of Technical Writers Enterprise Architect: Change Control Team Team of DBAs Team of System Engineers Support Manager Team of software Support staff So now the 5 major players are going have a virtual conversation for the life of the software application. The initial build of the software application will be done in a project, then later it will be Supported and enhanced in patches. The idea for the project will come from a customer, either internal to the organisation or external to the organisation. The Business Process Manager( or members of she/his team) will determine if the idea is feasible for the organisation. If it is, the Project Manager will form a project team. The Project Manager will be interested in three things: How long will it take? How many resources(both human and non-human) will it take? How much will it cost? The Software Architect will need the other players to help answer these questions. Although, the Software Architect won't
-
A software architect is a good programmer and thinks ahead how the parts interoperate, whether or not the system is extensible and has good judgement to predict performance. A "software architect" which is not a good programmer is a disaster. One cannot have guts feeling about interoperability, extensability and performance without the skill to actually build the pieces. The grounding would be missing. While a manager can compensate not being a top-notch expert by using people skills, listening skills and listing to the best engineers, an architect cannot. Without the skills one makes a fool out of oneself when trying to tell professionals how to do their work. Well, the syntax details of a language might be the one thing which does not matter. A good software developer can do or is in the process of learning to do software architecture. But mediocre software developers can still code an algorithm without understanding the bigger picture.
Thanks for your input. I totally agree with you on:
Chris Jacobi wrote:
A "software architect" which is not a good programmer is a disaster.
Many of us have suffered under "Architects" who could not code their way out of a wet paper bag. They create grand visions of Rainbow Unicorns which cannot be created in code and then we devs have to build code that creates the program anyway.
-
Mmmmmmm! Are there any Software Architects here? Software Architect? Well, architects design things. We in the software industry are often compared to those in the building industry, but I think that the software industry is closer to the movie making industry, and the software architect more like the director (who might some times take a role and act!) But what makes a Software Architect? Firstly, a Software Architect must understand the full Software Development Life Cycle(SDLC) AND where in that cycle they operate. Like a movie, each software application has a life cycle. Like a movie, a software application can be used over and over by the end user. Unlike a movie, a software application can be changed in it life cycle and continued to be used by an end user. (although there can be a Director's Cut) To make that happen, players in the SLDC must understand their role as well as the SDLC. So who are these players? There are 5 major players and under each of them are teams of other players. These are: Project Manager: Team of Sub-Project Managers Scrum Master or some other project methodology champion. Business Process Manager: Team of Business Process technicians Team of Business Analysts Software Architects: Software Team Leads Teams of Senior Developers and Developers Quality Assurance Manager: Team of Testers Team of Technical Writers Enterprise Architect: Change Control Team Team of DBAs Team of System Engineers Support Manager Team of software Support staff So now the 5 major players are going have a virtual conversation for the life of the software application. The initial build of the software application will be done in a project, then later it will be Supported and enhanced in patches. The idea for the project will come from a customer, either internal to the organisation or external to the organisation. The Business Process Manager( or members of she/his team) will determine if the idea is feasible for the organisation. If it is, the Project Manager will form a project team. The Project Manager will be interested in three things: How long will it take? How many resources(both human and non-human) will it take? How much will it cost? The Software Architect will need the other players to help answer these questions. Although, the Software Architect won't
Thanks for your great input. You are right about the Architect needing to know a little (and a lot) about everything. That's why -- as you indicated -- the Architect must really enjoy tearing the business apart and re-assembling it from every angle. Because all of the pieces are connected and the software solutions we create are really just automating the business, every piece is entwined with every other piece. It creates a lot of complexity. That's probably a big part of why companies get so overwhelmed by the whole thing, often lose their focus and then fail on projects.
-
Some of my inputs include: Software architects should -Design -for ease of understanding -for maintainability -for quality -for performance -write code -for the same reasons above -expect the highest quality code and design from his development team -know about testing, at least have a plan and have a good test team -keeping a common secure code base -be in communication with the customer, management, and all team members -look over the shoulders of his development team -have numerous code and design reviews with the developers -understand the data his system consumes, produces, and has internally This is not a full list.
:thumbsup: Every coder, programmer, developer, architect, code-monkey, etc should all strive for the same
If your actions inspire others to dream more, learn more, do more and become more, you are a leader.-John Q. Adams
You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering.-Wernher von Braun
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.-Albert Einstein -
Mmmmmmm! Are there any Software Architects here? Software Architect? Well, architects design things. We in the software industry are often compared to those in the building industry, but I think that the software industry is closer to the movie making industry, and the software architect more like the director (who might some times take a role and act!) But what makes a Software Architect? Firstly, a Software Architect must understand the full Software Development Life Cycle(SDLC) AND where in that cycle they operate. Like a movie, each software application has a life cycle. Like a movie, a software application can be used over and over by the end user. Unlike a movie, a software application can be changed in it life cycle and continued to be used by an end user. (although there can be a Director's Cut) To make that happen, players in the SLDC must understand their role as well as the SDLC. So who are these players? There are 5 major players and under each of them are teams of other players. These are: Project Manager: Team of Sub-Project Managers Scrum Master or some other project methodology champion. Business Process Manager: Team of Business Process technicians Team of Business Analysts Software Architects: Software Team Leads Teams of Senior Developers and Developers Quality Assurance Manager: Team of Testers Team of Technical Writers Enterprise Architect: Change Control Team Team of DBAs Team of System Engineers Support Manager Team of software Support staff So now the 5 major players are going have a virtual conversation for the life of the software application. The initial build of the software application will be done in a project, then later it will be Supported and enhanced in patches. The idea for the project will come from a customer, either internal to the organisation or external to the organisation. The Business Process Manager( or members of she/his team) will determine if the idea is feasible for the organisation. If it is, the Project Manager will form a project team. The Project Manager will be interested in three things: How long will it take? How many resources(both human and non-human) will it take? How much will it cost? The Software Architect will need the other players to help answer these questions. Although, the Software Architect won't
Good analyse with consistent arguments.:thumbsup: I agree with you... up to "Good Software Architects will WANT have NOT to code, because they love it must find the best coders and must recognize their best solutions for the project which he defines with its best experiment!" So I agree for its huge culture! But it doesn't have to be a good Mason but just know what a Mason can do best and how to do it."
entia non sunt multiplicanda praeter necessitatem
-
Hey, these are 2 different positions and you need Architect only for huge system in enterprise domain.Usually you have Solution Architect, Domain Architect and Enterprise Architect, according to the complexity of the solution and the enviroment. In small team or organitation sometime the Solution Architect is also a developer but you are in limit situation where may be you don't need a architect becuase you application is not too huge. Cheers, Antonio
I'd also add Application Architect to that list. Many senior engineers who contribute heavily to the design of your application and interfacing systems are partially filling that role. If you are regularly interfacing between the business and your team, designing ahead of time to meet foreseen requirements, and finding ways to reduce your app's technical debt then you may be an Application Architect depending on a company's definition. It is very dependent on the scope, complexity, and size of the solution and organization to justify these roles. A Solution Architect is overseeing the architecture of the set of applications which form said solution. I would normally think this is a dozen or more apps to qualify for this next distinction. Our solution contains 80+ applications. Someone at this level would definitely not be coding feature content. I would then jump to Enterprise Architect but I can see a Domain Architect having a place in larger organizations which have teams of architects. Then there's Systems Architect which is an ICT position. For those wondering generally an architect isn't delivering feature content because their responsibilities would cause them to be a block on the critical path. They are generally too busy interfacing between the business and engineering and while they may still write code generally it's big picture prototypes and system infrastructure. If they were to pitch in to help a team I'd think it would be limited to unit tests or basic items from the backlog... something that wouldn't interfere with the developers.