中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一個有夢想的程序員應該必備的9個條件

發布時間:2020-05-09 07:40:42 來源:網絡 閱讀:1006 作者:jjrc521 欄目:編程語言

一個有夢想的程序員應該必備的9個條件

首先,世界上沒有最好的程序語言,只有最適合個人程序語言。程序語言本來就只是工具、只是手段,從來都不是重點,重點是:你的目的是什么?你要解決的問題是什么?

假設你今天想要寫一個網頁留言板(這邊只討論后端,不包含前端),那你就不應該用C來寫,因為比起C,php會更適合,很多phper要說了“php是世界上最好的語言”

你可能會問:那nodejs,rails,asp.net…就不適合嗎?

如果你只是單純想寫個網頁留言板,其實上面這些都很適合,挑一個你最喜歡的語言就好

但如果你要解決的問題不一樣,就應該重新思考。例如說,我想要很短的時間的寫個網頁留言板,你就應該用rails,因為rails開發真的超級快,隨便打幾個command,你的網頁就神奇的出現了!

“我想要很潮的網頁留言板!”那你可以考慮Go,Swift,Nodejs等等

再舉個例子,加入你今天想要研究電腦較底層的運作,那么你應該要學C,或是學匯編語言因為比起其他高階語言,這兩種絕對會讓你更了解底層到底在做什么,其實以上這些只是想提醒你:不要為了學語言而學語言。

程序語言只是一個好的解決方案,重點在于最終的目的!重點在于你想要通過程序,達成什么樣的目標,當然如果你真的只是純粹喜歡寫程序,就當我沒說。

為什么要當程序員?

我的理由很簡單:為中華之崛起而寫代碼!我覺得做程序開發讓我很有成就感,只要幾天就可以寫出一個網頁程序員,可以隨時幫自己寫博客系統、幫朋友開發投票網站系統之類或者去程序員客棧www.proginn.com接私活賺些外快等等。盡管早期寫出來的東西可能不怎么樣,但那種從無到有真的是一件非常有成就感的事情。

我永遠忘不了我用VB拉幾個按鈕出來,點下去就可以跑出文字的那瞬間,我有多感動,那是我第一次寫代碼,雖然當時還比較菜,但是“興趣的培養”是每個程序員一生必備的職業興奮劑,下面給單純有興趣或者想轉行程序員的同學一些建議,希望能夠幫到大家。

1.學英文

這個其實上學的時候大家都有在學,只不過個人差異,每個人的水平也都參差不齊。

Q:我該學什么程序語言

A:英文

為什么?因為英文真的很重要!聽說讀寫,至少讀要讀的懂,你才看的懂那些外國的API文件,發生問題的時候,才能去stackoverflow上面發問,說到這里就必須要和大家說一些基本的提問技巧,很多問題為什么很少人愿意回答?例如:我寫了一個網絡通信的程序,想要讓A手機跟B手機可以傳信息,可是按了卻沒反應,怎么辦?我的代碼不夠優雅怎么辦?

一個有夢想的程序員應該必備的9個條件

一個好的問題,應該言簡意賅,直擊重點,個人覺得應該要包含四點:

1.目的(你的程序要達成什么目的?)

2.手段(你怎么達成你的目的?)

3.錯誤(在什么場景下發生的什么錯誤?)

4.代碼(有排版過的代碼,拜托)

所以將問題改成:

我想要讓A手機跟B手機傳遞信息,我用的是java的socket,可是按下發送時,出現:java.net.SocketException: Connection refused: connect,想請問一下有可能是錯在哪里?

部分代碼:https://gist.github.com/xxxxxx

上面的問題還可以再修正、補充更多細節,但至少比剛開始那個好回答的多,會讓人比較想回答,代碼一定要找適合的地方保存。再回到英文的這個話題上來,英文不好的話,其實國內的資源也很多,但很多新的技術或者人氣旺的地方還是用英文,所以英文好的話不會吃虧,可以運用到更多的資源。

2,google很重要

相信我,google真的要比其他搜索都好用,我經常認為會google就先贏了一半,現在網上資源那么多,有時候出現你不懂的ERROR,完全沒有頭緒怎么辦?最簡單粗暴的方法就是直接google,一堆解決方法就出現了,這個時候不是簡單的復制粘貼,而要去試著理解為什么這么做,一個不會理解代碼的人,只會是一個復制粘貼的機器人,這樣對自己的成長沒有好處,至少要弄清楚兩點:為什么會有這樣的問題、這個解法是如何解決的?關鍵詞的使用非常的重要,比如一些常用的指令一定要學會,例如:inurl:、intitle、filetype等等。

3.學scratch

我聽過這個很多次,但實際接觸才知道真的很好用,這個就是讓你用很簡單、很可視化的方式來寫程序,你只要拖拉幾個拼圖、組合在一起,就可以寫出一只可以動的程序,甚至是一個小游戲!

如何開始學scratch?

如果是我的話,就會google搜尋:scratch教學,或是scratch入門

為什么要學scratch呢?

前面有說到,每種程序語言都有不同的適合的場景,還有一點是,每種程序語言,都有很大部分是相同的,例如說:變數、函式、循環、條件判斷、數組…

當你學C有這些、Javascript有這些、Swift有這些,不管學哪種程序,都會碰到這些最基本的東西,無論是再復雜的程序,都是這些基本的東西組裝而成。

從scratch來學這些基礎有兩個好處

1.不被語法限制

2.可視化

scratch里面你幾乎不用打字,甚至可以看做是拼圖游戲,你就把你想要的東西拼一拼,程序就寫完了,所以你學的是真正的概念,而不是語法。

舉例來說,如果你學C,你就要學:

一個有夢想的程序員應該必備的9個條件

如果你學python,就會是:

一個有夢想的程序員應該必備的9個條件

其實我不會python,如果寫錯的話,各位Python大神原諒,但這兩者本質上是一樣的東西,都是循環,只是語法不同而已!

從scratch開始,可以讓你跳脫這些語法,只學那些精髓,你學完之后,看到C的這段就會知道:哦,原來這就是循環呀

第二點,可視化也是很重要的一項,盡管我代碼寫了很多年,我永遠忘不掉,我在循環這個坑卡了多久,尤其時雙重循環,根本就是惡夢!

我知道這邊是1到10的意思,但是第二層為什么會這樣?

為什么這樣就可以印出九九表?

那時候我面對的是冷冰冰的代碼,大概就是:

一個有夢想的程序員應該必備的9個條件

盡管我可以很輕松從排版跟大括號一眼看出「block」的概念,但十年前的我完全不行,至少覺得這就是天書,可是scratch就不一樣了!它直接用可視化的拼圖的概念,讓你在循環里面可以塞另外一塊拼圖,就可以明白為什么雙重循環會是這樣了!

4.有些指令一定要會(command line操作)

這是什么?對,你沒有看錯,這就是電影里面看起來很帥的,底是全黑的畫面,屏幕上面滿滿的文字,一張圖都沒有,在windows就是cmd,命令提示字元。

在mac就是terminal,終端機,假如你已經對上面介紹的scratch滿熟悉了,那你應該了解程序幾個基本概念,其中一個重要的概念是:寫程序其實就是在對電腦下指令,其實呢,你平常在做的事情,也是在對電腦下指令,但操作系統幫你包裝好了,所以你只要動動手指就可以,例如說你在網頁上按了重新整理。

「我要重新整理」換成程序大概就是:page.refresh();或是:「點了前往google.com的連接」window.open('google.com');(這邊代碼都隨便寫的,但意思有到就好),我們所謂的command line,就如同字面上這樣是個「用文字對電腦下指令」的地方,像是ls,就是list的意思,會把你「現在在的地方」的檔案都顯示出來。

「現在在的地方是哪里?」打pwd,Print Working Directory就會顯示出你現在在「電腦的哪個文件夾底下」

幫大家準備好幾個連接了:

(關鍵字:終端機教學)

OS X Lion 10.7系統基礎教學系列-終端機基礎操作教學

介紹命令行(command-line)界面

Mac OS X Terminal 101:終端使用初級教程

Mac OS X Terminal終端機常用語法教學

為什么要學這個呢?因為工作上很大機會用的到,而且日常生活也很好用,有些功能你用java寫的要死要活,最后才發現原來電腦就有內置指令,我也是最近一年才開始熟悉這些指令的操作,才發現原來內置指令這么好用,給程序開發初學者一些建議,你需要知道這些,并且了解:cd,ls,pwd,touch,mkdir,rm,cat,grep這些指令,還有> >> < |這些符號在干嘛,這樣就很足夠了,想更精進的可以去學怎么寫shell script。

5.學怎么用browser dev tool

chrome,firefox,safari,edge都有一樣的東西,叫做開發者工具,為什么要學會這個呢?因為你可以了解很多東西!日常生活中,你其實一直在接觸網絡的概念,只是你沒發覺而已你平常看到的網頁,其實也只是一堆文字而已,那為什么文字會變成畫面?因為瀏覽器幫你解析,按照一定的規則畫出來,你可以右鍵->檢查,就可以看到你鼠標指的地方本來的文字是什么

dev tool可以講到一堆跟web有關的概念get/post,ajax,status,css,js,html等等,現成的好工具,不用嗎?

6.選你想走的領域精進

假設你上面都有確實做到,你現在應該對程序、對網絡都不會太陌生了,這時候再來學專門的東西,我認為是事半功倍。

為什么?因為原本那些程序基礎你都可以跳過,你要學的只是語法,學程序最重要的應該是「心法、內功」,而不是表面的限制,這樣就算換了一個你從沒看過的程序語言,你也會猜的到它在干嘛。如果你看了這篇文章也想成為一名程序員,這里要提醒大家的是心態一定要正確,所謂咸魚翻身,學會程序開發年薪幾百萬之類的新聞,千萬不要相信,很多這種個例是因為之前已經有某項技能專場,再把專場和程序開發結合起來最終沉淀出來的結果,而大部分沒有任何能力基礎和背景的人比起這些特殊案例,這些新聞你可以選擇忽略,做人最重要的還是腳踏實地。

7.開通個人博客寫經驗

可以開個blog寫寫自己的學習歷程、碰到的困難以及解法等等為什么要寫這個?

第一是加深印象,你解決一個問題下次再碰到時,你還記得怎么解嗎?很多時候踩過的坑會反復踩,代碼有時候過兩三個月會忘掉,但這時候就因為我有寫blog記錄起來,可以查的到以前自己怎么解的。

第二是增加功力,我要怎么知道我真的了解一個東西?

我覺得寫下來,會清楚的認識到自己的能力水平,例如說我今天要寫:git入門教學,寫一寫發現自己不知道rebase在干嘛,我就必須去查,查完之后寫在文章里面,你寫的出來,你就一定懂這項技術而且博客是公開的,若有路人看到你寫錯,說不定還會來糾正你,你就又學到一課了!

第三是累積個人聲望,好的程序員個人博客對于求職絕對有加分效果,假設你今天是面試官

A的履歷寫:精通Javascript

B的履歷寫:精通Javascript,可參照我寫過的:深入Javascript原理系列文章

結果你跑去B的博客看,真的寫了一系列深入的文章在研究,不用面試,你就知道B是個有真材實料的人(前提是面試官會去看你blog里面的文章)

8.學數據結構跟算法

就是俗稱的Data Structures and Algorithm,DSA,假如你真的對這行很有興趣,想要一直待在這邊而且薪水越來越高的話,你就勢必要開始補足一些額外的技能「自學的人通常不會有的本科系知識」,因為自學者通常都直接從html,css,javascript,php,rails等等的開始,甚至連數據結構跟算法都沒聽過!有接觸而且實作過的更是少數。

那為什么要學這兩樣東西呢?

第一,增加自信

其實能力強,自信就會強,增加自信是因為,自學者通常也是非本科系的學生,可能會覺得自己跟本科系的實例有一段落差,這時候若是學了本科系在學的DSA,就可以彌補這一段落差。以我個人來舉例,因為我很早就接觸到DSA,到現在出社會找工作,就是因為我有這段經歷,所以我有自信我絕對不會差本科系太多,甚至會比一些很混的畢業生強,事實上也是如此,去面試的時候有間公司考我排序的問題,就是一些很基本的,說你知道哪些排序法,跟時間復雜度之類的。

“自信在某些時候很重要,能夠為你帶來打不倒的勇氣”

面試沒通過,沒自信的人會覺得:一定是我太爛

有自信的人會覺得:是公司沒眼光(前提是你的自信不是來自于自我感覺良好)

第二,增進對電腦底層的理解度

剛開始你可能只是個拿5k的薪水,但工作久了,可能變成10k,20k,甚至50k,當你薪水變得越高,要解決的問題也相對的更重要,DSA是大公司的必備技能之一,為什么那些大公司面試要考這些?如果不會二叉樹反轉,就算是知名工程師也沒用?

(之前Google的面試爭議:雖然我們公司90%的工程師都用你開發的工具,但我們還是不聘用你)

就如同我開頭所說的,重點在目的、在于要解決的問題

你在一家普通的臺灣電商網站工作,需要會什么?

你可能要會寫php,因為要改進購物車,要改進物品上架系統,所以你根本不必懂DSA,因為沒什么太大的幫助。

Google要解決的問題是什么?

可能是「排序10億個數字」、「阿發狗的下棋算法」等等,從要解決的問題看來,你就知道為什么Google面試時要考那些了。

如果你要在技術上日漸精進,你遲早要碰到那些較底層的東西,這跟問題規模有很大的關系,假設你公司今天是做旅游訂票,同時100個人搶,一般工程師都可以自己應付,如果同時10000個人搶,這就不一樣了,在服務器上你可以能要多開幾臺機器,要調整一些構架,而程序當然也要跟著調整。

或是你會發現許多大公司,常常都會自己有一些項目,為什么?因為市面上沒有符合他們需求的東西,所以要自己寫一個。

如果你沒修過DSA,你怎么可能實作出virtual DOM diff的算法?

當然我也比較菜,沒去面試過諸多大公司,如果有程序前輩看到這里麻煩留言:“你的推測錯了!”

最后,引用一段很有哲理的話:如果以蓋大樓來形容這個概念,把砌磚作為一種技能,把蓋大樓作為一種知識,我想可以這么講:如果你早就知道你喜歡砌磚,很會砌磚,就直接去砌磚吧。如果你的夢想是蓋大樓,你要學的東西還很多,那讀大學是你最好的途徑。不是每個人都要蓋大樓,靠砌磚就可以賺錢了,砌的好還可以賺很多錢,大家搶著要。如果你很會寫購物車,那其實你也可以接到很多電商客戶,錢包也是賺滿滿,但如果你是想進Google,Facebook那種大公司,或是想要思考規模更大的問題該如何解決,那就學DSA吧!

9.樂于分享

這一點我一直非常認同,分享從來不是單向的,當你分享知識給別人的時候,也會得到許多回饋,尤其在教別人的時候,你會更清楚自己哪里不太懂,個人認為分享是一件非常重要的事情,取之于社會,用之于社會,如果大家都樂意分享,這樣此時一個正向循環,希望大家共勉。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉义市| 怀集县| 张家口市| 永仁县| 平安县| 兴城市| 文水县| 门头沟区| 达孜县| 当涂县| 屏东市| 德格县| 扶余县| 镇平县| 云龙县| 南皮县| 肇庆市| 色达县| 城市| 蛟河市| 濮阳县| 镇远县| 鄂托克前旗| 陆良县| 顺平县| 肥西县| 宿州市| 宁安市| 武义县| 肇州县| 竹溪县| 武宁县| 泗水县| 中江县| 绿春县| 临朐县| 民权县| 凤山市| 浠水县| 陕西省| 固安县|