程序員從初級走向資深的過程當中,會面臨兩個支路。程序員
技術主管,有些公司可能又叫「技術經理」,一我的的工做角色中至少有百分之五十以上的時間是花費在管理事務上,那麼他的角色纔算是一個經理(Manager)。因此技術主管(經理)相似產品經理屬於以經理命名倒是非經理的角色。面試
「技術主管」是開發團隊中的某位程序員須要對一塊兒建立系統的整個開發團隊負責時所承擔的角色。一般他既要對最終交付的軟件系統負責,另外也會像一個程序員同樣去開發實現系統。一個技術主管的 60% ~ 70% 的時間可能花在了開發任務分解分配、開發實踐、代碼審覈和風險識別上,而餘下的 30% ~ 40% 的時間則花在爲了保障系統按時交付所需的各類計劃、協做、溝通、管理上。和團隊管理者不一樣的是,技術主管的大部分管理工做都是針對具體研發任務和技術事務的。設計模式
技術主管實際相比團隊裏的其餘程序員對系統的視角更開闊,以更有策略和長遠的方式來考慮問題。他們即便擁有比團隊裏全部其餘程序員更高超的開發實現技能,對全部開發任務擁有最強大的實現自信,也須要轉變爲另外一種「藉助他人使之實現」的能力和自信,由於技術主管是一個承擔更普遍責任的角色,必然致使可以專一有效編碼的時間會相比之前減小不少,而這一點正是優秀程序員轉變爲技術主管的所面臨的最大挑戰之一。架構
總結下技術主管的職責要求:函數
和技術主管同樣,架構師也是一個在業界擁有著名的稱謂,但在絕大部分公司卻不屬於一個職位序列。工具
除了技術主管的技術職責以外,架構師還須要站在更高的緯度去作關於軟件系統的抽象和封裝。若是技術主管的抽象和封裝層次更多考慮的是語言函數、設計模式、代碼結構等這一類的事務,那麼架構師是站在總體軟件系統高度,考慮不一樣子系統之間的交互關係、技術的合理性、需求的完整性、將來的演進可能性,技術體系發展與組織、產品商業訴求的匹配度。post
架構師還承擔着在技術團隊和非技術團隊(例如:產品設計等團隊)之間的接口做用,明確產品的邊界,勾勒技術藍圖,協調不一樣技能的技術團隊協做,完成最終的軟件系統交付。這時架構師的角色就像服務化架構中的 API,定義了協做規範、交互協議和方式,但並不會聚焦在具體的實現上。編碼
架構師的職責要求:設計