自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員角色分類:團(tuán)隊(duì)里有兩類程序員

新聞
我和很多不同水平、有著不同變成習(xí)慣和思維方式的程序員一起工作過(guò)。雖然都是程序員,但是其職責(zé),技能要求,甚至思維方式都可能有很大的不同。

[[217072]]

程序員的分類

最近幾年,我在多個(gè)不同類型的項(xiàng)目上,以不同的角色工作過(guò):有時(shí)候會(huì)為項(xiàng)目前期做一些預(yù)研、然后為后續(xù)的交付估算工作量;有時(shí)候則在項(xiàng)目中期加入團(tuán)隊(duì),做本職的交付工作(就是寫(xiě)業(yè)務(wù)代碼);而另外有些時(shí)候則會(huì)幫助客戶的團(tuán)隊(duì)進(jìn)行能力建設(shè)等等。

由于要在不同的場(chǎng)景和不同的上下文中頻繁切換,我和很多不同水平、有著不同變成習(xí)慣和思維方式的程序員一起工作過(guò)。我覺(jué)得對(duì)于 程序員這樣一種角色,還可以再細(xì)化成兩大類。雖然都是程序員,但是其職責(zé),技能要求,甚至思維方式都可能有很大的不同。

這兩大類程序員分別為:

  • 原型類程序員(prototyper)
  • 產(chǎn)品類程序員(engineer)

原型類程序員

如果通過(guò)敏捷的方式來(lái)運(yùn)作一個(gè)項(xiàng)目,在項(xiàng)目開(kāi)始的時(shí)候,開(kāi)發(fā)往往需要客戶/用戶,BA(業(yè)務(wù)分析師)等角色一起協(xié)作。在有一個(gè)對(duì)需求的粗略梳理之后,通過(guò)技術(shù)手段快速實(shí)現(xiàn)應(yīng)用程序的原型,用以快速驗(yàn)證業(yè)務(wù)場(chǎng)景。由于對(duì)需求的梳理是較為粗略的,其中有很多待驗(yàn)證的假設(shè),如果按照傳統(tǒng)的方式來(lái)運(yùn)作,則會(huì)有很多不必要的浪費(fèi)

  1. 設(shè)計(jì)師通過(guò)Photoshop作出頁(yè)面
  2. 開(kāi)發(fā)根據(jù)PS文件來(lái)開(kāi)發(fā)
  3. 開(kāi)發(fā)的同時(shí),業(yè)務(wù)分析可能有了新的發(fā)現(xiàn)
  4. 設(shè)計(jì)師對(duì)Photoshop作出修改
  5. 開(kāi)發(fā)根據(jù)新的PS來(lái)做修改

這種重量級(jí)的, 瀑布 方式的工作體驗(yàn)非常糟糕,不論是設(shè)計(jì)師,還是開(kāi)發(fā),總覺(jué)得很多事情都在變化,自己花費(fèi)了很大力氣做的像素級(jí)別的精準(zhǔn)調(diào)整可能在第二天就要被推翻。不過(guò)現(xiàn)實(shí)世界就是這樣:需求的變化是不可避免的,我們唯一能做的是積極擁抱變化,而不是在最開(kāi)始就嘗試設(shè)計(jì)、實(shí)現(xiàn)完美的效果。

與其在一開(kāi)始就試圖設(shè)計(jì)一個(gè)完美的、確定的系統(tǒng),不如放棄幻想,每次只做簡(jiǎn)陋而可以示意的原型,然后不斷去迭代,最后達(dá)到可用的系統(tǒng)。

比如,如果設(shè)計(jì)師完全不使用 Photoshop ,也不產(chǎn)出任何的PS文件,而是和開(kāi)發(fā)坐在一起,開(kāi)發(fā)一個(gè)簡(jiǎn)陋,但是易于修改(比如HTML+CSS)的頁(yè)面,然后向業(yè)務(wù)分析師或者客戶來(lái)確認(rèn),然后根據(jù)反饋來(lái)快速調(diào)整。在迭代過(guò)程中,每次確認(rèn)之前,只做非常少量的工作,這樣既可以避免返工,又可以讓將來(lái)的調(diào)整更容易。

如果用這種方式來(lái)運(yùn)作,我們隊(duì)程序員的能力要求是這樣的:

  • 手速快(可以在很短時(shí)間內(nèi)作出一個(gè)可以工作的原型)
  • 技術(shù)廣博(前后端)
  • 可以與不同角色一起工作(最好是通過(guò)結(jié)對(duì)的方式)

比如通過(guò) python -m http.server 8080 來(lái)運(yùn)行一個(gè)Web服務(wù)器,而不是去考慮負(fù)載均衡或者HTTP緩存等,也無(wú)需考慮在為前端代碼加入動(dòng)態(tài)路由。

很有可能,一個(gè)在 <head> 里通過(guò) CDN 引入外部依賴,然后將所有代碼都寫(xiě)入 main.js 就可以讓我們的想法變成觸手可及的應(yīng)用,在建立起快速反饋的機(jī)制之后,就可以和我們的BA,甚至客戶一起來(lái)協(xié)作,并快速打磨原型,使之和客戶的期望契合。

原型驅(qū)動(dòng)

去年我參加了一個(gè)非常有意思的項(xiàng)目,在我加入的時(shí)候,客戶只有一個(gè)非常粗糙的想法:在網(wǎng)絡(luò)(不是計(jì)算機(jī)網(wǎng)絡(luò))中,如果某個(gè)實(shí)體被攻擊了,那么對(duì)整個(gè)系統(tǒng)的影響是什么?比如某個(gè)變電站由于氣溫太高爆炸了( 6·18西安變電站爆炸事故 ),那么哪些地鐵站會(huì)受到影響?以及收到多大影響?又或者某個(gè)運(yùn)營(yíng)商的網(wǎng)絡(luò)中斷了,那么它對(duì)該城市的各大銀行的轉(zhuǎn)賬業(yè)務(wù)有多大影響?

客戶希望有一個(gè)比較直觀的方式來(lái)展現(xiàn)網(wǎng)絡(luò)中的節(jié)點(diǎn),以及當(dāng)故障發(fā)生時(shí)會(huì)有什么樣的影響。我們從原型開(kāi)始,沒(méi)有設(shè)計(jì)師的參加,也沒(méi)有專門(mén)的業(yè)務(wù)分析師,一開(kāi)始只有有一個(gè)簡(jiǎn)單的文檔來(lái)描述,然后我根據(jù)文檔畫(huà)了一個(gè)草圖:

[[217073]]

和客戶確認(rèn)了,我用 bootstrap+leaflet 做了一個(gè)簡(jiǎn)單的頁(yè)面:

客戶表示大致是這么個(gè)意思。這時(shí)候我的代碼是這樣的:

  • 一個(gè)HTML文件
  • 從 CDN 來(lái)獲取 jQuery , bootstrap , leaflet
  • inline的script中寫(xiě)了一點(diǎn)微小的代碼
  • inline的css

確定了這就是客戶想要的效果之后,我做了一些簡(jiǎn)單的調(diào)整:

  • 將第三方依賴下載下來(lái),放到本地的一個(gè)目錄中
  • 將inline的 JavaScript 和 CSS 抽取到文件
  • 寫(xiě)了一個(gè)簡(jiǎn)單的shell script用來(lái)啟停本地的HttpServer

幾周之后,客戶對(duì)右側(cè)的兩個(gè)panel有一些新的需求,要求有一棵樹(shù),可以點(diǎn)擊,然后要做各種同步:

這時(shí)候,我的代碼還是幾個(gè)微小的jQuery寫(xiě)的文件,通過(guò)簡(jiǎn)單的事件機(jī)制來(lái)完成交互。很快,客戶有了一個(gè)新的需求:中間區(qū)域的圖中的非葉子節(jié)點(diǎn)要可點(diǎn)擊,點(diǎn)擊之后右側(cè)的一個(gè)panel顯示該節(jié)點(diǎn)下的所有葉子,同樣,右側(cè)panel中的節(jié)點(diǎn)也需要可點(diǎn)擊。

也就是說(shuō),中間的樹(shù)需要兩個(gè)不同的視圖,而背后的數(shù)據(jù)只有一份(這樣點(diǎn)擊時(shí)的展開(kāi)和收起才會(huì)是同步的),這時(shí)候用事件機(jī)制就很難做到了,而且代碼的復(fù)雜度直線上升,而且可維護(hù)性基本沒(méi)有。

基本滿足客戶的需求之后,團(tuán)隊(duì)里加入了兩位同事,這時(shí)候我做了一個(gè)比較大膽的決定,用vue.js將整個(gè)應(yīng)用重寫(xiě),將大部分功能都抽象為組件,方便以后的擴(kuò)展。完成的時(shí)候,界面看起來(lái)是這樣子的:

如果整理一下思路,原型類開(kāi)發(fā)的流程是這樣的:

  • 用 CDN +膠水代碼迅速實(shí)現(xiàn)
  • 及時(shí)與客戶溝通,并根據(jù)反饋修改
  • 在需求相對(duì)穩(wěn)定,方向確定之后,再做實(shí)際的技術(shù)選型
  • 重構(gòu) — 甚至重寫(xiě)(使用靠譜的技術(shù)站進(jìn)行)

比如上面這個(gè)項(xiàng)目,如果現(xiàn)在讓我再來(lái)做一次技術(shù)選型,我可能會(huì)這樣選擇:

  • 前端框架:React + Redux + React-router
  • 界面原型:AntDesign
  • 地圖:Leaflet
  • 可視化:D3

產(chǎn)品類程序員

另一方面,當(dāng) idea 已經(jīng)經(jīng)過(guò)驗(yàn)證,我們需要通過(guò)嚴(yán)謹(jǐn)?shù)墓こ虒?shí)踐將其產(chǎn)品化,那么對(duì)開(kāi)發(fā)的要求卻又有不同:

  • 非功能需求(安全/性能/容災(zāi)等)
  • 深刻而周全
  • 自動(dòng)化測(cè)試
  • 軟件架構(gòu)

我在去年的另外一個(gè)項(xiàng)目上,負(fù)責(zé)一個(gè)具體模塊的開(kāi)發(fā),一起在項(xiàng)目上有位同事,叫侯曉成。在 kick off 用戶故事(開(kāi)發(fā)和業(yè)務(wù)分析師,QA等角色一起確認(rèn)需求,進(jìn)入開(kāi)發(fā)階段之前的一個(gè)敏捷實(shí)踐)的時(shí)候,他常常可以把BA問(wèn)的答不上話來(lái)。

我們構(gòu)建的系統(tǒng)需要管理零售中的促銷活動(dòng),促銷活動(dòng)可以被多個(gè)不同的門(mén)店執(zhí)行,這些門(mén)店可能位于全球任何一個(gè)地方。這時(shí)候就會(huì)涉及促銷活動(dòng)開(kāi)始和結(jié)束的事件與時(shí)區(qū)的問(wèn)題。比如管理員創(chuàng)建了一個(gè)圣誕促銷,所有商品9折。但是由于時(shí)區(qū)的存在,各個(gè)國(guó)家的 圣誕節(jié) 并不是同一天,諸如此類的場(chǎng)景,在編碼是都要考慮到。

侯曉成會(huì)非常全面的考慮各種業(yè)務(wù)場(chǎng)景。另一方面,大的系統(tǒng)往往涉及多個(gè)集成點(diǎn),性能、安全,緩存的使用等等,都需要開(kāi)發(fā)人員在編碼時(shí)就考慮到。為了保證軟件的內(nèi)部質(zhì)量,程序員還需要有非常好的測(cè)試意識(shí)和寫(xiě)測(cè)試的習(xí)慣,不論是比較高層次的集成測(cè)試還是更底層單元測(cè)試。

除了交付本身,產(chǎn)品型程序員可能還會(huì)考慮這樣一些工程實(shí)踐,來(lái)保證產(chǎn)品從開(kāi)發(fā)到上線甚至到運(yùn)維的各個(gè)方面:

  • 持續(xù)集成、持續(xù)交付
  • 自動(dòng)化測(cè)試
  • DevOps

小結(jié)

毫無(wú)疑問(wèn),我們?cè)趯?shí)際項(xiàng)目中,這兩種程序員都是缺一不可,相互補(bǔ)充的。在需求還沒(méi)有完全明朗,需要快速驗(yàn)證市場(chǎng),探索業(yè)務(wù)方向的正確性,我們需要原型類程序員。他們通過(guò)和業(yè)務(wù)分析師,設(shè)計(jì)師等角色一起工作,可以快速且輕量級(jí)的迭代出產(chǎn)品的原型。而一旦市場(chǎng)基本確定,我們就需要產(chǎn)品型程序員的幫助,將產(chǎn)品的開(kāi)發(fā)、測(cè)試、部署、運(yùn)維整個(gè)生命周期都規(guī)范化,引入相對(duì)重量且長(zhǎng)期的工程實(shí)踐,這樣產(chǎn)品在后續(xù)的迭代中才可能保持非常高的內(nèi)部質(zhì)量。

責(zé)任編輯:張燕妮 來(lái)源: icodeit
相關(guān)推薦

2013-08-20 09:33:59

程序員

2012-03-06 09:22:46

程序員

2009-05-21 15:58:12

程序員工作經(jīng)驗(yàn)職場(chǎng)

2011-05-13 14:34:02

程序員

2015-04-10 19:37:34

程序員

2022-03-16 11:10:19

程序員社區(qū)技術(shù)

2020-07-17 09:55:11

程序員技能開(kāi)發(fā)者

2017-11-14 21:30:15

2018-04-23 11:00:06

程序員養(yǎng)生健康

2012-11-22 14:00:26

程序員

2011-06-02 09:56:21

程序員團(tuán)隊(duì)精神

2010-09-01 11:06:16

程序員

2015-08-11 14:45:51

程序員

2013-07-12 10:58:16

程序員

2019-09-25 11:39:07

程序員編程技術(shù)

2009-11-04 11:41:01

程序員職業(yè)感悟軟件開(kāi)發(fā)

2012-05-10 13:31:48

程序員開(kāi)發(fā)者

2015-04-08 15:38:17

程序員程序員差距

2018-10-10 15:52:48

程序員代碼編程

2013-04-15 10:55:09

程序員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)