如何成爲一名優秀的程序員

前言

羅子雄:如何成爲一名優秀設計師javascript

董明偉:Python 工程師的入門和進階html

董明偉基於本身實踐講的知乎live爲Python新人提供了不少實用建議,他推薦的羅子雄:如何成爲一名優秀設計師的演講講的很是好,總結了設計師從入門到提升的優秀實踐。
羅子雄的演講我看了三遍,再結合本身的程序員生涯,我想我也能夠爲Python新人提供一些建議,開了如何成爲一名優秀的程序員一題,講講個人Python工程師之路。java

入門

一個非科班出生的程序員入門老是困難的,找到正確的學習方法,纔是這一階段最重要的目標。如羅子雄總結的設計師之路,程序員也須要看,作,想。python

看(學習)

書:linux

《Python核心編程》git

《Python Cookbook》程序員

《SQL必知必會》github

這是我入門Python選擇的書,很厚,硬着頭皮讀下來,作了不少筆記,有不少東西一時都不會懂,可是沒有關係,不少時候我讀書不是爲了理解書裏面全部的東西,而僅僅只要知道書裏面有哪些東西,等到用到的時候能夠再回來學習,再來查,《Python核心編程》能夠做爲一本Python語法,基本數據結構用法的參考書。數據庫

《Python Cookbook》提供了不少經典的解決現實問題的代碼片斷,建議把每個片斷都本身寫一遍,能夠加深對Python的理解,也爲下一步作提供不少解決問題的思路。這本書也能夠做爲參考書,碰到與書中相似的問題均可以參考一下那些代碼。編程

《SQL必知必會》是一本SQL入門書,能快速幫助你掌握基礎的SQL語法。做爲一名Web開發工程師,掌握SQL是必需的技能。

作(實踐)

在學習了一些Python語法,瞭解了一些解決問題的思路後,下一步就是實踐了。

廖雪峯:Python教程 — 實戰篇

這裏推薦廖雪峯的實戰篇教程,實現一個完整的Web APP。雖然教程只有16天,可是我卻花了2個月。做爲一個新手,我會發現不少章節根本不可能1天搞定。可能某一天我面對的不是一個問題,而是像洪水同樣衝向個人一堆問題,這個時候我須要作的是分解問題,把1天的內容分解到1個星期來完成。

HTTP,database,MVC,javascript

以上這些姿式都是我完成教程的過程當中學到的。不少時候我會發現即便看過了教程,仍是不能按照教程的思路去寫本身版本的代碼,我須要的是去抄,教程提供了參考代碼,我會把代碼抄下來,在抄的過程當中去想爲何要這麼實現,同時學習http協議,db的相關姿式。能讀懂代碼而且能模仿寫出本身的代碼這就是我實踐的目標。

https://github.com/zhu327/blo...

爲了管理個人代碼,還須要瞭解下Github相關姿式,以上就是我入門Python最重要的一個項目,找到一個適合本身的入門項目確實能夠事半功倍。

基於教程我實現一個內容發佈系統,下一步我想在這個項目的基礎上把它改形成我想要的樣子,好比一個Blog:https://github.com/zhu327/blog

想(思考)

回過頭來看看本身寫的代碼,須要去思考有沒有更好的實現方法,代碼如何能寫的更簡潔,以及一些必備的註釋,日誌信息。在思考的過程當中更重要的是認識本身的不足,只有正確的評估本身,才能準確的定製下一階段的目標。

提升

如今我已經入門了,能夠開始考慮如何找到一份Python Web開發的工做了。

看 v2.0

我須要去了解招聘企業對於Python工程師的要求是什麼。

http://107.170.207.236/job_an...

從以上分析我能夠看到幾個比較重要的關鍵字:

linux, Django, tornado

因此我須要學習如下姿式:

  • 安裝ubuntu學習linux使用

  • 閱讀Django教程

  • 閱讀tornado教程

這裏有我整理的一份Python中文資源存檔

作 v2.0

Django是招聘企業需求最多的框架,因此個人第二個實踐項目會實現一個Django的論壇。

https://github.com/PaulGuo/F2...

F2E是一個Tornado實現的論壇,在學習了Torando的基礎教程後,我就能夠開始閱讀這份F2E論壇的代碼。首先我要列出我須要瞭解的部分:

  • 數據庫的設計,建立須要的表

  • URL路由的設計,整理一份URL功能清單

如今我已經拿到一個論壇的需求了,下一步就是用Django來實現這個論壇,說得更low一點:用Django翻譯一下這個Tornado實現的論壇。

https://github.com/zhu327/forum

以上就是我最終實現的論壇,經過這個論壇,我基本上學到了Django開發的方方面面。對Django有了一個比較深入認識。而後拿着這份代碼我找到了本身的第一份Python開發工做。

想 v2.0

開始了新的工做,須要想的就更多了,考慮到本身的不足,可能須要列出一個成長的書單來彌補自身的短板。這裏列出一些關注點:

  • 代碼質量

  • 面向對象

  • 設計模式

  • 數據庫優化

堅持

從入門到找到第一份開發工做,可能須要3~4個月的時間,考慮到不是脫產學習,須要的時間就更久了。在這個過程當中我會遇到各類各樣的問題,而每一個問題均可能會打擊到我想要放棄。

我想這個時候我須要考慮的是爲何要作程序員,爲了加薪,爲了興趣,爲了更好的生活等等。我是以成爲程序員爲目標開始學習的,因此我必須堅持,直到達成本身的目標。

解決問題

軟件開發的過程實際就是解決問題的過程,一個大的系統通過架構設計被分解成一個個小的部分。而分配給個人需求也會被我再次分解成更多的小問題,在這些問題中有咱們能直接解決的,也有我可能解決不了的。對於這些解決不了的問題,個人處理路徑:

  1. 分析問題

  2. Google

  3. 找同事商量(通常在Google找不到的狀況下)

Google

正確的Google方式是用英文搜索,不須要正確的語法,只須要幾個能清晰表達本身問題的關鍵字就夠了,英語實在很差怎麼辦?能夠先在Google翻譯查好單詞再搜索。

如下有幾個搜索技巧:

Django group by site:stackoverflow.com // 只搜索stackoverflow的問答
Django doc Filetype:pdf // 只搜索pdf格式文檔
正確的提問

在向同事提問以前,須要有本身的思考,能詳細的描述問題出在哪裏,大概引出問題的緣由,以及本身分析的問題解決方式(若是有),表達出了這些之後,被問同事才能根據你提供的上下文來分析問題。

必定要避免這麼問:

  1. xx問題怎麼弄(沒有本身的分析,沒有Google)

  2. 幫我看一下這個異常(沒有本身的分析,沒有Google)

擴展視野

我作的想的越多就越以爲本身的知道的太少,爲了擴展視野,我訂閱了一些站點:

Python 伯樂在線

Python日報

Python segmentfault

知乎話題 Python

董明偉的Python訂閱列表:https://zhuanlan.zhihu.com/p/...

Awesome Python: https://github.com/vinta/awes...

時間管理

工做的時間久了,摸索出一套適合本身的時間管理方式。因爲需求的不肯定,我不會定製周計劃。基本上天天早上到公司會看一下郵件,列一下當天須要處理的事情,大概分析一下每件事情須要的時間,而後分配一下時間到各個時段,固定天天下午5點分配一個小時的時間用來看收藏的還沒來的及看的技術文章。

在項目空窗期,會找一本能迅速提高本身某方面能力的書讀讀,好比我意識到須要優化MySQL的性能的時候,去看了《高性能MySQL》。

人都是有惰性的,學習也是枯燥的,可是成爲一名優秀程序員的目標會驅動我去不斷補齊本身的短板。

相關文章
相關標籤/搜索