程序員成長为架構師必備的十項技能

程序員成長为架構師必備的十項技能

時間:2011-08-28 13:06來源:Internet 作者:Internet 點擊: 2735 次

不是每一個程序員都能夠成为一個架構師——這是開發界廣为流傳的一個論調。架構師群體往往對這個言論表示默許,這不得不令廣大入門不久的程序員們懷疑架構師們是不是隱藏了什


 

   一、卓越的程序員

    1、每個好架構師都是一位出色的程序員

     架構師,聽起來是如此神秘的一個稱號。尤其是在開發領域剛入門不久的菜鳥級程序員眼中,架構師都是高手,都是牛人,都是如此高高在上的存在。

    不過,在搞了四、五年編程之後,程序員們往往早已失去了當年對這些“高級”職位的神秘感,甚至會對自己所在項目的架構師抱怨不已,背後裏稱他們是一群水王。所以有江南白衣曾撰文述說:“國內的架構師到了三十歲以後很多就往理論上跑,而國外的架構師在往上發展的同時保持下面的編程體驗,所以國內多水王,而國外則多大師。”

這就是我們今天這篇文章的論題:一個優秀的軟件架構師,首先一定是一個出色的程序員。

這句話按照Fred George先生的話來說,那就是“不編程的架構師的職業生涯是短暫的”。他說這句話的背景主要是針對有些架構師的設計與實現有斷層的問題而言的,因为如果架構師不去實踐,只是想當然的認为“沒問題,這個想法能實現”,那麼對於項目的落實而言是個很大的隱患。支付寶架構師馮大輝也表示過,架構師是一個比較“虛”的崗位,主要的問題都在“落地”的過程中。

 

而一個架構師確認一個想法究竟能不能落地的最直接的方法,就是自己編寫代碼,嘗試“實現一個系統最難實現的一部分”(Fred George)。看看Fred,他自己就是最好的示範:年紀一大把了,仍然每天都在編寫代碼。事實上,我們可以列舉出一個長長的頂級架構師的列表,你會發現他們沒有一個不是頂級的程序員。

 
我們可以列舉出一個長長的頂級架構師的列表,你會發現他們沒有一個不是頂級的程序員

不過這在邏輯上或許沒有多少說服力,因为似乎這並不能證明一位資深架構師憑自己的經驗感覺不能夠知道一個想法能不能落實。如果你覺得上面這些只是某些西方老頭兒對編程的古怪癖好,那麼不妨看看eBay的架構師Randy Shoup先生是如何總結架構師在項目中的職責的:

1. 產品團隊要做一個新產品,架構師開工了。架構師要幫助產品團隊把可行性、技術需求以及權衡取舍等因素一一剖析清楚。

2. 技術需求出來了,架構師的主要工作開始了:設計整體的技術實現步驟。Randy在後面補充說“大多數成功的架構師都喜歡與其他團隊成員一同完成架構和設計這一塊的工作”,而認为自己應獨自完成這個步驟則是新手架構師常見的誤區。

3. 與開發團隊一起,完成設計與實施的細節

4. 與開發團隊和運維團隊一起,完成部署的過程

5. 與運維團隊一起,進行部署之後的維護和故障排除

在這個過程中,一個架構師至少有一半以上的工作是需要與開發團隊一起進行的。按照Randy的描述,這是“一個架構師不能將實施細節拋之腦後”的體現。而且與開發團隊一起工作,命令式的領導方式並不被推崇,一個架構師必須通過自己的個人影響力來對開發團隊進行指導工作。而什麼是影響力?說的直白一些,就是通過自己寫代碼以及和其他成員一起寫代碼,來指導團隊成員實現每個架構細節的思路。

 

只要稍微思考一下,就會明白此舉的重要性。如果一個架構師靠命令管理開發團隊,告訴他們“要實現這個模塊”,“要實現那個功能”,而團隊也嘗試照辦。可是或許是架構師的要求太高了,或許是團隊的開發實力不夠,團隊成員便會向架構師求助:您看這個我們不知道如何實現,您能否指導一下?架構師可能知道怎麼處理,也可能沒有仔細思考過這個問題,但又覺得自己做大事者不拘泥於小節也,於是一皺眉頭扔下一句:這是你們的事,你們自己解决!

然後就是矛盾的開始了。架構師只覺得團隊技術不夠,而團隊則對架構師愈發不滿。項目黃了不說,開發團隊中也會傳出各種說法,比如說“此君其實是個一行代碼也不會寫的大忽悠!”

綜上所述,便映證了Fred的那句斷言:“不編程的架構師的職業生涯是短暫的”。一個架構師不僅要會寫代碼,還必須要能夠寫出自己設計的系統中最難實現的那段代碼。這样他才能夠放心的把“落地”的這個重擔交给開發團隊來做。

讓我用Fred的這句話做为本篇的總結:“一個架構師的價值在於,他不僅能看到系統的美,而且能夠在建造系統的時候能夠把這些美創造出來。”

是的,每個好架構師都是一位出色的程序員。

时间: 2024-08-03 01:36:55

程序員成長为架構師必備的十項技能的相关文章

以武學的視角來戲說.NET程序員的倚天之術

程序 一個好的程序員是不會只和一家大公司的技術綁在一起的﹐也不會只知道一種Language. 這裡有很多.NET程序員﹐我就拿.NET程序員來舉個例子..NET是微軟的技術﹐這是與"不只和一家大公司的技術綁在一起"的原則相違背了﹐但只要你能有意識地去發覺Programming的真諦﹐你仍然可以從禁錮中投得一些光亮﹐從而一窺"九陰真經". 我們看看﹐有什麼東西是.NET程序員可以掌握並且可倚仗十年而不管微軟存在與否的技術呢? 1. XML.不是.NET裡那些XML A

C#的B/S架構中水晶報表

问题描述 C#的B/S架構中水晶報表,第一次導出數據正常,第二次導出時提示找不到報表路徑,路徑變成第一次保存數據時的路徑,如何解決? 解决方案 解决方案二:你要设置绝对路径,不要设置相对路径解决方案三:​你可以联系一下客服问一下,我有什么问题都是咨询finereport的客服的,要不就去论坛找高手回答你也可以试试看.解决方案四://下面是执行导出功能的代码:privatevoidlbtn_IEPrint_Click(objectsender,System.EventArgse){if(lbtn_

xcode-linux的C程序交叉编译成iOS7+ 的静态库

问题描述 linux的C程序交叉编译成iOS7+ 的静态库 我想将linux上已经验证过的C程序,交叉编译为iphone上的静态库, linux上使用的编译工具gcc,ar, iphone交叉编译我使用的是xcode 7.1.1, 在xcode sdk里,找到了metal,clang,metal-ar等编译工具 问题1:编译工具的对应关系 是不是gcc对应clang,metal ar对应metal-ar? 问题2: clang与mental有什么区别,应该使用哪个? 解决方案 http://bb

使用srvany.exe将程序安装成windows服务的详细教程

srvany.exe介绍 srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说srvany只是其注册程序的服务外壳,这个特性对于我们 来说非常实用,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等. 资源下载 你可以通过下载并安装Microsoft Windows Resource Kits 获得或者直接在本文

win7系统开始菜单程序显示成条目数量的解决方法

  win7系统电视在使用的时候,我们打开程序都会有记录在大家的菜单栏目中,这个是为了让大家下次再次使用这个程序的时候方便,直接点击就可以打开了,在使用过多的程序以后就会显示狠毒的记录,看起来就非常的乱那么有些用户就必须要删除一些程序,那么很多都觉得有用的程序又不想禁用这个功能,那么该如何让显示数量设置为自己想要条数呢,今天就由小编来为大家解决这个问题吧! 设置多条程序显示的具体方法如下: 1.大家打开开始菜单,就在左下角的图标点击,右键选择里面的属性选项,接着大家切换进入任务栏中和开始菜单的设

将Spring Boot程序打包成docker镜像-超简版

将Dockerfile和你的spring boot编译好的jar放在一个目录底下   Dockerfile: Java代码   FROM ingensi/oracle-jdk:centos6-7u65      MAINTAINER wiselyman      ADD platform-0.0.1-SNAPSHOT.jar /app/      WORKDIR /app/      EXPOSE  8888      CMD ["java","-jar",&quo

红外解码-大神求助,请帮将下面的51程序12M晶振控制的程序调成22.1184M晶振控制的程序

问题描述 大神求助,请帮将下面的51程序12M晶振控制的程序调成22.1184M晶振控制的程序 /*----------------------------------------------- ???????????????÷ ------------------------------------------------*/ #include //°ü???·????????°??é?????è?????????·????°ü???????????????÷???¨?? sbit SSR=P

c++-求大神帮我把这机构化的C++程序改成C++面向对象的程序,有酬谢(单项选择题标准化考试系统)

问题描述 求大神帮我把这机构化的C++程序改成C++面向对象的程序,有酬谢(单项选择题标准化考试系统) #include<stdio.h>#include<stdlib.h>//应用动态存储分配函数//#include<time.h># define LEN sizeof(struct question)struct question{ char ask[200];//选择题题目// char answer[4][80];//选择题选项每个答案的长度// int rig

VS2012的Windows Service程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等……

问题描述 VS2012的WindowsService程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等-- 解决方案 解决方案二:windowsservice安装过程中,不光是复制可执行文件,很关键的一步是需要自定义的,就是注册服务,并且启动服务.注册要用到installutil,启动就用netstartxxxxxx解决方案三:我是用这种方法配置打包的,以前有个项目也是按这种方法配置打包成功运行没有问题,不知道这次是怎么回事http://bl