对 IT 技术岗位的一点思考 Thoughts on IT posts
Tags: technicalmanager, architect, seniorengineer, cto
Published: 2018-02-13 09:13:58

---
title: å¯¹ IT æŠ€æœ¯å²—ä½çš„ä¸€ç‚¹æ€è€ƒ Thoughts on IT posts
published: true
description: I noticed that people see IT positions differently and I wanna share mine. 
tags: technical manager, architect, senior engineer, CTO
---

åœ¨ä¸€ä¸ªæä¾›è½¯ä»¶äº§å“æˆ–äº’è”ç½‘æœåŠ¡çš„å…¬å¸ï¼Œé€šè¿‡åœ¨æŠ€æœ¯éƒ¨é—¨å¯¹ä¸åŒå·¥ä½œè®¾ç½®ç›¸åº”å²—ä½ï¼Œå°è¯•è®©æŠ€æœ¯å›¢é˜Ÿå‘æŒ¥å‡ºæœ€å¤§æ•ˆèƒ½ï¼ˆå‡ºå·¥ï¼‰çš„åŒæ—¶åˆ›é€ å‡ºæœ€å¤§ä»·å€¼ï¼ˆå‡ºæ´»ï¼‰ã€‚
In a company which provides software products or Internet services, we set different IT positions according to various jobs in the technical department, try to build an efficient and effective team and ultimately output the most valuable things.

æœ¬äººåœ¨ IT è¡Œä¸šå·¥ä½œæ•°å¹´ï¼Œå‘çŽ°ä¸å°‘å…¬å¸ï¼Œä¸å°‘äººç”šè‡³é«˜ç®¡å¯¹æŠ€æœ¯å²—ä½çš„è®¤è¯†æœ‰åå·®æˆ–é”™è¯¯ï¼Œæ•…å†™ä½œæœ¬æ–‡ï¼Œå°è¯•æ›´å‡†ç¡®åœ°æè¿°ä¸åŒçš„æŠ€æœ¯å²—ä½ï¼Œæˆ–è®¸å¯ä»¥å¸®åˆ°ä¸€äº›äººã€‚
I have been working in IT companies for a few years, unfortunately, I found many people, including company executives, misunderstand the duties of IT posts. This essay tries to describe various technical positions more accurately and hopefully, it could help someone.

###ç¨‹åºå‘˜ï¼Œè½¯ä»¶å·¥ç¨‹å¸ˆ Programmer, Software Engineer
[ã€Šæˆ‘ä»ç„¶æ˜¯ä¸€ååˆçº§å¼€å‘å‘˜å—ï¼Ÿã€‹](https://dev.to/clickclickonsal/am-i-still-a-junior-developer) å¯¹åˆçº§å’Œä¸­çº§ç¨‹åºå‘˜æ‰€åº”å½“å…·å¤‡çš„æŠ€æœ¯èƒ½åŠ›ç»™ä¸Žäº†åˆ†æžå’Œæè¿°ï¼Œæ‘˜å½•å¦‚ä¸‹ï¼š
The article "Am I still a Junior Developer?" analyzed and described technical abilities that a junior and middle-level developer should comprehend and master, excerpts are below.

####åˆçº§ Junior
* ç†è§£åŸºæœ¬ç¼–ç¨‹æ¦‚å¿µ
Understands basic programming concepts
* å¼€å‘ä»£ç æ—¶ä¸å¤ªè€ƒè™‘æ€§èƒ½å’Œå¯ç»´æŠ¤æ€§
Will produce code without keeping performance or maintainability in mind sometimes
* ä¼šä½¿ç”¨ç±»åº“å’Œæ¡†æž¶ï¼Œä½†å¹¶ä¸æ€»æ˜¯ç†è§£ç›¸å…³å·¥å…·å®žé™…åšäº†ä»€ä¹ˆä»¥åŠå®ƒä»¬æ˜¯æ€Žä¹ˆåšçš„
Can use libraries & frameworks but will not always understand what the tools are actually doing for them and/or howâ€™s it doing them.
* å³ä¾¿ä¸ç†è§£ï¼Œä¹Ÿä¼šä»Žç½‘ä¸Šï¼ˆæ¯”å¦‚ stackoverflow.comï¼‰æ‹·è´ä»£ç æ¥ä½¿ç”¨ï¼Œåªè¦è¿™äº›ä»£ç èƒ½å·¥ä½œ
Might copy & paste code from the web (such as Stack Overflow) without understanding it, if it just works
* å¶å°”ä¼šéœ€è¦å¯¼å¸ˆäºˆä»¥å¸®åŠ©
Will need occasional mentorship
* å·¥ä½œå—é˜»æ—¶ï¼Œæœ‰æ—¶ä¼šæ‹…å¿ƒåˆ«äººè®¤ä¸ºè‡ªå·±ä¸å¤Ÿå¥½è€Œä¸æ„¿å‘ä»–äººå¯»æ±‚å¸®åŠ©ï¼ˆä½ æ˜¯å¾ˆä¸é”™çš„ï¼Œå¯»æ±‚å¸®åŠ©å¾ˆæ­£å¸¸ï¼‰
Sometimes wonâ€™t ask for help when stuck because of fear thinking youâ€™re not good enough (You are good! Itâ€™s ok to ask for help ðŸ˜Š)

####ä¸­çº§ Mid-Level
* æ·±å…¥åœ°ç†è§£ä¸€é—¨æˆ–æ›´å¤šç¼–ç¨‹è¯­è¨€
Understands one or more languages more deeply
* ç¼–ç æ—¶æ€»ä¼šè€ƒè™‘æ€§èƒ½å’Œå¯ç»´æŠ¤æ€§
Will produce code with thinking about performance & maintainability
* ä½¿ç”¨å·¥å…·æ—¶ï¼Œç†è§£å®ƒä»¬åšäº†ä»€ä¹ˆï¼Œç»å¸¸ä¼šè€ƒå¯Ÿå·¥å…·æºç æ¥ç†è§£å…¶å·¥ä½œæ–¹å¼ï¼Œä¹Ÿä¼šå¯»æ‰¾ç¼ºå°‘æ–‡æ¡£çš„å·¥å…·çš„å…¶ä»–ç”¨æ³•
Understands what the tools are doing for them, digs into the source code often to understand how it works & also finds undocumented usage of tools.
* åœ¨è€ƒè™‘ä»Žç½‘ä¸Šæ‹·è´ä»£ç ä¹‹å‰ï¼Œä¼šå…ˆåŽ»ç†è§£å®ƒä»¬
Will understand code found on the Web before even thinking about copying & pasting the code.
* å½“å·¥ä½œå—é˜»æ—¶æ€»ä¼šåŽ»å¯»æ±‚ä»–äººçš„å¸®åŠ©
Will ask for help when they know theyâ€™re stuck (because asking for help is ok!)

####é«˜çº§ Senior
è¯´èµ·é«˜çº§ç¨‹åºå‘˜ï¼Œæœ‰æ—¶æˆ‘ä¹Ÿä¼šåƒ [Florian Rohrer](https://dev.to/r0f1) çš„ä¸€ç¯‡æ–‡å­—é‚£æ ·å‘å‡ºç±»ä¼¼çš„ç–‘é—®ï¼š[ã€Šä½ ä»€ä¹ˆæ—¶å€™å¯ä»¥è¯´å·²ç»æ‡‚å¾—ä¸€é—¨è¯­è¨€ï¼Ÿã€‹](https://dev.to/r0f1/when-can-you-say-you-know-a-language-6ll) å¯¹äºŽé«˜çº§ç¨‹åºå‘˜è€Œè¨€ï¼Œç›¸æ¯”äºŽåˆä¸­çº§ï¼Œâ€œé«˜â€åœ¨å“ªé‡Œï¼Ÿä»–æ˜¯å¦ä¸€å®šè¦åœ¨å„æ–¹é¢èƒœå‡ºï¼Ÿç­”æ¡ˆå¾ˆæ˜Žæ˜¾æ˜¯å¦å®šçš„ï¼Œé‚£ä¹ˆåº”å½“ä»¥æ€Žæ ·çš„æ ‡å‡†è¿›è¡Œè¡¡é‡å‘¢ï¼Ÿ
Speaking of a senior programmer, sometimes I would raise questions like Florian Rohrer asked in "When Can You Say You Know a Language?" Relative to junior & mid-level programmers, where can we find how "high" they are? Do they have to be head and shoulders above others in every aspect? Obviously, the answer is negative, but how could we measure it by what standards?

* ä»ŽæŠ€æœ¯çš„è§’åº¦å¯¹åˆä¸­é«˜åˆ’åˆ†ï¼Œå…¶æ€è·¯åº”å½“æ˜¯æ¨ªå‘+çºµå‘çš„ã€‚æ¯”å¦‚å¯¹ç¼–ç¨‹è¯­è¨€çš„è¯­æ³•ï¼ŒAPI çš„è®¤è¯†ï¼Œä¸ä»…è¦è€ƒå¯Ÿç¨‹åºå‘˜å¯¹å…¶å‡†ç¡®æ€§ã€ç›¸å…³æ€§ã€ä¼˜é›…åº¦è¿™æ ·çš„æ¨ªå‘è®¤çŸ¥ï¼Œä¹Ÿè¦è€ƒå¯Ÿå…¶å¯¹è¯­è¨€ã€API çš„å‘å±•åŽ†å²çš„çºµå‘è®¤çŸ¥ã€‚ä¹‹æ‰€ä»¥ä½œçºµå‘è€ƒå¯Ÿï¼Œæ˜¯å› ä¸ºè¿™æ ·èƒ½è¡¡é‡å‡ºå…¶å¯¹æŠ€æœ¯çš„å…³æ³¨åº¦ï¼Œæ˜¯å¦ä¼šå¯¹å‘å±•é€»è¾‘ä½œæ·±å…¥æ€è€ƒï¼Œä»Žè€Œå¯¹æŠ€æœ¯çš„èµ°å‘æœ‰ä¸€å®šçš„å‰çž»æ€§ã€‚çºµå‘çŸ¥è¯†åŒæ—¶ä¹Ÿè¡¨çŽ°å‡ºä¸€ä¸ªäººçŸ¥è¯†èŒƒå›´çš„å¹¿åº¦ï¼Œä¸ä»…ä»…æ˜¯æœ¬å­¦ç§‘é¢†åŸŸçš„çŸ¥è¯†ï¼Œä¹ŸåŒ…æ‹¬å…¶ä»–é¢†åŸŸã€‚
From the perspective of technology, we need to consider it horizontal & vertical when facing the three levels. For example, for grammar/syntax of programming language, understanding of APIs, not only do we inspect a programmer how he looks at both of the aspects of accuracy, relevance, gracefulness horizontally, but vertically inspect depths and the history of them. The reason why we inspect the vertical side is, we could measure how much he concentrates on them, whether he would think of the logic of development deeply, subsequently, make trends of technology with extraordinary foresight. In many cases "vertical knowledge" demonstrates how wide a technical personnel's knowledge he has, including various knowledge in other realms. 
* ä»ŽéžæŠ€æœ¯çš„è§’åº¦çœ‹ï¼Œä¸€ä¸ªæœ‰ç€å¹¿æ³›çŸ¥è¯†çš„ç¨‹åºå‘˜ï¼ˆæ¯”å¦‚è‰ºæœ¯éŸ³ä¹ä½“è‚²ç­‰ï¼‰ï¼Œå¾€å¾€èƒ½å€Ÿé‰´å…¶ä»–é¢†åŸŸå­¦ç§‘çš„æ¨¡å¼ã€è§£å†³æ–¹æ³•æ¥å®¡è§†å½“å‰é‡åˆ°çš„é—®é¢˜ï¼Œä»Žä¸€ä¸ªæ–°çš„è§†è§’â€œæ›´æœ‰åˆ›æ„åœ°â€è§£å†³é—®é¢˜ã€‚
From the perspective of non-technology, a programmer who masters wide knowledge, (art, music, sport, etc,.), he would probably learn patterns and solutions from other fields so that he could offer a solution more creatively with a new sight when dealing with problems.

[ã€Šå…³äºŽæ»¨é‡Žçº¯çš„è®¿è°ˆã€‹](http://blog.dyngr.com/blog/2013/09/26/junio-c-hamano-interview/)ä¸­è°ˆåˆ°æ˜Žæ˜Ÿç¨‹åºå‘˜çš„ä¸‰ç§å“è´¨ï¼š
Three virtues/characters a star programmer should have when interviewing with æ»¨é‡Žçº¯:
1ï¼Œæœ€é‡è¦çš„ç¬¬ä¸€ç‚¹æ˜¯ï¼Œèƒ½å¤ŸæŒä¹‹ä»¥æ’åœ°åšæŸä»¶äº‹ï¼›First and foremost, be persistent when you start something.
2ï¼Œæ‹¥æœ‰è‰¯å¥½çš„ç›´è§‰å’Œå“ä½ã€‚è‰¯å¥½çš„ç›´è§‰ï¼Œè¿™é‡Œæ˜¯æŒ‡é¢å¯¹ä¸€ä¸ªæ–°é—®é¢˜æ—¶ï¼Œå³ä½¿æ²¡æœ‰å®Œæ•´çš„è§£å†³é—®é¢˜ä¹Ÿèƒ½å¤Ÿå‡­ç›´è§‰æå‡ºæ­£ç¡®çš„è§£å†³æ€è·¯å’Œæ–¹å‘ã€‚Processing good instincts and tastes. Good intuition means that when we are facing a new problem, we could raise correct solution ideas and directions even could not solve the problem utterly.
3ï¼Œæ²Ÿé€šèƒ½åŠ›ã€‚è¿™ä¸ªæ²Ÿé€šèƒ½åŠ›ä¸æ˜¯è¯´åªè¦è¯´æ˜Ž â€œæˆ‘æƒ³åšä»€ä¹ˆâ€ å°±å¯ä»¥äº†ï¼Œè€Œæ˜¯èƒ½å¤Ÿè§£é‡Š â€œæˆ‘çš„ç›®æ ‡æ˜¯ä»€ä¹ˆâ€ ä»¥åŠæˆ‘å¾—å‡ºè¿™ä¸€ç›®æ ‡çš„æ•´ä¸ªæ€ç»´è¿‡ç¨‹ï¼Œå¹¶ä¸”æ›´é‡è¦çš„ï¼Œæ˜¯èƒ½å¤Ÿè®©å…¶ä»–äººä¿¡æœï¼Œç®€è€Œè¨€ä¹‹å°±æ˜¯èƒ½å¤Ÿå°†è‡ªå·±çš„ç›®æ ‡æ˜Žç¡®ä¼ è¾¾ç»™ä»–äººçš„äººã€‚Communication ability. This does not mean that it is sufficient if we tell others "what I want to do", but illustrate clearly "what is my goal" and the whole process how I formed the goal, and more importantly, make others convinced. In short words, it is an ability that we could articulate our purposes to other people.

###æŠ€æœ¯ç»ç† Technical Manager
æŠ€æœ¯ç»ç†çš„ä¸€ä¸ªæ˜Žæ˜¾èƒ½åŠ›ä½“çŽ°åœ¨å¯¹ç–‘éš¾æ‚ç—‡çš„è§£å†³ä¸Šï¼Œä»–èƒ½æ ¹æ®å‰ç«¯é¡µé¢å±•çŽ°å½¢å¼ï¼Œé—®é¢˜å‡ºçŽ°çš„æ¨¡å¼ï¼ˆå‡ºçŽ°æ—¶é—´ï¼Œé¢‘çŽ‡ï¼Œä½ç½®ç­‰ï¼‰ï¼ŒæœåŠ¡å™¨æ—¥å¿—ï¼Œé€ æˆçš„é”™è¯¯ç­‰é€æ­¥ç¼©å°é”™è¯¯èŒƒå›´å¹¶æœ€ç»ˆå®šä½é”™è¯¯æ‰€åœ¨ï¼Œå¦‚æžœç›´è§‰è¶³å¤Ÿå¥½ï¼Œç”šè‡³èƒ½ç²¾å‡†åœ°ä¸€æ¬¡æ€§å®šä½é—®é¢˜ã€‚ä»–çš„å¦ä¸€ä¸ªèƒ½åŠ›åœ¨äºŽçŸ¥é“åœ¨å“ªé‡Œä½¿ç”¨æœ€æ°å½“çš„æŠ€æœ¯ï¼Œè¿™å°†ç»™é¡¹ç›®ç®¡ç†å¸¦æ¥ç›Šå¤„ã€‚ä½œä¸ºä¸€åæŠ€æœ¯ç»ç†ï¼Œä»–ä¸å¯é¿å…åœ°éœ€è¦å¯¹ä¸‹å±žçš„æŠ€æœ¯èƒ½åŠ›æœ‰å‡†ç¡®çš„äº†è§£ï¼Œä»Žè€Œé€‚å½“åœ°å®‰æŽ’å·¥ä½œå¹¶è®¾ç«‹æµ‹è¯•ã€å®¡æ ¸çŽ¯èŠ‚ï¼Œä»¥é˜²æ­¢äº§å‡ºç³Ÿç³•çš„ä»£ç ã€‚
A remarkable ability a technical manager should have is how he/she troubleshoots an application. Based on the information from front-end page, the pattern a problem occurs(timing, frequency, position, etc.) Another ability could be he/she knows where to apply a technique in the most appropriate way, this would bring many benefits to project management. As a manager, he/she inevitably has to be well acquainted with each subordinate, subsequently could arrange tasks more precisely, set test or review operations, prevent from outputting unqualified codes.

###é¡¹ç›®ç»ç† Project Manager
åœ¨ä¸­å›½å¤§é™†ï¼Œå¾ˆå¤šè½¯ä»¶å¼€å‘å…¬å¸æˆ–éƒ¨é—¨çš„æŠ€æœ¯ç»ç†å’Œé¡¹ç›®ç»ç†æ˜¯åŒä¸€ä¸ªäººï¼Œè¿™é‡Œå½“ç„¶æœ‰æˆæœ¬çš„è€ƒé‡ï¼Œä½†æ›´å¤šæ—¶å€™æ˜¯æƒ³å½“ç„¶è€Œä¸ºä¹‹ã€‚è¯šç„¶ï¼Œä¼˜ç§€çš„äººæ‰å½“ç„¶å¯ä»¥èº«å…¼æ•°èŒï¼Œä½†å¯¹äºŽç›¸å½“å¤æ‚ï¼ˆé¢‘ç¹çš„éœ€æ±‚å˜æ›´ï¼Œé«˜äººå‘˜æµå¤±çŽ‡ï¼Œå¼€å‘äººå‘˜çš„æŠ€æœ¯æ°´å¹³å‚å·®ä¸é½ï¼Œå¤æ‚çš„ä¸šåŠ¡é€»è¾‘ï¼‰çš„ç³»ç»Ÿè€Œè¨€ï¼Œå°†ä¸¤è€…åˆ†å¼€å¾ˆå¯èƒ½æ˜¯æ›´å¥½çš„é€‰æ‹©ã€‚é¡¹ç›®ç»ç†å¯ä»¥ä¸“æ³¨äºŽé¡¹ç›®çš„è·Ÿè¸ªå’ŒæŽ¨è¿›ï¼Œä¸Žå…¶ä»–éƒ¨é—¨çš„è¿žæŽ¥ï¼Œç­‰ç­‰ã€‚
In mainland China, the technical manager and project manager are de facto the same person in many software companies or departments. Of course, the cost could be a major concern, but under many circumstances, it is due to a misunderstanding of software development. Admittedly, a talented personnel can have multiple job duties, but as for a considerably complex system, such as continuous requirements change, high staff turnover, different levels of developers' ability or complicated business logic, it would be better to separate into two distinct roles. As such, a project manager can focus on tracing and pushing a project, connecting with other departments, etc.

###æž¶æž„å¸ˆ Architect
è°å¯ä»¥æˆä¸ºä¸€åæž¶æž„å¸ˆï¼Ÿä»–å¿…é¡»å…·å¤‡æ€Žæ ·çš„æŠ€èƒ½ï¼Ÿ[ã€Šä¸€åè½¯ä»¶æž¶æž„å¸ˆçš„è§’è‰²ï¼ŒæŠ€èƒ½å’ŒèŒè´£ã€‹](https://dev.to/iriskatastic/the-role-skills-and-duties-of-a-software-architect-413) ä¸­å¯¹æž¶æž„å¸ˆè¿™ä¸ªå²—ä½è¿›è¡Œäº†è¯¦ç»†çš„æè¿°ã€‚
Who is eligible for an architect? Which skills should he/she grasp? The article "The role, skills, and duties of a software architect" elaborated on this subject.

åœ¨æˆ‘çœ‹æ¥ï¼Œæž¶æž„é™¤äº†åº”ç”¨åˆ°æŠ€æœ¯ä¸Šï¼Œè¿˜å¯ä»¥åº”ç”¨åˆ°ä¸ªäººã€ä¸šåŠ¡åŠå„ç§å…³ç³»ä¸Šã€‚å¯¹äºŽä¸ªäººè€Œè¨€ï¼Œå…¶æŠ€æœ¯çš„æŽŒæ¡ç¨‹åº¦ï¼Œç»éªŒçš„ä¸°å¯Œç¨‹åº¦ï¼Œå¯¹æ–°æŠ€æœ¯çš„çƒ­æƒ…ï¼ŒçŸ¥è¯†é¢çš„å¹¿åº¦ä¸Žæ·±åº¦ï¼ŒåŠæœ€é‡è¦çš„ï¼Œå¯¹å¾…â€œå­¦ä¹ â€çš„è®¤çŸ¥éƒ½æˆä¸ºå…¶â€œæž¶æž„â€çš„ä¸€éƒ¨åˆ†ï¼›å°±ä¸šåŠ¡è€Œè¨€ï¼ŒåŒ…æ‹¬ä¸šåŠ¡åŠŸèƒ½æ˜¯å¦è®¾è®¡çš„è¶³å¤Ÿæ¸…æ™°ï¼ˆé¿å…æ­§ä¹‰ï¼‰ä¸Žåˆç†ï¼Œä¸šåŠ¡çš„æ¿€åŠ±æœºåˆ¶çš„åˆç†æ€§ï¼Œæœ‰æ²¡æœ‰æŠŠäººå®‰æŽ’åˆ°ä»–æœ€é€‚åˆï¼ˆæ“…é•¿ï¼‰çš„ä½ç½®ï¼Œè¿™äº›éƒ½æ˜¯â€œæž¶æž„â€çš„ç”¨æ­¦ä¹‹åœ°ã€‚
In my opinion, not only can architecture apply to technology, but to an individual employee, business logic, etc. For an employee, the comprehension of his techniques, his relative experience, enthusiasm for new technology, breadth and depth of knowledge, and the most important part, the cognition to "learning" make up the whole notion of "architecture"; as for business logic, including whether business functions are clear enough(to avoid ambiguity) and reasonable, the rationality of incentive mechanism, is it proper to assign a task to an employee, in all these fields we could apply "architecture".

ä»¥ä¸‹é‡ç‚¹è®²æŠ€æœ¯æž¶æž„ã€‚I would like to share more about technology architecture.

####æŠ€æœ¯æž¶æž„çš„ç›®æ ‡ The purpose of technology architecture

* ä»ŽæŠ€æœ¯çš„è§’åº¦çœ‹ï¼Œè¦è¾¾åˆ°æŸä¸ªç›®æ ‡ï¼Œå…¶è¡¡é‡æ ‡å‡†å¯ä»¥ä»Ž [3 abilities](https://dev.to/fangdajiang/-abilities-8e1) è¿›è¡Œï¼› From the perspective of technology, we could measure an architecture with such 3 abilities to see if it could reach a goal;
* è¿›è€Œï¼Œå¯ä»¥é€šè¿‡æ‰€ä½¿ç”¨çš„æŠ€æœ¯ï¼ˆæ¡†æž¶ï¼‰å¯¹ abilities çš„æ”¯æŒç¨‹åº¦åˆ¤æ–­å…¶ä¼˜åŠ£ä¸Žé€‚ç”¨æ€§ï¼› Furthermore, we could determine a technology(framework)'s pros and cons or applicability by how it supports the 3 abilities;
* å†è¿›è€Œï¼Œå·¥ç¨‹å¸ˆå¯¹å…·ä½“æŠ€æœ¯çš„æŽŒæ¡ç¨‹åº¦æ¥å®‰æŽ’å²—ä½ã€‚Lastly, assign the most appropriate post to a software engineer according to his/her specific skills.

ä»¥ä¸Šåªæ˜¯ä¸€ä¸ªæ€è·¯ï¼Œè€Œè¡¡é‡ä¸€ä¸ªç³»ç»Ÿçš„æž¶æž„çš„ä¼˜åŠ£è¿˜æœ‰å…¶ä»–æ–¹é¢ï¼Œæ¯”å¦‚è¿™ä¸ªå›¾ï¼š
The above are only a few thoughts, there are many other aspects to consider when we are measuring a system's good and bad parts in terms of the architecture, like this mindmap:
![æž¶æž„è„‘å›¾](https://thepracticaldev.s3.amazonaws.com/i/69gqc1pvgeacmdi12jqk.png)
æ‰€ä»¥ï¼Œè¦è¯„ä¼°ä¸€ä¸ªæŠ€æœ¯çš„æž¶æž„æ˜¯å¦è‰¯å¥½ï¼Œåªè¦è¿™ 7 ä¸ªæ–¹é¢è¡¨çŽ°è‰¯å¥½äº†ï¼Œæž¶æž„å°±æ˜¯è‰¯å¥½çš„ã€‚
Therefore, to estimate if the architecture of a system is good or not, I believe that as long as such 7 aspects are good, it is good.

####æŠ€æœ¯ä¸Žä¸šåŠ¡çš„å†²çª Conflicts between technology and business
(to be added)

###CTO
_åˆ»æ„å¿½ç•¥äº†ä¸€äº›å·¥ä½œï¼Œæ¯”å¦‚å¸‚åœºï¼ŒæŠ€æœ¯å‰çž»æ€§ï¼Œä¸Žå…¶ä»–å…¬å¸çš„å…³è”ï¼Œç­‰ç­‰ã€‚
Some duties are ignored deliberately, relating to market, tech vista, connection with other companies, etc._

![CTO job](https://thepracticaldev.s3.amazonaws.com/i/r2jqgj0fifvvgkjujo92.jpg)
```sequence
Title: å·¥ä½œèŒè´£(duties)
äºº(employees)->äº‹(tasks): ä¼˜äºŽ(prior to)
Note over äºº(employees): æ‹›äººï¼Œè£äºº(recruit, lay off)ï¼›\né¼“åŠ±äººï¼Œå®‰æŠšäºº(build teams)
Note over äºº(employees): ç»“æž„ä¸Šå¯æ›¿æ¢\n(make replaceable)
äº‹(tasks)->æŠ€æœ¯(tech): ä¼˜äºŽ(prior to)
Note left of äºº(employees): å·¥ä½œèŒè´£åˆ†å¯¹å†…å’Œå¯¹å¤–ä¸¤éƒ¨åˆ†ï¼Œåœ¨å¯¹å¤–äº‹åŠ¡ä¸­ï¼Œ\nâ€œäº‹â€-â€œæŠ€æœ¯â€-â€œé‡‘é’±â€çš„ä¼˜å…ˆçº§åˆ«éœ€è¦è°ƒæ•´\n(priority adjustment on tasks,\ntech and money when \ndealing with outside events)
Note over äº‹(tasks): è®¾ç½®äº§å“æˆ–é¡¹ç›®çš„ä¼˜å…ˆçº§\n(set priorities for products, projects)
æŠ€æœ¯(tech)->é‡‘é’±(money): ä¼˜äºŽ(prior to)
Note over é‡‘é’±(money): åˆç†èŠ±è´¹(reasonable expense) > \nèŠ‚çº¦æˆ–è¿‡åº¦èŠ±è´¹(save or squander)
Note over æŠ€æœ¯(tech): åšäº§å“è€Œéžåšé¡¹ç›®ï¼›\næ–‡æ¡£ä¸€è‡´æ€§ï¼›å¼€æºè´¡çŒ®\n(do projects like a product;\ndoc sync; Open Source Contribution)
Note over äºº(employees),é‡‘é’±(money): éƒ¨é—¨åè°ƒï¼Œé¡¹ç›®\n(depts coordination, \nprojects accomplishment)
```