国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 常見問題 > 正文

如何成為一名真正的程序員?

2019-12-21 02:47:27
字體:
來源:轉載
供稿:網友
什么是真正在的程序員,看看一個老程序員是怎么說的

如何成為一名真正的程序員?

本人十幾歲開始寫程序,近十幾年來都在教人寫程序,還經營著一個可能隨時倒閉的軟件公司,主要的開發語言是C#。

首先,我不認為《算法導論》是所有程序員必須一開始就掌握和精通的內容。

我無意否認某些核心課程的重要性,但是我們必須看到——很多程序員并不懂程序員的三大浪漫——編譯原理,圖形學,操作系統,但這并不妨礙他們在日常工作中創造出各種有價值的軟件。

之所以這么講,原因是:

行業的門檻因技術的不斷進步而降低 不是所有的程序員都需要系統而全面地學習才能勝任工作。

這些年來,編程語言、開發工具的迅速發展,我們可以用C#、Java、Objective C這樣的語言完成大多數開發任務(而不是在紙上打孔或者用匯編),用著Visual Studio這樣爽的開發工具, 這并不是因為廠商大發慈悲要拯救程序員于水火之中,而是微軟這樣的廠商在取悅我們的老板和客戶——技術發展的目的是降低軟件開發的用人標準,進而降低軟件行業的人力資源成本,更快、更好、更便宜地滿足用戶的需求。

從公司的角度來看,如果要求所有開發人員都是基礎扎實、技能全面的,那么用人成本一定很高,我完全相信經過一定訓練和挑選的***鳥畢業生在經理的正確管理下可以很好的開展工作,盡管他可能不懂算法和數據結構,C和C++基本不會,這并不妨礙他為公司創造價值,隨著他開發經驗的增長,在時間允許的情況下再去補充一些基礎知識也是完全可以的。

幾年以前有個“學生”,打引號是因為我并沒有真正教過他,中專畢業,專業是鉗工,曾經給我展示過胳膊上的長長的疤痕,說是被車床傷到的。

他要求跟我學的時候屬于入門階段,最開始學習的并不是什么三大浪漫,而是C#. 在掌握了一門編程語言后,很快自學了其他語言(甚至Delphi), 在一年后找到了一個小公司做些基本的開發工作,然后涉足安全領域,開發了各種工具,現在在一家安全公司上班,提升很快,收入不菲。前不久跟我聊他配合網監做一些取證和提審的工作經歷。

2006年,我在武漢某個夜市的大排檔上,凌晨2點多,看到一個服務員在忙里偷閑看一本計算機書籍(掃一眼就知道),仔細一看是一本Java入門書,聊起來才知道這妹子是護校畢業,但是對計算機有興趣,就想在大排檔當服務員攢學費去***鳥。她還拿出一沓油跡斑斑的信簽紙,上面全是她寫的程序,她說每次去網吧都要裝開發環境,太麻煩了,所以干脆在紙上寫。哥看不下去了,給一開軟件公司的朋友打電話強烈推薦這妹子去實習,朋友一聽情況表示拒絕,我說你只要給他管工作餐就好,不用發工資。1個月后這妹子進入試用期,2個月后轉正,后來在朋友公司做了近兩年,據朋友說開發能力很強,再后來,我就不知道了。

作為教師,感動我的總是這這樣的“學生”,而不是那些坐在教室里花著父母的錢虛度光陰的學生。

可能有人會覺得這樣的程序員是“野路子”,不登大雅之堂,但這一點都不妨礙他們兢兢業業的工作,為公司創造價值并且改變了自己的生活。

如果這些人要系統而全面的學習計算機專業的基礎課程,得需要多少時間和金錢成本?他們所處的環境是否允許他們這樣做? 他們不這樣做,是不是就成不了“真正的程序員”?

如何成為一名真正的程序員?

在我的意識里——能夠根據客戶的需求(或者上級的要求),選擇恰當的技術方案(或者按照上級的指示)開展開發工作,在合理的時間內完成開發任務并達到質量要求的人,就是真正的程序員。

要成為這樣的程序員,其實沒那么難。

在這個答案里,我想把程序員分為兩個層次:

L1-能根據上級的指示,按照公司的要求和規范開展開發工作的,稱為程序員。

L2-能根據客戶的需求,選擇恰當的技術方案,制定合理的工作計劃,獨自或帶領團隊完成開發工作并達到質量要求,稱為軟件工程師。

我想題主可能想成為的是后者,而不是普通的編碼人員,在我接觸到的程序員中,其實很少有單純從事簡單編碼工作的,他們大多數都是干的軟件工程師的活。

軟件工程師應該具備哪些能力呢?我們以前歸納過:

1. 分析問題的能力

2. 設計解決方案的能力

3. 編碼實施的能力

4. 排除故障的能力

這四種能力如果要展開來講,要寫好長的,暫時就不寫了。

開始回答——”如何成為“的問題。

科學家追求的是知識,工程師追求的是能力。而能力是很難從書本上的來的,只能從實踐當中來。

我注意到題主的問題中,提到看書靜不下心,看視頻又覺得太慢,可能從一個具體的項目開始更能激發學習興趣并且獲得成就感。

先給第一種路徑建議吧——從C語言開始。

之所以建議C語言,是因為C語言里沒有那么多現成的、強大的類庫,在不熟悉基本的語法、面向對象這些概念時C#其實比C語言難以理解,很難深入。學習C語言不僅限于對C語言語法的掌握,而是通過C語言的學習,建立程序設計的思維,比較深入地了解一些計算機系統的工作原理。

在我的教學班級中,我的教學內容是這樣組織的,題主似乎也可以按照這種方式來學習:

  • 第一階段高級程序語言的基本概念(編譯、庫、鏈接等),開發工具的使用(Visual Studio 2010), C語言的基本結構以及在VC中的一些差異,動手能力上達到能按照書本輸入一個程序,能編譯,能運行的結果即可。

  • 第二階段變量、指針、表達式、函數、分支、循環、簡單的輸入與輸出。

第一階段和第二階段的時間往往很短。

  • 第三階段開始做第一個小程序(比如最簡單的超市收銀系統),這個時候學生開始頭大,因為很多要用到的東西根本就沒給他們講過,即使網上查得到資料也未必都能用在項目里。學生被我帶進一個接一個的坑里,我從不在第一時間告訴他們答案,總要他們冥思苦想抓耳撓腮一個星期了,下周上課的時候才開始講解決的思路和方法。

經過1個月左右的折磨,他們基本可以完成一個單機版的的超市收銀系統,完成比如輸入(從鍵盤,掃描槍就免了)信息、修改輸入、價格查詢、匯總結賬這樣的功能。從知識層面上,結構體、指針、文件訪問這些基本都解決了,順帶著把簡單的查找、排序算法也學了。

可以說這是學生最痛苦的階段,但是正是這個階段開始培養他們的自學能力,這個太重要了。但是效果也很明顯,到后期的時候,少數學生開始先于我提出解決方案了。

然后接著折騰,先帶學生回顧做過的這個程序,看如何能做的更好,運行的更快,Review和重構。

由于是純C完成的,程序總是看上去很混亂,修改、擴充也不是很方便,于是我們開始探索另一種編程思想——面向對象,C++上場,又是1-2個月,用C++重新寫這個程序,在這個過程中,要求他們自己實現String類,封裝數據結構和業務邏輯、數據訪問......

到這里,一個學期結束了,第二學期要求學生把這個控制臺的黑窗口改成圖形用戶界面。MFC不準用,只準用一個叫做Easy-x的圖形庫,而且只準用其中的putpixel函數來繪制點,一輪新的折磨開始,從畫點、劃線、逐點寫漢字開始,繪制按鈕、繪制文本框、響應鼠標和鍵盤,并且要求他們開始設計和實現TextBox, Button,Image這些類.....,,順便把消息循環之類的機制也做了初步的了解和簡單的實現。

到這時候,有的同學已經開始做出”高仿Windows"了,要不要太驚喜!

到這里,我基本可以相信我的學生不會為C#和Java發憷了,更重要的是——他們具備了真正的程序員所必須具備的核心能力——自學能力、獨立解決問題的能力。

如何成為一名真正的程序員?

整理自知乎(Tony He)

大家如果對編程感興趣,想了解更多的編程知識,解決編程問題,咨詢編程學習,可以關注我們的微信公眾號:程序員互動聯盟(coder_online),這里有java高手、C++/C高手、windows/linux高手等你來。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 获嘉县| 民权县| 泌阳县| 平泉县| 象州县| 积石山| 芮城县| 明光市| 仪征市| 永川市| 涟水县| 西青区| 墨竹工卡县| 镇沅| 西充县| 泰顺县| 东乡族自治县| 门头沟区| 从江县| 奉节县| 长顺县| 龙陵县| 玉林市| 罗山县| 无为县| 汾阳市| 乌海市| 天镇县| 新民市| 元氏县| 河池市| 铜山县| 什邡市| 静海县| 黄山市| 鹤山市| 宁德市| 来凤县| 济宁市| 云龙县| 灌阳县|