7 Habits of Highly Effective Software Architects and Developers

Written by bishr_tabbaa | Published 2017/08/19
Tech Story Tags: technology | project-management | habits | software-development | productivity

TLDRvia the TL;DR App

7 Habits of Effective Software Architects and Developers

Independence (Self)

  1. Understand Technology Holistically. Delivering technology solutions requires more than choices about just a programming language, SDK library, or infrastructure provider. What is the Big Picture? It means asking and answering good questions. It means having a comprehensive vision aligned with organizational capability (present and future) and thinking about security, performance, databases, operating systems, infrastructure (cloud vs. on-premise), availability, resiliency, networking, user interfaces, device access, monitoring, reporting, testing, product/project management, testing, support, customer requirements, change management, and much more. The system consists of the individual components and their relationships to each other; this includes Man and Machine. The whole matters beyond the sum of the parts.

2. Get Things Done. Balancing principle and practice is an art, not a science. This balance is situation dependent; focusing on delivering value to customers (doing the right thing at the right time) whilst giving attention to the system’s evolving architectural quality (doing things the right way). Use advanced CASE and IDE tools. Automate repetitive tasks such as regression tests, builds, and deployments. Be proactive — not reactive. Communicate effectively by email, telephone, IM, and also in person by facilitating and presenting information in groups. Use wikis to share information; use online backlogs to manage projects and tasks across the team.

3. First Things First. Prioritize what is important and weight tasks by “bang for the buck”; some call this being Agile or common sense. Do not get distracted. Some sprints may be user and customer focused; other milestones may center around building technology foundations or paying off technical debt. For frequently urgent or distracting matters, resolve the root cause so primary focus can return to what is truly important.

Interdependence (Others)

4. Care about Customers. Customers and the organizations we serve give us a purpose and are the reason we are compensated for what we do. We must listen to users, show empathy, understand their requirements, especially those expressed and obvious, but also surface those in which intent is uncertain and less well known. Once we understand, then we also need to be understood through careful communication about our designs and projects in language and symbols that are precise, mostly visual, and jargon free.

5. Collaborate with Others. The concept of the lone coder as a hero is mostly a myth. Big, important problems in most organizations require collaboration amongst different stakeholders and a win-win mentality rooted in the common values and practices of respect, humility, integrity, change, articulated decision rights and incentives.

6. Keep Things as Simple as Possible. Systems and People (and Life) can be complicated, but it does not have to be. By emphasizing core values over rigid rules, we can allow important systems and relationships to remain strong, flexible, and still aligned around what is important.

Continuous Improvement

7. Passion. Great developers and architects love what they do. You cannot teach it, fake it, or hide it. They enjoy sharpening their saw, sharing their excitement about making things better, and improving themselves and others around them.

Enjoy the article? Follow me on Medium and Twitter for more updates.

References


Published by HackerNoon on 2017/08/19