Tuesday, July 4, 2017

7 Habits of Highly Effective Architects and Developers

Independence (Self)

1.     Understand Technology Holistically.  Delivering technology solutions requires more than choices about just a programming language, system library, or infrastructure provider.  It means having a comprehensive vision aligned with organizational capability 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 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).  Where there is technical debt, be mindful and make plans to pay it off per some reasonable schedule.  Prioritize what is important and weight tasks by “bang for the buck”; some call this being Agile or common sense.  For frequently urgent or distracting matters, resolve the root cause so primary focus can return to what is truly important.

3.     Work Efficiently.  Use advanced CASE and IDE tools.  Automate repetitive tasks such as regression tests, builds, and deployments.  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.

 

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.  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, improving themselves and others around them.

 

References

https://blogs.msdn.microsoft.com/johnwpowell/2008/05/22/the-7-habits-of-highly-effective-developers/

https://www.stephencovey.com/7habits/7habits.php

http://www.goodprofitbook.com

http://tyrisias.blogspot.com/2016/12/principles-and-practices-sdlc.html

7 Habits of Highly Effective Architects and Developers

No comments: