# data[].attributes.body
Uno de los aspectos importantes para pensar como un arquitecto es entender la diferencia entre arquitectura y diseño.

# data[].attributes.body
El segundo aspecto importante para pensar como un arquitecto es tener una amplia gama de conocimientos técnicos, manteniendo un cierto nivel de profundidad técnica.

# data[].attributes.body
El tercer aspecto importante en el pensamiento arquitectónico es el de poder comprender, conciliar y analizar los puntos buenos y malos entre diversas soluciones y tecnologías.

# data[].attributes.body
El último aspecto para pensar como arquitecto es entender los impulsores comerciales requeridos para el éxito del sistema y traducir esos requerimientos en características arquitectónicas.

# data[].attributes.body
Es importante saber colaborar con el equipo de desarrollo para que la arquitectura funcione.

# data[].attributes.attachment_link.title
Difference Between Software Architecture and Software Design | Scott Duffy

# data[].attributes.body
Un conocimiento amplio permite ver soluciones y posibilidades que otros no pueden ver.

# data[].attributes.body
El arquitecto y los desarrolladores deben estar en el mismo equipo para asegurar el éxito de un proyecto de software.

# data[].attributes.attachment_link.readable_text
kentoh - Fotolia

By

NEW YORK -- Architects and developers work together on software projects. They both code, and they both shape and implement the vision for the software. They share many of the same skills.

But developers and architects also have some key differences and, as a rule, have to segment their responsibilities.

"Leadership is the primary function of a software architect," said Sonya Natanzon, solutions architect at Guardant Health, an oncology-focused blood testing and analytics company in Redwood City, Calif., at the O'Reilly Software Architecture event here this week. Architects lead people, technical direction and the software vision through requirements and roadmaps.

Whether you're a developer assigned to work with an architect on a software project, an architect that drives software quality in an enterprise build, or a senior developer considering the next step for your career, understanding each other's roles and responsibilities will bring the best possible result.

Differences between developer and architect roles

The software architect produces the artifacts and is responsible for the outcomes. However, architects can't go it alone. Architects need developers.

Architects gather high-level expectations for the software project, and plan how to get there, said Joseph Dotson, a software engineer at Quicken Loans, a Detroit-based mortgage lending company. Architects conceptualize the project for developers. Developers provide feedback that improves that plan and create the code that balances business values, such as time-to-market and product reliability.

Architects are there for the entire software development life cycle, not just the start. They identify the problem/project, design and implement the concept, and then enhance and maintain the live product.

One of the biggest questions facing architects is whether to code or not to code, Natanzon said. "Can I really call myself an architect if I don't code every day?" Her advice is to code when it matters, such as proof-of-concept builds and the scaffolding for greenfield software. It helps to serve as the lead developer on one project. Natanzon wants architects to go deep into development work periodically -- don't leave it behind, but don't get lost in it.

Developers have senior, junior and peer team members to resolve coding conundrums, review builds and share tool knowledge. By contrast, architects are often the only technical lead on a project, in liaison with other professionals across the business. There are cases where companies may assign multiple architects to important projects or direct software, IT and enterprise architects to collaborate on multiple builds.

"I like when we have more than one architect on a team," said Elizabeth Young, systems engineer at O'Reilly Auto Parts, a Springfield, Mo., retailer with more than 5,000 locations throughout the U.S. Two architects are better than one, because they work off of each other and provide peer review. There might be a gap in a proposed architecture plan that developers don't catch, but another architect easily notices, Young explained.

Natanzon similarly recommended that architects train senior developers to be their peers. It's not cheap to have multiple architects on a single project, but the benefits can justify the choice.

Architect specializations in enterprise IT

While these job titles vary from company to company, there are general expectations for each role:

Enterprise architect: Devises process and patterns for the organization to meet its objectives, through technologies, human resources and information assets.

Solution architect: Creates a technical vision for engineering related to a particular business need or problem. They work with technical architects and technical leads.

Software architect: Works with business stakeholders for requirements and with developers to implement software design. Also called a product or application architect.

IT architect: Creates the infrastructure and tools to support, secure and improve the business's software products and data assets. In some organizations, multiple platform architects own portions of IT, and cloud-focused projects rely on a cloud architect. Work together to build better software

Work together to build better software

While the joke is that architects are developers who can draw diagrams, architecture is never a clean and pretty picture when faced with shifting business demands and normal development constraints, Natanzon said. Leadership skills enable architects to navigate conflicts toward a compromise that satisfies the important requirements -- and to adjust as the project goes along.

"There's a back and forth [with architects]," said Kai Holnes, a software developer for ThoughtWorks, a Chicago consulting firm. Holnes, who presented at the conference, works with architects in a collaborative relationship. Together, they ensure that the vision matches an achievable product, and that a satisfactory product materializes.

For example, a software architect selects a project's style and language, approves the tools to build and support the project, and sets guidelines for coding practices. The developers then organize into working groups based on user stories, which get reprioritized as the project progresses. Those devs might also propose a new automation platform to speed up programming or ensure deployment consistency.

We have to ship working code that brings business value. If you don't have that, then your architecture has no value.

Sonya Natanzonsolutions architect at Guardant Health

There are ways to foster collaboration between developers and architects:

Speak up. Developers should ask lots of questions when they work with architects, Holnes said. Understand why the architect makes certain decisions, and repeat back information to ensure a shared understanding.

Developers and architects collaborate best when the thought process is public. Context matters. For example, the architect announces that the team will build a web app feature for online shoppers with Python, even though two developers are experts in Go. Go would ensure high performance, but the whole team doesn't use it yet, and the retailer they work for wants the capability ready for a major product launch. In this case, Python is the right choice to balance benefits and constraints. On another project, however, the architect might ask developers to choose the language.

Skill up across roles. Just as code-savvy architects can benefit a project, architecture-savvy developers are an asset. Quicken Loans' Dotson was a developer, became an architect, then moved back to engineering. "I just like being able to build things with my hands," he said. "But I still keep up with modern architecture."

Dotson helps create tools for internal software teams, such as infrastructure-as-code tooling. He spends time with platform architects to get a sense of what they need, and how to create it.

Developers and architects should communicate extensively throughout projects, but that's just a start. Quicken Loans has an enterprise standards group, a cross-functional team of architects, engineers and other stakeholders who collaborate on guidance for software projects. Get democratic input from product, engineers, QA, and build processes that drive value.

Focus on value. Developers dread ivory tower architects, who treat architecture as an academic exercise without practical input. Developers like freedom, while architects champion process and engineering discipline. In practice, process must serve developers, not the other way around, Natanzon said.

The unifying factor for developers and architects is that everyone works toward quality software that fulfills a business need. "We have to ship working code that brings business value. If you don't have that, then your architecture has no value," she said.

Next Steps
The guide to landing an enterprise architect job How to create an effective software architecture roadmap How architects can use napkin math to forecast performance 4 enterprise architect skills you should never overlook

# data[].attributes.attachment_link.title
How do software developers and architects work together? | TechTarget

# data[].attributes.attachment_link.description
An architect is more than a software developer who can draw, and a developer is more than a coding machine. Here, developers and architects share how they work with the other side, tips to excel together, and the common goal that unites them.

# data[].attributes.headline
¿Dónde termina la arquitectura y comienza el diseño?

# data[].attributes.subject
¿Dónde termina la arquitectura y comienza el diseño?

# data[].attributes.body
No lo hace. Ambos son parte del ciclo de vida de un proyecto de software y deben estar sincronizados entre sí para tener éxito.

# data[].attributes.body
Piensa que el arquitecto de software debe brindar mentoría y entrenamiento al equipo de desarrollo.

# data[].attributes.body
Qué tanto sabe alguien se conoce como amplitud técnica. Esto y la capacidad de usarlo para resolver problemas particulares es muy valioso en un arquitecto.

# data[].attributes.body
Un arquitecto debe comparar los pros y contras asociados a cada opción y seleccionar la mejor dada la situación específica.

# data[].attributes.body
Un arquitecto debe tomar decisiones que combinen las capacidades con las limitaciones técnicas.

# data[].attributes.body
El arquitecto debe tener conocimiento del dominio del problema y una relación sana y colaborativa con los stakeholders del negocio clave.

# data[].attributes.body
Todo arquitecto debe programar y mantener cierto nivel de profundidad técnica.

# data[].attributes.body
POC o proof-of-concepts es otra forma de practicar programación en la que el arquitecto desarrolla ejemplos funcionales.

# data[].attributes.body
La creación de herramientas de línea de comando y analizadores que ayuden al equipo de desarrollo en tareas repetitivas es una buena opción para no perder la práctica.

# data[].attributes.body
Una buena forma de practicar la programación es delegar las partes críticas al equipo de desarrollo y enfocarse en piezas de funcionalidad del negocio.

# data[].attributes.body
Otra técnica para no perder la práctica es atacar historias en deuda técnica o trabajando en el arreglo de bugs.