Job Description For A Software Architect

When I graduated from Berkeley with a computer science degree in 1992, I just wanted to write code. The professor at the time whom I admired the most was a super C hacker who loved to use C pre-processor to build super macros. I would sometimes pass by his desk and just listen to his keyboard flying, typing code non stop. He was my hero at the time. The ability to think about code and type without stopping, what a gift!

After 18 years in the computer industry, I’ve written a lot of code in C, Perl, PHP, C++, Assembly, Pascal, Fortran, Java. The languages themselves were picked to fit the particular job at the time and my job responsibility was pretty simple. Build software, write code.

Now my job at Yahoo! is a Senior Principle Architect and I am no longer judged on the code I write, but on other aspects that are not particularly easy to measure immediately, but usually surface 1-2 years after a system is built. This year, I’ve lead a team to design and rebuild Yahoo! Media’s content system. While the system has launched, I am curious whether the system itself meets all of the criteria below. I have also been reflective on how well I’ve carried out my job description.  Of course, one other factor why I’m reflective: I am also writing my own self assessments and 18 other peer reviews this year.

Officially, my job summary is as follows.

  • Responsible for the technical designs of products and infrastructure
  • Balances the need for deliverables to meet customer requirements, to be built on time with the available resources and to comply with principles such as modularity, scalability, testability, availability, operability, security and global deployability.
  • Communicates about designs through the use of tools such as logical system diagrams, sequence diagrams, entity relationship diagrams, standards documents and formal interface specifications
  • Organizes, drives clarity and reduces the complexity involved in the implementation work of engineers and other architects
  • Works across organizations: responsibilities typically extend beyond hard-line reporting relationships
  • Advances the state of the art of technology and does enough implementation to keep current with technology trends inside and outside the company
  • May be responsible for technology strategy, including vision, mapping customer needs to technical solutions, competitive analysis, third party technology evaluation, organizational alignment and evangelization