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

程序員世界常見的6個(gè)問(wèn)題

開發(fā) 后端 前端
我作為CTO已經(jīng)有一段時(shí)間了。在這個(gè)工作崗位上,我不但制定準(zhǔn)則,還帶領(lǐng)團(tuán)隊(duì)、管理項(xiàng)目、設(shè)計(jì)架構(gòu)、組織工作、制定代碼審查、調(diào)查不同的問(wèn)題、研究各種解決方案、結(jié)識(shí)許多技術(shù)人員和聯(lián)系客戶等等等等,做了很多事。

我作為CTO已經(jīng)有一段時(shí)間了。在這個(gè)工作崗位上,我不但制定準(zhǔn)則,還帶領(lǐng)團(tuán)隊(duì)、管理項(xiàng)目、設(shè)計(jì)架構(gòu)、組織工作、制定代碼審查、調(diào)查不同的問(wèn)題、研究各種解決方案、結(jié)識(shí)許多技術(shù)人員和聯(lián)系客戶等等等等,做了很多事。

在完成這些任務(wù)的過(guò)程中,我不但學(xué)到了很多不同的技能,并得出了很多觀察結(jié)果,想與大家分享。

本文針對(duì)的是***技術(shù)官和開發(fā)人員,因?yàn)榭赡懿⒉皇敲恳粋€(gè)人都碰到過(guò)我下面發(fā)現(xiàn)、學(xué)習(xí)并得到解決的問(wèn)題。

[[145015]]

問(wèn)題1:“我不熟悉X技術(shù)/工具”

這是每次在我要介紹新技術(shù)和語(yǔ)言的時(shí)候,最常聽到一句話。也是在我要求某人用一種他們不認(rèn)識(shí)的工具準(zhǔn)備一個(gè)概念證明時(shí),非常耳熟的一句話。

這讓我很驚訝,為什么呢?因?yàn)槲艺J(rèn)為程序員都是高智商的!學(xué)習(xí)一些新的東西,新的理念、模式和架構(gòu)對(duì)于他們來(lái)說(shuō)難道不是一件很容易的一件事嗎?難道他們不應(yīng)該不斷學(xué)習(xí)新的東西,關(guān)注***的消息嗎?

可能這只是一種假象?也許我們?cè)缇蜐M足于我們以前學(xué)會(huì)的東西,并不想轉(zhuǎn)變?也許真相是,我們已經(jīng)喪失了進(jìn)取心,不想發(fā)展了?也有可能是我們沒有時(shí)間學(xué)習(xí)新的東西?

一段時(shí)間后,我要求對(duì)方完成的任務(wù)做好了。他們做到了,他們交付了。最初的猶豫最終被克服了。又掌握了一些新的東西。那么,一開始缺乏動(dòng)力的原因是什么呢?

我認(rèn)為這是因?yàn)楹ε?,害怕陌生的東西,害怕失敗。做自己已經(jīng)會(huì)的東西,總讓人感覺得心應(yīng)手,這是因?yàn)槲覀冎浪覀冋J(rèn)為這是我們擅長(zhǎng)的。但問(wèn)題是,我們也可以擅長(zhǎng)別的東西,只要我們需要它,肯去了解它,用之前相同的完成方式去學(xué)去做。

問(wèn)題2:“一開始就想太多”

這是我在啟動(dòng)新項(xiàng)目時(shí)看到的最常見的問(wèn)題之一。開發(fā)人員之所以覺得加入已工作的應(yīng)用程序會(huì)更舒心,是因?yàn)樾枰龅臎Q策會(huì)少很多。而開始一個(gè)新項(xiàng)目則不同。我們需要作出決定,并優(yōu)先考慮需求是什么以及***能夠具備的特點(diǎn)。

[[145016]]

***的失敗是在實(shí)現(xiàn)中,例如,在一開始的身份驗(yàn)證時(shí)。這是不是應(yīng)用程序最重要的特點(diǎn)?要不要關(guān)注安全?No,大錯(cuò)特錯(cuò)。

我們應(yīng)該盡可能地縮小范圍。我們應(yīng)該提供MVP來(lái)展示概念驗(yàn)證。我們應(yīng)該提供基本的商業(yè)規(guī)則,應(yīng)用程序的核心功能,而非著眼在性能、分頁(yè)、超安全認(rèn)證和極度可擴(kuò)展性上面。要簡(jiǎn)單化,至少在一開始的時(shí)候。

如何做到這一點(diǎn)?我覺得與客戶的談話是至關(guān)重要的。這是他們投資的錢,我們需要拿他們的薪水。我們不希望浪費(fèi)自己的資金,客戶也是。我們應(yīng)該一起討 論什么重要,什么應(yīng)該提交給他們的潛在客戶或投資者。我們不需要關(guān)注那些不能讓別人將我們的應(yīng)用程序區(qū)分出來(lái)的事情,如登錄/注冊(cè)功能,更改電子郵件或刪 除帳戶。

問(wèn)題3:“沒有選擇一個(gè)合適的工具”

我和不同的公司談過(guò)很多次關(guān)于他們的開發(fā)堆棧。有時(shí),他們會(huì)使用Ruby做一些非常花里胡哨的,并行的和分布式的事情。當(dāng)我問(wèn)他們?yōu)槭裁礊檫@個(gè)要求 苛刻的進(jìn)程選擇這么個(gè)相對(duì)低效的語(yǔ)言時(shí),他們的答案是——所有的開發(fā)人員都知道Ruby是***的。理所當(dāng)然這是最快,也顯然是最廉價(jià)的方法。事實(shí)上他們并 沒有關(guān)于可維護(hù)性的長(zhǎng)遠(yuǎn)目標(biāo)。他們專注于價(jià)格和便利。這導(dǎo)致他們背負(fù)了巨大的技術(shù)債務(wù),并且可能會(huì)成為很多黑客行為實(shí)現(xiàn)的既定目標(biāo)。

還有一件事是,我多次看到開發(fā)人員在他們熟悉商業(yè)規(guī)則之前就選好了技術(shù)堆棧。我看到很多動(dòng)力十足的開發(fā)人員也一般無(wú)二。他們是如此熱衷于立馬啟動(dòng)開發(fā)和利用所有***的框架。他們認(rèn)為無(wú)論要做什么系統(tǒng),要解決什么問(wèn)題,都可以用他們已經(jīng)選好的數(shù)據(jù)庫(kù)和語(yǔ)言。

在這樣的情況下該怎么辦呢?我的高招是去招聘懂得不同技術(shù)的開發(fā)人員。在熟悉了這個(gè)問(wèn)題并使用案例后,我們可以討論我們知道或不知道的工具的利弊。 洞察現(xiàn)在市場(chǎng)上正在發(fā)生什么,什么框架和語(yǔ)言受歡迎,這些框架和語(yǔ)言能解決什么問(wèn)題,是一件好事。堅(jiān)持一個(gè)每個(gè)人都知道的工具,而不是為每個(gè)用例制定解決 方案,可能會(huì)成為開發(fā)過(guò)程中的痛腳。

問(wèn)題4:“重新發(fā)明輪子”

這個(gè)問(wèn)題涉及到有的開發(fā)人員不夠熟悉他加入的項(xiàng)目。這在我審查別人的代碼時(shí)時(shí)有發(fā)生。我經(jīng)常問(wèn):“你看到那個(gè)類/模塊/功能了嗎?它跟你的實(shí)現(xiàn)完全一樣”。這常見于那些沒有好好瀏覽代碼的開發(fā)人員。他們沒有看到,有些功能不拘在哪里提取,都是可重用的。

[[145017]]

特別是當(dāng)我們遵循一些共同的模式、準(zhǔn)則或架構(gòu)時(shí),尤其如此。極有可能其他的開發(fā)人員已經(jīng)在別的地方解決了這個(gè)問(wèn)題,或者已經(jīng)提取和抽象好了我們現(xiàn)在需要的某個(gè)功能。

為了避免這類問(wèn)題,我們應(yīng)該用一種明智的方式實(shí)現(xiàn)更多的代碼審查。我們不應(yīng)該檢查是否對(duì)齊括號(hào),或添上缺少的逗號(hào),而是應(yīng)該通過(guò)一些智能自動(dòng)化的工 具進(jìn)行檢查。我們應(yīng)重新審視業(yè)務(wù)邏輯和行為。一段時(shí)間后,我們會(huì)想:“哦,Kamil已經(jīng)實(shí)現(xiàn)過(guò)了,我用一下他的模塊就可以了。”

問(wèn)題5:“學(xué)習(xí)語(yǔ)法不是編程”

我見過(guò)兩個(gè)組的開發(fā)人員。

***組是優(yōu)秀的程序員。他們知道他們所使用的編程語(yǔ)言的各個(gè)方面知識(shí),他們知道整個(gè)標(biāo)準(zhǔn)庫(kù),和很多很多第三方工具。他們知道如何用8種方法寫循環(huán), 如何使用模式匹配和他們可以使用的所有語(yǔ)法。問(wèn)題是,他們不知道架構(gòu)和范例。他們的代碼是命令式的,他們不會(huì)提取小功能,也不會(huì)處理封裝和單獨(dú)的不同層或 模塊。他們只會(huì)寫代碼。

第二組是非常棒的工匠。他們是真正的建筑師,他們會(huì)模型化應(yīng)用,各自負(fù)責(zé)提取組件,遵循格式和設(shè)計(jì)有效流。他們只是不會(huì)寫代碼。有時(shí)他們將太多的時(shí) 間花在了設(shè)計(jì)上,他們使用的是低效率的算法,廢棄的功能,過(guò)時(shí)的庫(kù)等等。也許架構(gòu)是可靠的,工作流程是強(qiáng)大的,但是代碼本身卻既丑陋又難以閱讀。

問(wèn)題出在哪里?***種情況可能是因?yàn)殚_發(fā)人員只讀他們使用的語(yǔ)言的相關(guān)編程書籍。這就像只學(xué)習(xí)語(yǔ)法而不學(xué)其他。我們以為我們知道了語(yǔ)法之后就可以編 程。其實(shí)我們只會(huì)寫代碼。第二種情況則是因?yàn)殚_發(fā)人員沒有去看維護(hù)者或創(chuàng)造者發(fā)布的工具和語(yǔ)言的新版本。這一組的程序員不閱讀更改日志,也不看新聞和簡(jiǎn) 訊。

[[145018]]

如何解決?項(xiàng)目中這兩種類型的人都要有。相互學(xué)習(xí),這樣才能既讓大家滿意,又獲利***。

問(wèn)題6:“無(wú)視模式”

當(dāng)你進(jìn)入一個(gè)已經(jīng)擁有堅(jiān)實(shí)基礎(chǔ)的項(xiàng)目中,那么很可能它遵循某些規(guī)則和指引。因?yàn)橥ǔG闆r下,開發(fā)人員要保證每個(gè)應(yīng)用程序有一個(gè)約定,以使其易于閱讀和理解。

不幸的是,很多人在剛開始編碼時(shí),往往看不到持續(xù)開發(fā)中內(nèi)置的現(xiàn)有算法。他們會(huì)使用不同又沒有必要的方法來(lái)兼容現(xiàn)有的方法。

我們總是興致勃勃地提供新的功能,我們不想在觀察目前的趨勢(shì)和模式上面浪費(fèi)我們的時(shí)間。于是我們無(wú)視了既定的規(guī)則,引進(jìn)我們自己的習(xí)慣,從而打破一致性。

這是不好的嗎?不總是。有時(shí),特別是當(dāng)更多有經(jīng)驗(yàn)的開發(fā)人員加入團(tuán)隊(duì)時(shí),這么做反而會(huì)化腐朽為神奇。他們會(huì)教其他人如何構(gòu)建應(yīng)用程序,并分享他們的 知識(shí)。有時(shí),它可以為現(xiàn)有的架構(gòu)帶來(lái)新的視圖,并改善很多已有的概念。但是事實(shí)上,上面這些情況很少發(fā)生。大多數(shù)的時(shí)候,新的開發(fā)人員往往會(huì)給大項(xiàng)目引進(jìn) 麻煩。

那么解決方案是什么?引進(jìn)是必要的。但是我們不應(yīng)該要求盡快提供新的功能,而應(yīng)該先讓人好好研究既定的規(guī)則。我們應(yīng)該任命一名主管,讓他在開始的時(shí)候指導(dǎo),讓他掌握所有的概念。

總結(jié)

在編程世界中存在著許多問(wèn)題。我們每個(gè)人都有著不同的技能,不同的能力和動(dòng)力來(lái)源。我們應(yīng)該互相溝通,共同解決問(wèn)題,權(quán)衡利弊。

學(xué)習(xí)是關(guān)鍵。自我發(fā)展應(yīng)該永不止步。如果我們不這樣做,就會(huì)歸為壞程序員。我們的工作要求我們不斷地學(xué)習(xí)和了解新的東西。
可以讀書,可以結(jié)對(duì)編程,可以訂閱時(shí)事通訊,也可以寫博客。

方法很多很多,我們只需要選擇最適合我們的。

責(zé)任編輯:王雪燕 來(lái)源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2013-06-14 11:16:14

2011-06-15 08:39:10

程序員

2015-10-30 09:49:30

2020-12-29 11:06:46

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

2013-08-01 10:03:41

程序員

2015-02-05 13:51:25

程序員

2018-03-06 10:32:51

程序員代碼開發(fā)

2015-02-02 10:13:43

程序員

2021-01-12 22:33:57

程序員開發(fā)編程

2021-02-05 17:42:44

Java程序員開發(fā)工具

2017-12-04 23:25:24

2015-09-24 09:04:36

程序員

2021-07-05 07:28:14

程序員菜鳥技術(shù)

2013-07-15 14:11:13

程序員

2022-07-20 16:57:18

程序員高薪職業(yè)

2012-09-29 10:54:10

程序員謊話Quora

2015-09-09 09:19:42

程序員自問(wèn)

2015-10-08 15:57:30

程序員錯(cuò)誤

2017-12-19 14:15:27

程序員愿望加班

2015-09-09 08:38:20

程序員問(wèn)題
點(diǎn)贊
收藏

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