DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
11 Monitoring and Observability Tools for 2023
Learn more

Bridging the Communication Gap Between Developers and Architects

What is an Architect? Every dev shop has a different interpretation. With this in mind, how do we facilitate communication between devs and architects?

Erik Dietrich user avatar by
Erik Dietrich
CORE ·
Mar. 14, 16 · Opinion
Like (6)
Save
Tweet
Share
5.00K Views

Join the DZone community and get the full member experience.

Join For Free

If you want to set off a ceaseless, spirited discussion, ask a roomful of people what makes some music good and other music bad.  The opinions are likely to be as spirited as they are diverse, with, perhaps, good points to be had.  But, consensus is unlikely.

If you want to see a similar dynamic in the software development world, ask a roomful of software developers what a software architect is.  What makes a person an architect?  Does the architect write code?  What kinds of decisions should an architect make?  What is the relationship between architects and developers?  Do developers report to the architect, or is it a “dotted line” reporting relationship?  Maybe they’re peers?  Do architects need to have a lot of domain knowledge?  Do architects need to be the best programmers (or, at least, have been at some point)?  You get the idea.

Go out and observe enough software shops in action, and you will see every different imaginable answer to these questions in every possible combination.  This fact alone lays seeds for myriad communication complexities between developers and architects.  In any shop, a developer is more or less a developer.  But, the architect role varies widely and, as developers move from company to company, this creates confusion.

Before going further down that path, let’s consider some things that are often true of a software architect.  And, I say “often true” because, as I just pointed out, the definition is fluid enough that it’s hard to pin things down definitively the way we might say, “software developers write computer programs.”

  • Architects tend to be the ones to make “big picture decisions” (which language/database/framework will we use?)
  • Architects tend to have more tenure at companies and more industry experience.
  • Architect tends to be a leadership role, meaning they supply either thought leadership, org chart leadership, technical leadership, or some combination.
  • Architects tend to have more face time with “the business” than developers.

What do all of these tendencies mean?  Well, simply put, they mean that architects have somewhat of a different area of focus than software developers.  Developers concern themselves primarily with the tactical, and architects concern themselves mainly with the strategic.  The concept of tactics versus strategy can be (perhaps over-) simplified to the idea that strategy is the “what” and tactics are the “how.”  If it comes to your personal finance, “diversification” may be the strategy and “spend X amount on stocks, Y on bonds, and Z on real estate” may be your tactics.

In a perfect world, the strategic and tactical planners operate in lockstep with a different focus.  The strategic planners establish the goals and vision and the tactical planners translate those goals and vision into an executable plan.  But, collaborating at different levels of granularity is an extremely hard problem to solve.  Most commonly, such as in the case of militaries or sports teams, the communication is simplified by giving absolute control to the strategic planner.  If the coach or the commander tells you to do a somersault, you simply do it without thought or hesitation, tactically executing the maneuver as crisply as possible.  This is at the heart of the command and control division of labor, and each level of the hierarchy becomes more strategic and less tactical.

In spite of repeated attempts by the industry to the contrary, however, this model tends to go poorly when it comes to knowledge work.  Asking software developers to operate in a purely tactical mode without understanding of or concern for the bigger picture produces profoundly bad results.  Massive graveyards of heavily templated, code-generated legacy applications speak to this.  Instead, software development goes more smoothly when architects communicate their strategic visions to the developers and the developers provide feedback based on tactical realities.

To give this a bit more concreteness, let’s say that I’m an architect and I have a vision for building some functionality with as little in-house code as possible to save on maintenance staff and costs.  Part of my strategic vision is, “let’s use a 3rd party web service to locate stores near the GPS coordinates supplied by our users.”  The developers involved then set about making this happen, but discover that the third party API is actually extremely unreliable and subject to frequent outages.  But let’s say that, as they’re discovering this by perusing Q&A sites like stack overflow, they happen upon an elegant solution to do it locally with almost no code.  This is the point where communication has to be able to flow the other way as well.  Knowledge workers at all levels need to be trusted to participate in strategy when it makes sense.

The question thus becomes, “how should communication between architects and developers occur?”  With two different areas of focus, how can each keep the other in the loop?  Well, here are a few critical pieces that can go a long way.

  • Automate.  Architects in many organizations lay out coding standards and architectural guidelines to be followed.  Automate enforcement of these via the build so that out of band effort isn’t required to check that things aren’t drifting.  If a guideline becomes a serious point of friction, it’s time to surface it to the architect.
  • Post strategic goals for all to see.  Goals like “keep in-house code to a minimum” shouldn’t be known only to a few.  Trust the people in charge of tactical work to understand the strategic backdrop and to execute it when they encounter ambiguity.
  • Make the architecture visible.  It’s one thing to hear an architect ranting and raving about dependencies or global variables or whatever.  It’s quite another when everyone can see the architecture degenerating into a big ball of mud, one haphazard dependency at a time.
  • Architects pair in from time to time.  Have the architects sit with the developers from time to time for a few hours here and there.  Write code together so that the the architects get a dose of the tactical friction every now and then to inform their strategic approach.

The suggestions I’ve listed here are by no means exhaustive, but they might help to bridge the communication gap between developers and architects.  Whatever the breakdown of work between developers and architects in your organization, there is no downside to having them collaborate as closely and efficiently as possible.  The more you can use tools at your disposal to facilitate that, the better.

Want to see how NDepend can help your architects and developers communicate?

Stago has provided a case study, and communication is one of the areas that improved greatly with NDepend. Click below to find out more.

See The Case Study

Architect (software) Software development

Published at DZone with permission of , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Test Design Guidelines for Your CI/CD Pipeline
  • Using GPT-3 in Our Applications
  • Little's Law and Lots of Kubernetes
  • 10 Easy Steps To Start Using Git and GitHub

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: