python能开发什么产品_三周学 Python ?不,三周做个产品
我的同事在看到毫無開發經驗的我用三周時間,不但從零基礎用上了 Python,還做出了一個客戶關系管理系統,強烈邀請我分享經驗。惶恐,因為我并沒有出色的智商,也沒有覺得三周學 Python 是一個體現自己牛叉的事情(不少人可能用一周左右就可以做到),思考過后,我還是答應了同事的邀請,復盤總是一件能讓人獲益匪淺的事。首先,我接觸 Python 也就幾周,不可能分享 Python 的技巧和經驗,其次,通過對同事需求的分析,我發現他的真正需求并不是學 Python 這件事,而是他感覺我比他高效。于是,我寫下了這篇心得,以供那些有意愿,卻未能有機會來參加我分享會的朋友們。
繞不開的三個終極哲學問題
我是誰
- 我是一個全球分布式云存儲系統的軟件測試工程師,常年工作在 Linux 平臺下。
- 管理過 20 人的測試團隊,負責測試交付。
從哪里來
- 曾就職于一家外經公司的國際勞務部,管理大量出國人力資源資料檔案。
- 現任一家軟件公司軟件測試工程師,負責一個全球分布式云存儲系統的測試。
要到哪里去
- 短時間內掌握 Python,期望能學以致用。所謂「人生苦短,我用 Python」,它向我敞開了編程之門。
分析態勢
為什么要花時間研究這三個問題?因為我可以在此基礎上分析出我的優劣勢、機會和威脅,也就是肯尼思安德魯斯的 SWOT 分析法。只有清晰了態勢,才能規劃出一個明確、具體且能追蹤管理的實體化目標,而非面對一個空虛無法明細的愿望。
當時我簡單列了一下:
優勢
- 擁有 Shell 這一初始技能
- 有自動化測試經驗
- 專業的灰盒測試技能使自己同時擁有客戶視角和開發思維
- 作為一個大型分布式存儲系統的測試經理,具有很強的項目管理能力及交付經驗
- 可以把 Python 作為工作中的一項改進內容
劣勢
- 沒有任何語言的開發經驗
- Python 零基礎
機會
- 網上有不少優秀的 Python 教程
- 業內比較看好 Python
- Python 可以像腳本一樣使用
- 項目組內鼓勵自我學習型工程師
威脅
- 平時為追求工作效率,可能會使用熟悉的 Shell 而非生疏的 Python
- 工作中不要求使用 Python
立項
分析完之后,我制定出了第一個實體化的目標:
熟悉 Python 思維,把工作中現有的 Shell 腳本用 Python 重寫。
何為 Python 思維,我并沒有把這個名詞定義得多么玄乎,其實很簡單,就是在拿到一個需求的時候,我知道從何下手,并且能熟練的反應出用 Python 語法,不讓自己覺得很痛苦。所以當我能夠把目前工作中所使用的 Shell 腳本都轉換成 Python 的時候,就肯定能達到這個效果了。
為了達成這樣的目標,我列出了約束這個項目的三大要素:
范圍
- 范圍跟目標不一樣,目標是個最終狀態,而范圍包含了具體要做的事情。
- 比如到底要學哪一款教程,具體要把哪些腳本重寫。
時間
- 總周期:一周。
- 為什么逼自己這么緊?雖然這個項目看起來不需要花費金錢,但這項任務一定會耗費自己很多的非工作時間,這些都是應該計入成本的,時間就是金錢,戰線拖得越久,損耗越大。
- 那這個時間是拍腦袋想的嗎?當然不是,我制定了更詳細的日程表,后面會提到。
資源
- 網上的教程很多,其實只要認定一個,專心看下去,都是可以的,不必糾結哪個教程最好。我直接搜索了一個在線閱讀起來也比較方便的圖文教程,為什么沒有選擇視頻?因為太費時間,有時候為了提速,我必須要一目十行。
- 人力資源很純凈,就我自己一個人。
- 另外還有一類資源不能忽視:隨身的筆記本電腦和流量充裕的手機。想要短時間內完成目標,必須用上所有可能的時間。有些人覺得零散的時間無法運用,我不完全認同。零散的時間可能無法專心編程,但可以用來做搜索式學習,以強化或者探索學習過程中遇到的問題點,所以筆記本電腦用作完整時間的學習,手機則是用在碎片化學習的時間中。
計劃
由于只有一周時間,所以必須要把時間表細化到每天、每半天、甚至每個時間段,比如上班前、中午休息時間、下班后,還需要考慮到一些影響因素,比如就我來說,那一周里面有一個已知的未知狀況 —— 可能要出差一天,但是預估應該只會占用上班時間,所以判斷它不會影響進度。
時間表不僅僅是思考自己有哪些可以利用的時間段,還要計劃每個時間段做什么,比如哪幾個時間段學習,學習的具體章節,幾天之后就要開始腳本重寫,具體寫哪個腳本,越詳細越好。
控制進度
每天按照計劃的時間表來學習,想按時完成教程一般都不會出現狀況。意外多會發生在實踐階段,比如我經常會發現費力寫了一段代碼,竟然是重復造輪子,因為早有人提供了使用起來更方便快捷的第三方庫。對此我并不喪氣,因為我的目標是完成 Python 學習,而不是利用最高的效率去寫 Python 程序,雖然別人已經造好了輪子,但我練習了基礎,鍛煉了 Python 思維,不虧,但它著實影響了進度。
每個時間段我都會檢查自己是否按時完成進度。如果落下進度,只能趕工,怎么趕?如果真的壓縮了工作之外的所有時間,那么只能選擇稍微犧牲一下睡眠,以不影響第二天工作為限。那些「保證睡眠時間」的雞湯文就不看了,天道酬勤才是真理。
風險評估
但即使這樣,也難免還會出現失控。當我發現連續兩天,也就是差不多 6 個時間段的進度都未能達成時,我意識到最后的目標肯定要延期了。雖然有點沮喪,但并不覺得難以接受,項目延期實在是再正常不過的現象了。
需求變更
在我分析完延期的主要原因是在于時間沒有供給充足,比如出差那一天的時間遠遠超出我的預估,以至于相當于少了一天的練習。我開始考慮的是延期兩天完成目標,雖然這是一個非常合理的需求,但在第二天我就改變了主意,總覺得少了點什么。于是,在分析了 SWOT 之后,愿意接受增加范圍帶來的影響,對自己提出了一個重大的需求變更:
- 范圍從「把所有 Shell 重寫」變更為「挑選兩個腳本重寫,用 Python 寫一個客戶關系管理系統」
- 項目完成時間由「一周」變更為「三周」
之所以選擇做一個客戶關系管理系統,是由于我曾經每天都要管理幾百人的信息資料,對此類信息的管理有一些理解,另外因為斜杠青年的身份,我也需要這么一個 CRM,Python 的簡單易用,也讓這個目標變得可行。
由于這一重大變更,我不得不重新啟動、規劃、執行、監控。
變更后的項目其實包含了兩個目標了,所以我的內心是把這次的項目當作兩個項目去管理的, CRM 的實現更多還是站在了產品經理的角度去管理。
最終,我按時完成了預定目標,做出了一個適合自己用的 CRM,這個 CRM 并不完美,當時甚至沒有圖形界面,但它實現了從無到有。(第四周結束的時候,我又迭代完成了兩個大版本的改進,但由于沒有產品開發和架構設計的經驗,導致在第三版的時候幾乎重寫了所有邏輯)正如一開始我說的一樣,這不是一篇 Python 的快速學習指南,更像是 PMP 的文章,我的整個過程涵蓋了 PMP 五大過程組。在這次的項目中,我接觸到了很多新知識、新工具,甚至對于產品的架構設計也有了理解,希望分享的這次心得,能和大家一起進步,讓自信的朋友更肯定自己,讓懷疑自我的朋友突破自己。
總結
以上是生活随笔為你收集整理的python能开发什么产品_三周学 Python ?不,三周做个产品的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017申卡被拒?没关系,四招让你快速下
- 下一篇: MongoClient类参考文档