新晉程序員的七大原罪,你中槍了嗎?
圣經(jīng)中,將人類的惡性劃分為七種表現(xiàn)方式,定義為人類與生俱來源自靈魂的七原罪。
傲慢、妒忌、暴怒、懶惰、貪婪、貪食及色欲。
這七個極具概括性的詞,如今可以套用到人類各行各業(yè)、日常生活的各個方面所犯的錯誤。
程序員也難逃魔爪。
每次向新職業(yè)的過渡都涉及到學(xué)習(xí)曲線。完全適應(yīng)新的工作環(huán)境前,人人必須經(jīng)歷一個經(jīng)受考驗蛻變的過程。
具有較強(qiáng)適應(yīng)能力和應(yīng)變能力的人可能會覺得這個過程順利和簡單。而普通人則可能需要更多的時間和精力來適應(yīng)。不管是身處學(xué)術(shù)階段還是職業(yè)階段,過渡到數(shù)據(jù)科學(xué)職業(yè)無疑是個很大的挑戰(zhàn)。某種程度上,這是不斷學(xué)習(xí)、永無止境的旅程。而這趟旅程充滿艱難險阻,和各種未知,一不小心就會陷入錯誤的泥潭。
為此,小芯向數(shù)據(jù)科學(xué)領(lǐng)域各路大神取經(jīng),總結(jié)出以下關(guān)于新晉程序員的7條原罪。快來看看,你有木有踩坑吧~
1. 沒有初步的策略
大多數(shù)不具備計算機(jī)科學(xué)和數(shù)據(jù)分析知識背景,卻想要開始數(shù)據(jù)科學(xué)的新職業(yè)的工程師,關(guān)于如何成為數(shù)據(jù)科學(xué)家、數(shù)據(jù)分析家或數(shù)據(jù)工程師,他們沒有明確的戰(zhàn)略。
他們不斷增加信息量,但卻從未真正深入地了解特定內(nèi)容。他們往往一次參加多個線上課程,從不同的網(wǎng)站中下載備忘單,閱讀許多作家的文章,但卻沒能形成一個成體系的計劃。
開始這個學(xué)習(xí)旅程之前,小芯強(qiáng)烈大家建議制定一個學(xué)習(xí)計劃和日常習(xí)慣表,遵循它們以實現(xiàn)目標(biāo)和建立或加強(qiáng)分析能力和編程技能。在想從事的行業(yè)中對比較流行的編程語言和軟件進(jìn)行研究,查找廣泛使用的庫和包,并根據(jù)目標(biāo)定義最適合你的編程語言和軟件。堅持不懈和不斷實踐下,你就是明天的程序員大師!
2. 盡力一次性學(xué)習(xí)多種編程語言和軟件
新程序員常常受到一次學(xué)習(xí)多種編程語言和軟件的誘惑,進(jìn)而將它們作為技能寫進(jìn)簡歷??赡苣阏J(rèn)為這是推銷自己的一種手段,但很多時候適得其反。
數(shù)據(jù)科學(xué)、數(shù)據(jù)分析和數(shù)據(jù)工程職位空缺的公司和機(jī)構(gòu)更傾向于選擇一位具備扎實專業(yè)背景的候選人,他精通一門或者兩門編程語言和軟件,最多三門。很少有職位要求你精通Python、R、SQL、C、C++、C#、Matlab、Java、Ruby等所有的編程語言。
相反地,要研究在特定行業(yè)或公司,你更可能會使用的編程語言和軟件;掌握一種或多種編程和分析技能,并真正地精通。你會發(fā)現(xiàn)所有的編程語言之間存在共同的邏輯和相似的功能。
然后。從一種語言過渡到另一種語言僅需學(xué)習(xí)不同的語法,而無需學(xué)習(xí)其背后的整個邏輯。
3. 代碼編寫過程中不尋求反饋意見
經(jīng)理要求的標(biāo)準(zhǔn)、第三方期待得到的結(jié)果、客戶的需求與你實際完成的事情之間總是存在巨大的差距。
只要你在開發(fā)程序或新代碼,就嘗試將它分成幾個階段,征求反饋意見之后再進(jìn)行下一步。每個階段的反饋會讓你知道自己是否仍處于正確的操作軌道,或者是否要根據(jù)客戶的需求進(jìn)行更改。但這不意味著你無法理解要求執(zhí)行的操作,而是將其視為利益相關(guān)者間的想法和期望。越是經(jīng)常收到反饋,如果出現(xiàn)偏差,你需要修改的內(nèi)容就越少。要記住持續(xù)的交流溝通對每個項目的成功實現(xiàn)都是至關(guān)重要的。
4. 不在代碼上寫注釋行
盡管這聽起來很明顯而且是一項微不足道的任務(wù),但是返回暫停項目時,它是跟蹤每行代碼或代碼塊所執(zhí)行操作的好策略。
在代碼編寫的初期過程,程序員對項目的目的和目標(biāo)了如指掌并不斷更新;他們知道要編寫的程序背后的邏輯步驟,以及追求的結(jié)果。然而,由于各種原因(經(jīng)濟(jì)限制、信息缺失、優(yōu)先事項變更)的影響,所有的項目都容易暫停。這將迫使程序員在保留前一個任務(wù)的情況下需要切換到不同的任務(wù)。
恢復(fù)中斷項目所花時間越長,記住項目剩余位置和缺失點的幾率就越低。這就是注釋行的用武之地。在必要的地方嘗試加上它們;請記住標(biāo)注得要足夠清晰,能夠讓程序員和執(zhí)行者理解代碼背后的邏輯。
5. 沒有測試當(dāng)前的知識水平
你可能已經(jīng)看過許多操作方法和分步編程教程。你可能還閱讀了多本數(shù)據(jù)科學(xué)書籍和編程指南。你也可能已經(jīng)完成了來自Udemy、Coursera 和DataCamp的許多編程訓(xùn)練。猜猜接下來做什么?
沒錯,就是測試當(dāng)前的知識水平。上述訓(xùn)練和課程的真正價值不在于獲取資格證書,而是獲得的知識并能成功將其運(yùn)用于解決既定問題。
坦白來說,參加線上課程,跳過多數(shù)課而不是深入學(xué)習(xí),每個人都可以獲得資格證書,公司和機(jī)構(gòu)也非常清楚這一點。嘗試將自己推向新的極限,尋找線上編程挑戰(zhàn),嘗試集思廣益,在沒有太多資源幫助的情況下進(jìn)行編碼。這并不意味著執(zhí)行實際工作時不能運(yùn)用它們,但是這樣做能夠讓你在工作時舒適感和安全感更強(qiáng),并降低對這些資源的依賴性。
6. 假裝知道一切
相信我,你做不到的。
沒有人能做到這一點。數(shù)據(jù)科學(xué)領(lǐng)域博大精深,每天都能學(xué)些新東西。你能夠開發(fā)、使用和掌握的所有庫、包、函數(shù)、方法及算法真的很多。時刻保持學(xué)習(xí)的好奇心和謙虛的態(tài)度,因為你越認(rèn)為自己知道的多,實際你知道的越少。
7. 跟隨大流
某些時候,使用一種特定的編程語言和軟件會讓你感覺得心應(yīng)手,于是你可能覺得無需學(xué)習(xí)新的編程語言和軟件。
小芯不止一次聽到數(shù)據(jù)分析小哥哥爭論哪種編程語言在性能、可利用的庫和包、線上資源以及受歡迎程度方面是很好的。甚至還吵起來,打起來。所以始終保持謙虛,認(rèn)識到總會從其他的語言、庫、包或軟件中學(xué)習(xí)到新的知識,真的很重要!
畢竟,每種編程語言有其優(yōu)缺點,但目標(biāo)是充分利用它們,靈活運(yùn)用,清楚最適合用于給定任務(wù)的編程語言,以解決特定的問題。
這些“罪狀”,你中了哪些呢?