寫代碼不嚴謹,我就不配當程式設計師?

2020-12-17 CSDN

作者 | 阿文

責編 | 伍杏玲

知乎熱榜有個提問:一位準程式設計師學編程有一段時間了,但是經常被人吐槽編程不夠嚴謹,比如寫個計算器沒有考慮用戶輸入特殊字符或者沒有考慮到用戶輸入使用了錯誤的數據類型導致了溢出異常,感覺自己很菜,懷疑自己是否適合當程式設計師了?

相信很多新手程式設計師在最初遇到挫折時,都會有這樣的疑問:我是否適合學編程?

這是由於新手程式設計師對自己的能力產生不自信,因為水平和知識面不足導致在實際編程中,到處碰壁。比如一個複雜的邏輯沒有想明白,或者一個Bug 始終找不到問題所在,從而失去了繼續學習的信心。

今天就和大家一起討論新手程式設計師經常會遇到的問題以及如何去對自己的職業生涯做規劃。

如何評估是否適合當程式設計師?

先看看我身邊的兩個真實故事:

小磊,本科大學是化學專業,畢業後由於本專業工作不是很好找工作,聽說搞 IT 的待遇好、薪水高,於是參加培訓班學習 Java。

在此之前,他沒有任何計算機專業背景,連 Office、Windows 系統使用得不是很熟練。就是這樣一位計算機小白,就因為人云亦云地進入這行業。

然而他在學習編程不到一個月後,就跟我說他學不下去了:編程這玩意太難了,老師布置的作業他根本就沒思路,連個簡單的 Java 程序都不會編寫。比如老師要求他用 Java 實現一個純 console 模式下的學籍管理系統,他不會寫;還有很多基本計算機概念他更是完全不懂,比如什麼是堆棧、Linux 系統的使用……

於是他懷疑自己,思考:「我是誰,我在哪裡?我為什麼會學編程?這玩意這麼難,我真不會,我是不是不適合幹這個?」

後來他覺得這一行的飯並不是那麼好吃,經過一番嘗試之後,他覺得自己不適合幹這個,於是中途退出培訓班,後來聽說是回家做水產品生意(賣小龍蝦之類的),幹得還不錯,平均一年收入幾十萬。

還有位朋友和小磊的背景很相似,大專大學英語專業,男,畢業後發現只會英語出去找工作沒什麼優勢。

他自己是一個電腦愛好者, 大學期間自己攢配件組裝電腦,對於各種硬體知識有一定的了解,平時愛倒騰各種軟體和作業系統,對於Linux 也有一定了解,會一些基本的命令使用,雖然不深入,但也算有一定計算機基礎。

他之前並未接觸過編程,在畢業後他參加了編程培訓,可能他對這方面有些天賦,老師上課教的基礎知識他能很快地掌握並消化,並且在業餘時間他也不斷去看書並實踐,在不停地學習、消化、實踐中,他的編程水平提升很快。

雖然有時候他也會為一個邏輯沒理順而抓耳撓腮,但是他並沒有被問題難道,而是不斷去想解決問題的方案。遇到不會的就去查資料,由於其英文水平還不錯,對於一些資料他都是先看英文文檔,實在不會就去各種技術論壇去請教別人,就這樣,經過兩年的摸爬滾打,他的技術水平提升地非常快,從一個月薪 3000 塊的初級工程師,成長為月薪 15000塊的高級工程師。

三百六十行,行行出狀元,適合自己才是最重要的。如果你在學習編程,希望成為一名程式設計師,也遇到了和知乎這位同學一樣的困惑,對自己的職業發展產生了懷疑,開始問自己適合不適合幹這行了,不妨問問自己幾個問題:

我喜歡這個行業嗎?我有對即將從事的這行所需要的能力有進行過了解和評估嗎?例如需要掌握哪些技能才能入行,我當前的能力是否達到了入行的能力?如果沒有,我缺什麼?該怎麼去做才能提升能力。我願意投入很多的時間和精力去鑽研學習所需的技術嗎?如果以上問題的答案在你心裡都是肯定的,那麼你只要方法運用得當加上自身堅持不懈的努力,我相信肯定會在一段時間內有很大的提升和進步,而反之我則建議你儘快在年輕的時候多去嘗試下其他行業,哪怕你已經投入了一段時間去學習,但是這至少可以及時止損。

如何成為一名合格的程式設計師

作為一名在 IT 行業摸爬滾打多年的老鳥,我給各位分享一些自己的經驗,希望可以幫助新人們少走彎路,快速成長。但是我要說明一點,這些建議的基礎是你上面的幾個問題都是肯定的前提之下,你再結合建議來做的話,是會給你的技術提升帶來一些幫助的。

首先,理論加實踐結合,缺一不可

對於一些基礎差的朋友在入行不久肯定會遇到一些知識點難以攻克,特別是零基礎轉行的朋友,可能只會培訓班教的編程基礎知識或自己買的編程類書籍或網上找的視頻教程,可以看得懂,但不會寫。

這類朋友我建議你看完視頻或書之後一定要多花時間去練習,光看不練假把式。僅僅是看視頻和書籍你是看不會的,必須要練習,其實計算機的一些專業相比較其他行業的門檻是很低的,一臺電腦你就可以去學了。理論知識的學習很重要,但是實踐同樣非常重要。

新手程式設計師一定不要看中當前微薄的薪水,一開始入行,只要工資能夠應付你的生活開支就可以了,給你開 3000 的工資和 6000 的工資其實並沒有太大的區別。

以杭州為例,平均房價三萬多,你拿這麼點工資你能在這個城市買房立足嗎?如果不能,你最應該做的事情是持續不斷地學習,而不是在乎這一星半點的工資,然後找一個能夠有機會提升能力的平臺,投入更多的精力去鞏固基礎,把基礎打牢固了。

其次,要勤能補拙,不停地學習。

正所謂熟能生巧,而且程式設計師所需要的知識並不僅僅是你會寫代碼就可以了,也並不是「一招鮮吃遍天」。

所需的專業性是非常強,並且軟體迭代更新非常快,如果你僅僅是會一門程式語言的語法使用,你是永遠也不會成為一名優秀的程式設計師的。

我身邊很多開發同事經常會在好幾種不同的程式語言之前來回切換使用,有的項目用 Python,有的項目用 Go,有的項目用 Java。

大家不要認為某某語言是世界上最好的語言,例如「PHP 是世界上最好的語言」這樣的說法,如果你抱著這思想,那就完蛋了。

不同的程式語言其應用的業務場景是不一樣的,各有各的優勢和劣勢。千萬不要陷入語言的門戶之爭。

應該把寶貴的時間和精力用在提升自己的崗位專業能力的學習上去,比如作業系統原理、算法、網絡協議、數據結構等基礎學科的學習。

只會編程是寫不出來什麼好程序的,好的程序是由好的算法+好的數據結構而成的。基礎知識一定要打紮實了。數據結構和算法以及網絡協議並非是工作中你會用到,但在面試過程中,這些是程式設計師逃不掉的必問題目。

再次,僅僅是會上面這些,其實你還不能成為一名合格的程式設計師,因為在實際的項目裡面,除了要會寫業務邏輯,你還得和各種中間件打交道,比如資料庫、Web 伺服器等軟體打交道,有時候可能系統出問題了,需要你去排查定位問題,並提出優化改進的建議。

這些軟體可能又是一個知識體系了,你值得花精力去學習,雖不一定每一樣都要學得非常精通,但也並不是僅僅停留在會簡單使用這些軟體,比如資料庫,不要僅僅停留在會增刪改查這種最基礎的操作上。資料庫的優化、資料庫的原理值得你花精力去學習,這樣在以後的系統設計中,你就知道如何去優化 SQL 語句提升性能,對一些查詢慢的問題如何去定位是程序問題還是資料庫的問題以及該如何優化。

推薦多閱讀一些優秀的開源軟體的源碼,讀別人的源碼,看看優秀的程式設計師是怎麼寫代碼的,他們為什麼要這麼實現。

最後,程式設計師要培養系統化學習的能力,要拒絕碎片化學習。

網際網路時代很多知識都是碎片化的,其實碎片化學習並不能有效提升你的能力,你應該系統化地把某一個知識點和技術啃掉,這樣在設計系統時才能把要考慮的問題想全面些。

對於新技術最好的學習方式是去看官方文檔的說明,而不是去各種博客搜答案,這些二手知識首先並不一定適合你,其次這些二手知識太零亂了,如果官方文檔確實找不到答案,才去嘗試下搜索或者去各種論壇去提問。

精進如何成為一名優秀的程式設計師

相信如果你照著上面的方法去不斷學習和實踐,並且真正的掌握了所需要知識點,你可以算是中級程式設計師了。

接下來你需要做的就是針對某一個方向花更多的精力和時間去鑽研,使自己成為這個方向的專家。最好是你自己正在做的技術方向,如果把你的能力提升到在核心崗位「沒你不行」的專業的話,即使你離職了,不投簡歷也會有其他大公司高薪挖人。

總結一句話就是:要讓自己的能力不可被替代。

如何做到呢?:

成為某一個領域的專家,並參到該領域一些優秀的開源項目中,貢獻自己的代碼。例如你是做容器開發的,那麼 Kubernetes 和 Docker 項目可以參與進去。多參與該領域的技術論壇,分享自己的經驗,讓更多的人認識你,了解你正在做的事情,把自己的知名度打出去。另外,這樣做也可以提升自己的演講能力。不要僅僅局限於寫業務邏輯,如果有往管理方向發展的機會,一定不要錯過。當你成為一名技術管理者之後,你看問題和思考系統架構設計等的問題時,眼界會開闊很多。成為一名終身學習者,這個世界每天都在發生著巨大的變化,你不學習,就會被淘汰,尤其是年輕的時候,一定要不斷地學習,避免人到中年時成為一名高齡低能的程式設計師。勞逸結合,多鍛鍊身體。編程這事很辛苦,熬夜加班,996 都是常態。所以身體是革命的本錢,千萬不要把自己的身體搞垮了。好了,以上就是我給大家的一些建議,希望各位能夠成為一名優秀的程式設計師。

作者簡介:阿文,網易雲擔任高級工程師,在邊緣計算、雲計算領域有多年的從業經歷,曾擔任過講師,主講思科路由交換技術。個人博客地址:https://awen.me

【END】

相關焦點

  • 1024程式設計師節,不寫代碼還能寫啥
    即將到來的「雙11」,也算是代碼改變世界的成果吧。文章就更不必說了,曹丕把寫文章看作「經國之大業,不朽之盛事」,一點也不誇張。都是極費心力的苦差事。寫代碼是朝如青絲暮成禿,寫文章是一將功成萬筆禿。同樣,不要羨慕程式設計師拿錢多,白天磨需求,半夜寫代碼,收入按工時折算,並不是很多。知乎上有組姐妹問題,被自己的代碼美哭是一種什麼樣的體驗?被自己的代碼醜哭又是一種什麼樣的體驗?能讓自己感動到哭的工作,一定是費盡心力的,說嘔心瀝血真不為過。既要勤奮也靠天分。
  • 程式設計師:為啥我寫的代碼幾個月後自己也看不懂?
    寫在前面:中國程式設計師就別寫英文注釋了!不要寫「太牛逼」的代碼!"傻瓜式代碼" != "低性能代碼」=========華麗的分界線==========程式設計師同志們大多都會有這樣的經歷,就是要看別人的代碼。
  • 對程式設計師來說最難的是寫代碼嗎?
    相信看到這個標題的同學們都有自己的想法,可能剛剛進入這個行業的同學們會非常認同寫代碼就是程式設計師的主要工作,然而當你工作一定時間之後,寫代碼將變得不是那麼「重要」了,在悟空問答中眾位大咖為這個問題提供了多種多樣的答案:    答案一:寫代碼是程式設計師最主要工作,但是卻不是最難的工作,最難的是踢皮球和吵架!
  • 嫁給程式設計師有什麼好處?程式設計師新郎接親,被要求現場寫代碼告白
    很多人一談到程式設計師,是不是都覺得他們搞開發的,一定是非常聰明,鐵飯碗,工資很高,是不是都覺得程式設計師棒棒的,好崇拜,好羨慕,如果談到結婚,你會選擇嫁給程式設計師嗎?近日程式設計師新郎接親,被要求現場寫代碼告白,你知道嫁給程式設計師有什麼好處嗎?
  • 為啥國內程式設計師寫的代碼也用英文注釋?
    國內的一些程式設計師寫代碼用英文進行注釋,我覺得是他們編程之路上的一大重要進步。中國編程技術現在需要與國際接軌,而且國內很多程式設計師也喜歡更多了解程式語言的開原始碼,使用英文注釋會讓國內程式設計師在全球技術社區中形成廣泛共識和合作,從而使國內程式設計師能夠實現快速成長。
  • IT行業裡,好的程式設計師一天應該寫多少行代碼?
    今天大概寫了4個函數,昨天寫了5個函數,每個函數大概20行左右吧,都快累死了~~~也不知道和優秀的程式設計師差多少。不知道大家每天都寫多少~~~~1樓曾經有個專家說,每天精華代碼是1行。誇張了。邏輯複雜的代碼,80行,你已經算高效的了。
  • 交付程序不給錢,程式設計師一怒之下開源客戶項目代碼
    不給錢就開源最近,外國一位名叫 Jason Werner 的程式設計師小哥過得很鬧心。事件的起因是自由職業的他接了個外包需求,給一位客戶開發一個名為 OneFraction 的平臺。在跟客戶溝通好需求後,他開始寫這個項目,結果項目完成後客戶擺了他一道,最後也沒給他錢。
  • 程式設計師:停電去網吧寫代碼,被當成黑客報警了,網友:想偷我戒指
    相信很多人對程式設計師這個行業有著很多看法,畢竟作為高薪行業,一直以來也是備受關注,但因為強大的工作壓力,也讓很多人望而卻步。甚至在很多人眼裡,這就是年薪百萬,一夜成名的職業了,也讓程式設計師這個行業增添了幾分神秘感,這也讓很多人好奇,究竟是做什麼能夠讓自己收入這麼多呢,他們為何有如此強大的吸金能力呢?有位網友就在論壇上發表自己作為一位程式設計師曾遇到的尷尬事情。
  • 一個比直播睡覺更奇怪的網站:直播程式設計師寫代碼
    今天我發現了一個奇怪的網站:https://www.livecoding.tv。一點進去它的主頁就有一個直播窗口,內容是程式設計師坐在自己的電腦前寫代碼,比如這樣:當時在首頁迎接我的,是一個比這張截圖右下角的人類活波得多的生物。
  • 程式設計師求助:雷軍94年寫的代碼什麼水平?眾人:我認慫,跪著讀!
    而他們剛剛起步的時候,可能就是一個普通的程式設計師,當初也是過著沒日沒夜碼代碼的生活。小米科技的創始人雷軍,想必大多數人應該都不陌生了,當年他也是個普通的技術員而已,那麼大家想不想知道當年他的代碼水平如何呢?那麼接下來就讓我們一起來看一下吧!那麼網友們對於雷軍的代碼水平又有什麼看法呢?
  • 以後程式設計師可能再也不用寫代碼了!你信嗎?
    一位來自阿里巴巴程式設計師的吐槽,說出了無數程式設計師的心聲。軟體進步靠研發,研發進展靠程式設計師,程式設計師寫代碼主要靠加班。據說,十個程式設計師裡有十一個都曾經歷過996,乃至007的工作節奏。也是大多數小軟體公司,邁不過去的坎。通常研發成本包括硬體成本、人力成本和與運維成本三大塊。程式設計師工資高是大家都知道的,而研發團隊又是主要由程式設計師組成,再加上硬體投入和運維成本,對於很多企業來說就是「天文數字」。
  • 優秀而高效的程式設計師必需寫好代碼的10個技巧
    在本文中,作者介紹了10個寫好代碼的建議,以自己切身編寫代碼的體會和經驗來告訴開發者這10個建議的好處,並指導讀者成為一個優秀而高效的程式設計師。
  • 停電後程式設計師網吧寫代碼,被人當成黑客報警,網友:想偷我裝備
    程式設計師作為高新技術的代表性職業,收入也是極為豐富,甚至在許多人眼裡就是年薪百萬的代名詞,讓不少人進入這個行業,成為一名「程序猿」。正好有一位網友分享了他作為程式設計師的一件趣事,讓我們來看看。這位程式設計師分享說因為實驗室突然停電,而他和同事們又不想回家寫代碼,想要在一起寫,這樣方便交流,於是來到一家網吧準備熬夜寫程序。
  • 優秀而高效的程式設計師必需寫好代碼的10個技巧,
    作者丨Christopher Diggins譯者丨Teixeira10【譯者注】在本文中,作者介紹了10個寫好代碼的建議,以自己切身編寫代碼的體會和經驗來告訴開發者這10個建議的好處,並指導讀者成為一個優秀而高效的程式設計師。以下為譯文:那麼怎樣才可以使代碼變得優秀呢?
  • 學完IT只能寫代碼當程式設計師嗎?(下)
    學完IT只能寫代碼當程式設計師嗎?當然不是啦!可能學IT的學生關注的問題大多千篇一律:接下來我該學什麼語言呢?如何準備技術面試?你們公司招人嗎?諸如此類。但有一個問題直擊靈魂深處:如果我不想再當程式設計師了,該怎麼辦?
  • 5程式設計師因停電去網吧寫代碼,被認為是黑客報警了,網友:想偷我戒指?
    不過很多人覺得頂級的程式設計師年薪百萬都不是問題,也讓大家很好奇程式設計師到底幹什麼才能掙這麼多錢呢?這不,有位程式設計師網友就在網上分享了自己前段時間遇到的一件尷尬事。 原來這位程式設計師說,他們實驗室正好停電了,於是五個人就只能去網吧通宵寫程序了,沒想到正認真工作的時候,竟然被當成黑客給報警了。
  • 有人準備直播程式設計師寫代碼,相互出題PK,網友:想得太簡單了!
    見過程式設計師之間技術PK的麼?這樣的場景似乎不太多吧,我能想到的也就是技術面試了,當然,這完全算不是PK,從角色上來說面試官只是出題,而應聘者只是答題,他們之間是考察與被考察的關係,不存在PK, 更算不上競技,在一些主流的綜藝節目中最強大腦,王牌對王牌什麼的,都看不到有程式設計師PK的這類節目,針對這樣的背景,有名程式設計師網友就腦洞大開,他產生了這樣一個想法。
  • 程式設計師必學設計模式,策略模式,讓你少改代碼提升效率
    經常有人會說,程式設計師寫代碼要什麼設計模式,隨便寫就行,這其實是一種很不好的習慣,就好比蓋房子,不需要設計圖隨便蓋就可以,但是想要蓋成高樓大廈,一定要經過嚴謹的設計,不然就容易崩塌。我們採用設計模式來寫代碼,更多的,是為了不坑自己。
  • 程式設計師的代碼行數越少越好?
    Martin在「乾淨的代碼」中談到了這一點:「實際上,讀代碼和寫代碼所花費的時間之比遠超過10:1。在編寫新代碼的時候,我們一直在閱讀舊代碼。……[因此,]我們的代碼應該易於閱讀,易於編寫。」很長一段時間裡,我一直以為自己不善於閱讀別人的代碼。隨著時間的流逝,我意識到幾乎每個程式設計師每天都在為閱讀別人的代碼而苦惱。
  • MySQL 創始人:寫代碼比打遊戲爽,程式設計師應多泡開源社區
    Monty迅速意識到自己相當擅長寫代碼——對於別人來說很複雜的事情他卻覺得很簡單,而且他對工作非常投入。Monty用一種在講瑞典語的芬蘭人中常見的濃厚口音說:「基本上這就像是在閱讀一本真的非常非常好的書。或者像在玩視頻遊戲。你知道開始玩遊戲然後嘣一聲3小時的時間就過去了的那種感覺嗎?寫代碼對我來說就是這種感覺。」當別人跑去聚會的時候,Monty卻呆在家裡編程。