在 CTO 眼里,什么樣的程序員是更值得信賴的?
平衡個人成長和公司效率
我的個人經(jīng)驗來看,互聯(lián)網(wǎng)公司分為兩種:一種是獨角獸公司,另一種是創(chuàng)業(yè)公司。當你在創(chuàng)業(yè)公司的時候,公司給你的 title 可能不是太得到市場的認可,這就要求你和公司一起成長,當公司成為這一行業(yè)里面的獨角獸的時候,你也同時會得到市場的認可。公司的發(fā)展和工程師的個人成長的成長是相輔相成的。
從程序員的角度來想,個人考慮的大多數(shù)是如何漲工資,如何提高個人技能,或者獲得一些資格認證,然后來證明自己的獲得成長,一步步走向成功。
在公司層面來看,一是希望每個小伙伴都能成長地更快,這樣做事的人感覺到成就感,人才自然而然就留下來。二是做事的效率和結(jié)果。一般公司也會經(jīng)常組織進行技術(shù)分享會、內(nèi)部交流探討會,鼓勵大家申請技術(shù)專利等,或者給予一些參加技術(shù)大會的門票福利,如 QCon、ArchSummit 等大會。這樣小伙伴得到成長,提高效率把公司業(yè)務(wù)發(fā)展得更好。達到一個平衡,也是雙方的共識。
90 后程序員
其實最開始創(chuàng)業(yè)的時候,內(nèi)心覺得 80 后會比 90 后更能拼,二次元溝通困難。輕松籌開始從校招之后,我們發(fā)現(xiàn)很多 90 后小伙伴挺能拼的,經(jīng)常加班到很晚。做事情也很積極主動。
如果你是一個新手程序員或者是剛剛進入互聯(lián)網(wǎng)行業(yè)不久的 90 后程序員,其實你不必擔(dān)心,你只需要一步一步穩(wěn)扎穩(wěn)打地做。當你找不到方向的時候,你可以從網(wǎng)上找到權(quán)威的網(wǎng)站 InfoQ 或者是技術(shù)大會,你只需了解一些關(guān)鍵詞,看看他們的方向,然后做深入研究。最重要的是花大量的時間在這上面,并且持續(xù)投入。最近有個很流行“一萬個小時”的理論。就是你在這個很專業(yè)的領(lǐng)域持續(xù)投入一萬個小時,刻意練習(xí)后你就能達到一個很成熟的程度,大約就是三年的時間你就可以成長起來。
當然 80 后做事穩(wěn)重、更加成熟、經(jīng)驗豐富。他們會幫助這些 90 后小伙伴更快的成長起來,90 后小伙伴也渴求得到指點。有的 90 后小伙伴也慢慢逐漸有了獨立完成任務(wù)的能力,成為了團隊的中堅力量。
技術(shù)選型
輕松籌前端框架有基于 Vue、React、還有自己研發(fā)的一套已經(jīng)開源的框架 H5UI.IO,后端框架使用的開發(fā)語言是 Golang,我們是在 15 年下半年使用 Golang,之前使用的是 PHP,2016 年經(jīng)歷過一次高峰期,我們切換到能夠扛高并發(fā)的 Golang。PHP 是 CPU 消耗型,所以當時用 PHP 成本非常高,還有語言的特性本身有一些局限,比如說要寫一個連接池或者守護進程都很麻煩。
當時考慮 Go 語言的語言特性自身就支持協(xié)程,支持高并發(fā),I/O 消耗型,所以當時決定選型用 Golang 的時候,在比較大的并發(fā)和流量的頁面,比如眾籌的一個詳情頁面,然后發(fā)現(xiàn)用 GoLang5 臺機器干了 PHP 用幾十臺機器干的活,機器還沒有壓力,所以試驗了一段時間,發(fā)現(xiàn) Go 語言比較好,當時我們用 1.5 就開始做了 (這里指 Go 語言的版本號),現(xiàn)在 Go 語言都到 1.9,已經(jīng)比較成熟,很多創(chuàng)業(yè)公司從一開始創(chuàng)業(yè)就直接選擇 Golang。
我覺得產(chǎn)品初期或者創(chuàng)業(yè)公司初期,技術(shù)負責(zé)人選擇自己最熟悉的語言是最好的語言,用 PHP 做東西快就用 PHP,用 Golang 快就用 Golang,因為項目初期可能更多要求的是這個趕快上線,每種編程語言都是需要你投入時間去深耕的,或多或少都會踩各種各樣的坑,所以在技術(shù)選型上用哪一個語言,就是在你適合的時候選擇合適的語言。
關(guān)于系統(tǒng)重構(gòu),如果你是一個負責(zé)任的人,你可以把舊的東西推倒重做,不建議為老代碼填坑。如果想做好這個事情。初期可以先在一些邊緣業(yè)務(wù)嘗試,不用提前和產(chǎn)品、運營溝通新型技術(shù),他們可能會覺得會影響到進度或者不穩(wěn)定因素來阻止你。最好是等上線一段時間后,再開始跟非技術(shù)人員講,或許他們并關(guān)心技術(shù)如何實現(xiàn),只要結(jié)果好就行。關(guān)鍵是要保證好項目進度。做好備用方案,如果新架構(gòu)執(zhí)行失敗,那就加班在原有的基礎(chǔ)上完成新的任務(wù)。
個人轉(zhuǎn)型
我覺得大齡程序員還接著干,是因為喜歡寫程序這個事情。如果你現(xiàn)在不是因為喜歡代碼而是在養(yǎng)老,那么可能就會逐漸失去競爭力。
不要因為最近哪個技術(shù)火就盲目選擇,到底做設(shè)計、前端、后端、人工智能或者大數(shù)據(jù),這都取決于你的個人因素。如果你是一個喜歡做一些看起來很酷的事情,那么做前端比較好,如果你是一個邏輯思維比較清楚而且有點內(nèi)向,那么你適合做后端。這都完全取決于你個人。
對于不在互聯(lián)網(wǎng)行業(yè)的同學(xué),比如有數(shù)學(xué)或者統(tǒng)計學(xué)方面的功底,可以嘗試轉(zhuǎn)型做互聯(lián)網(wǎng)大數(shù)據(jù),對黑客方面有所研究的,可以轉(zhuǎn)型做互聯(lián)網(wǎng)安全方面。如果你有這樣的機會,初期不要要求太高薪水,要耐得住寂寞,三年時間你就可以在這個行業(yè)站穩(wěn)腳跟。
公司方面
程序員最熟悉的 996,可能在大多數(shù)互聯(lián)網(wǎng)公司已經(jīng)司空見慣,當然也有很多彈性工作時間,周末不加班的公司,公司從實際的角度來講是以結(jié)果來衡量程序員的,所以不必追問中間過程環(huán)節(jié),但是一些特殊項目或者重要時間節(jié)骨眼,公司也可能會要求 996。目的是為了把公司的運轉(zhuǎn)效率提高。
程序員和架構(gòu)師在創(chuàng)業(yè)公司沒有分的那么清楚和嚴格,都得寫代碼,因為創(chuàng)業(yè)公司人比較少,有可能是看上你可以一個人頂 10 個人用,所以還得看創(chuàng)業(yè)公司為什么邀請你,看重你哪方便的個人能力。
優(yōu)秀程序員身上重要的特質(zhì)
一、聰明,大部分人都喜歡和更聰明的人一起工作,聰明人理解事情的程度、做事的方向、察言觀色等方面都出色。
二、積極主動,不管是個人的生活態(tài)度還是工作態(tài)度,都是充滿陽光的,甚至能給別人帶來正能量的人。
三、責(zé)任感,如果公司網(wǎng)站出故障,不管是不是自己平時負責(zé)的,都能主動嘗試先去解決問題。
四、完美主義,代碼結(jié)構(gòu)非常清晰,一旦決定做一個事情,會自始至終把這件事做到極致。當寫完代碼會再次 review,而且會從別人角度來審視代碼,自測也是一個非常重要的環(huán)節(jié),完美主義者 bug 是很少的,在別人心中是一位“老司機”,對自己也要求非常嚴格。
程序員也需要高情商
情商高低標志一個人對別人關(guān)心的程度。講述三個方面的情況:
1、溝通協(xié)作做一個互聯(lián)網(wǎng)產(chǎn)品,需要很多角色的齊力協(xié)作?,F(xiàn)在已經(jīng)不是一個能單打獨斗的時代,對整個團隊來說,你的口碑更好,別人也會更愿意和你合作。別人覺得你更靠譜,后面有合作也會主動來找你。就是俗稱的“人緣好”。
如果遇到隊友代碼很爛,當著別人的面羞辱一番,可能一時痛快,后面可能所有隊友也會對你有所距離和謹慎。好的方式是你可以一個產(chǎn)品升級的時候提出重構(gòu)項目,之后對這個項目有了主動權(quán),選擇一些更優(yōu)秀的人和一起協(xié)作。
2、做事方式一些程序員不愛講話,在自己的舒適區(qū)域埋頭苦干,做一個事情也很少講出來,是很吃虧的。既然已經(jīng)辛辛苦苦把一個事情做了,至少總結(jié)或者記錄下來,拿出點實際的結(jié)果數(shù)據(jù)或者事實,這樣你在團隊合作的結(jié)束后會給人留下很深的印象。
3、技術(shù)管理成為一個好的技術(shù)管理者,特別是遇到一個問題,會去分析問題原因,找誰來解決問題,最后有人總結(jié)出問題的本質(zhì),避免再次發(fā)生。管理團隊需要因人而異,找到一個合適的人來做這件事非常關(guān)鍵,如何引導(dǎo)和激勵團隊成員,需要具備良好的溝通能力,從別出拿過來的需求是否也理解透徹,不要把團隊成員帶到一個錯誤方向。
另外程序員可以參加一些 meetup,可以給自己找到一個更寬廣的社交范圍。這樣生活更加與眾不同。
與產(chǎn)品經(jīng)理共同打造一款成功的產(chǎn)品
互聯(lián)網(wǎng)公司主要考慮的第一個因素是用戶,不管你做什么,互聯(lián)網(wǎng)最關(guān)注的是你的用戶,你的用戶需要什么,你就去做什么,而不是說我們想一個東西,讓用戶來適應(yīng)我們,而是我們?nèi)チ私庥脩粽鎸嵉男枨?,去幫助他們解決一個問題。
第二個因素就是你的團隊,互聯(lián)網(wǎng)最重要的就做事的人,大家齊心協(xié)力去做一個事情,不管是產(chǎn)品、市場還是技術(shù),大家都是出于一個目的,就是為了把這個產(chǎn)品做出來,用戶給你好口碑,大家做這個事情很有成就感,同時自己得到了一個成長。
在整個過程中,邏輯是技術(shù)服務(wù)于產(chǎn)品,產(chǎn)品服務(wù)于用。但在這個環(huán)節(jié),或多或少和產(chǎn)品有一些摩擦,但是我個人更看好的是和產(chǎn)品有更好的溝通,當我做技術(shù)編程角色的時候,更多的是和產(chǎn)品一起去探討,初期討論產(chǎn)品需求的時候,一起加入產(chǎn)品一起去探討,怎么做更好,邏輯該怎么寫,怎么更符合用戶體驗好一些。程序員天生邏輯性思維比較強的,而且比較保守。這樣產(chǎn)品和技術(shù)剛?cè)峤Y(jié)合起來,對最終產(chǎn)品的打磨更少出錯。
理解產(chǎn)品需求
程序員需要了解產(chǎn)品需求的本質(zhì),一種是最小化可行性產(chǎn)品的需求,最開始只是做一個實驗性的東西,然后一個逐步迭代的過程,需要不斷地去嘗試,去迭代,去引導(dǎo)用戶。然后找到用戶真正的剛需,驗證這個需求是不是一個自己“意淫”或者“偽造”出來的東西。這種情況下我建議技術(shù)一定要和產(chǎn)品多溝通,最開始你參與進來和產(chǎn)品探討,成為這個產(chǎn)品成員的一份子,后期這個方向不對或者甚至砍掉不做了,程序員也能明白其中的原因,同時樂在其中,最后大家一起其樂融融往同一個方向走。
另一種產(chǎn)品需求是邏輯關(guān)系復(fù)雜和嚴謹?shù)?,已?jīng)給你考慮到會出現(xiàn) N 多種情況,各種錯誤提示及文案都一一俱全,這樣程序員看到找不出有什么邏輯漏洞,只好照辦。技術(shù)最終實現(xiàn)了產(chǎn)品,如果最終的實際效果不好,這時候技術(shù)就會覺得不爽,會覺得自己身上一點問題也沒有,其實技術(shù)在這樣的情況下也是有責(zé)任的,技術(shù)要勇于說“不”,可以說好的產(chǎn)品大道至簡,舉一些實際成功案例來引導(dǎo)“產(chǎn)品”。
我覺得第一種模式是最好的(看美國大片,首先一般會遇到一個難題,然后找到自己的 team,中間出現(xiàn)一些小分叉,然后克服困難、同心協(xié)力,最后暴擊大 boss,取得成功),大家共同參與進來,一起去探討,然后一起共同去做,如果出了問題也有自己一部分的責(zé)任,往任何一個方向改變,也是大家共同的意見。后期出現(xiàn)什么問題都好溝通,這樣其實產(chǎn)品和技術(shù)更和諧,形成一個精英團隊,程序員和產(chǎn)品需要一起去打磨和成長,大家形成一個利益共同體,一起暢想未來,一起提出問題一起解決。
產(chǎn)品和技術(shù)“撕逼”那些事
產(chǎn)品和技術(shù)爭辯一個事情怎么去實現(xiàn)的情況,時常都會發(fā)生,或多或少都有爭鋒相對的意思,其實主要看是在什么場合爭吵,不要在公司辦公區(qū)大庭廣眾之下或者有上級領(lǐng)導(dǎo)在場的地方,那樣會造成同事或者領(lǐng)導(dǎo)對你的印象不好,或許也會認為你們不適合在一起做事。關(guān)起門來爭吵是比較好的,這個事情不管最后誰說服誰,最后這個疑問有了一個結(jié)論并達成一個共識,對最后產(chǎn)品形態(tài)來說是一件好事?;蛟S兩個人關(guān)系變得更近了。
記住只有在乎這個事情的人或者想和你說真話的人才會和你去爭論,如果壓根不在乎,他就會隨便應(yīng)付草草了事。