小白開發成長策略
- 2019 年 10 月 5 日
- 筆記
光城
2018年12月15日
Find the way by yourself! And Trust You! 《光城》
0 導語
「
大家好,我是光城,這是一篇長文,提前預警!請認真閱讀!
本篇文章則是站在一個小白的角度,從淺入深分析,如何提高自己的編程能力以及自學能力!
目錄
1.find the way
2.How to Solve by yourself
3.Love the problem
1 find the way
「
Some things you can get through Google, but the only thing you can't get is the ability to solve problems.The first thing you want do is to find your way.
尋找
在這裡,我想用標題「find the way」去陳述一下這節的重點,這一句話直譯過來是「尋找某種方式」。
這裡有個關鍵的詞語find,這句話會讓你覺得很迷,你也不用多想了,說的就是你自己,就是很迷,永遠在一開始不知道這件事的"解決方式",與所謂的"知識通路"。
如果說:你已經找到了這麼一種方式或者通路去解決某種特定問題,那你還存在困惑嗎?
針對這個問題,我想傳達的是Yes,是的,所有問題都圍繞著我,即使解決了這個問題,又會有新的問題出現,這或許就是所謂的程式設計師通病吧。
需求不斷改,bug層出不窮,技術不斷革新,一直學習埋頭苦幹!
但是,正是這些問題,以及這些困惑,讓你的自學水平及技術得到了質的飛躍,所以說 The way may be good or bad.But it depends on you!
最後,到這裡我想說,遇到困惑,不要怕,遇到問題,不要慫,就是干!直到你找到屬於你的way!
2 How to Solve by yourself
「
Search something by yourself
搜索技能
Someone give a question ,but I have no ideas. How can I solve it?
This is a good question,my answer is Google!
上面寫了一問一答,我想表達的是如果有人問你你一個問題或者提了個需求,你解決不了,那又該如何呢?
或許有些人解決問題的辦法很直接,那就是直接找會的人唄,讓他教你做!還有一種情況就是,直接讓別人幫你做,你享受天倫之樂!還有另外一種人,不食人間煙火,埋頭苦幹,自己研究,也就是通過上面的Google來解決,通過自己強大的自省能力來solve all problems!The first two answers are the most direct way, but what can he really bring to you?
前面兩種方式是最直接,簡單粗暴的,但是你真正學習到了什麼?那個所謂的"Knowledge"真的是可以轉化為自己的?又或者是下次你又碰到這個問題,重重循環這一步?
那麼問題又來了,不斷的藉助別人的力氣去解決自己的問題,是一件好的事情,還是一件壞的事情呢?
這是一個哲學問題,太深奧了,我回答不了。我只能根據我的理解來說了:「如果說,別人有空也很樂意幫你,而且這個問題不是那種很easy(沒有任何挑戰力)的問題,我的建議是,可以直接問別人,請求外援,但同時你要學會別人解決這個問題的方式,授人以魚不如授人以漁,希望各位能明白!而對於我,問別人問題問的很少,很多人問了我很多問題,或許回答了,又或者沒回答,但是我覺得我需要一個牛人指點一二,真的需要!」
接下來我們回歸正傳,本文的標題是:「小白開發成長策略」,那麼接地氣的核心內容來了!下面從實際的生活例子來學習~
前段時間,有幾個小夥伴問我問題,這麼來說的,我不是電腦的,跨專業,可以解決一下這個問題不?甚至更恐怖的是:嗨,可以代做一個比賽不!
一個比一個恐怖,哎,滿是淚啊,我想說的是,寶寶也不是電腦!!!哈哈~
首先來進入第一個核心點:如何提高搜索能力?
這是我想傳達的第一個基本能力,為什麼這麼說呢???
我就拿本科以及現在的實際情況來說吧。我大學的時候隨便玩了玩Pr,Ae,Vegas,Adobe Final Cut等等。。
套模板做影片是常態,裝系統是便飯。
對,你沒聽錯,我就是這麼過來的。其中接觸最奪得就拿裝系統中的系統為例子,經常有許多軟體問題,可軟體你百度或者Google一大堆,不就有了嗎?還有所謂的配置環境,包括裝系統在內,都是傻瓜式操作,又那麼難?
究竟是什麼,阻止了你的步伐?
我覺得是你「search」的能力,search太重要了,卻總是被人忽略,甚至總是說網上沒這方面的資料!當你說這句話的時候,要好好想想了~
這裡提到了如何提高,由於這個點非常大,所以我這裡重點做文字上的提示,以後有機會再繼續分享!
比如:各位在找軟體的激活碼或者找所謂的破解軟體時,經常無從下手,甚至下載下來的是病毒~
對於這個例子,我解決的辦法是:
1.明確這是什麼軟體,查看官網,此軟體是否收費!
2.明確軟體版本!
3.先找軟體的激活碼或註冊機等,並鎖定版本號!
4.回到1,進入官網下載!
那麼這個流程是我自己去下載一些收費軟體,去解決的問題,這裡強烈建議大家支援正版!!!我只是舉個例子~
除了這些之外,還有一些其餘的解決辦法,方法不是唯一的,但思路確實相同~
希望各位,能夠根據上述例子來學習第一個思維~
3 Love the problem
「
Every problem is a gift without problems we would not grow.
問題萬歲
問題是什麼? 你如何解決自己的問題?問題又給你帶來什麼? 有的人會說,我非常喜歡解決問題。 有的人會說,我覺得每天都糟糕透了。 當然,也有人會說,我只是個努力生活的普通人。
緊接著,我們對於上述的search能力有了基本了解後,我們需要的另外一個基本技能就是「愛上問題」!
Love the problem,The problem with problems!
你需要做的就是愛上問題,而這個問題又會衍生很多個問題,對於這裡,我其實想說問題如何解決的,但是之前有一個非常詳細的解決問題的步驟,也是我解決問題的思路,所以直接以上次的問題為例子,這裡給出地址,你們可以直接去看!
一個問題有很多種,但真正對你有幫助,甚至質的飛躍的問題,不是很多,我們每日遇到問題,每日圍繞這問題生活,也每日產生新問題,The problem with problems!你不能逃避,而是選擇去面對!
下面我來以我大學的Android開發實際例子及研究生的一個Android小作業來詳細解釋~如何愛上問題,又如何去解決問題~
在上個月的時候,c++課布置了一個小作業,大家一起來感受一下!
小作業:
1.完成手機通訊錄備份遠程伺服器資料庫
2.資料庫要求用sqlite3
3.完成通訊錄備份TF卡
4.通訊部分用c++來實現
5.採用面向對象思想實現,要求有完整的UML設計
就這個是c++的一個作業,大家看了之後的感受如何呢?
這個作業實際就是做一個Android開發,通過jni來實現java與c++數據傳輸,並且對於伺服器資料庫的訪問用c++來實現,這個就是所謂的基本思路!
當時這個思路有點繞,其實我沒清楚,最後在明白是這個思路的~
為什麼這麼說呢,因為我以前不是學電腦的,但是卻自學過Android開發,但是對於網路通訊一無所知,而在這裡,困難點對我來說,就是c++的網路通訊了~
也就是大家經常聽到的套接字,網路通訊協議傳輸socket~
明確第一個問題:我是怎麼找到思路的呢?
是在課上一個大佬說了socket以後,我才知道思路的~我也很菜,就這樣了~從別人那裡學習到的知識,但這個真的是自己的知識?
遠遠不是,下來自己去查socket通訊協議,如果用c++去寫,如何連接伺服器,如何寫入資料庫這都是問題,幸運的是Android開發對我而言是小菜一碟,畢竟之前做過兩個項目,哈哈~
回顧了一下,之前的項目,發現手機上還有這兩個app,放出圖片來,大家來看一波~
回歸到這個Android小項目,如何去解決問題呢?
其實對於這個題目,我們可以層層來剝,比如我們可以採用演算法的分治法。
我覺得這個思想是非常好的,因為可以幫助你解決多個問題,不斷的分成小問題,逐漸明確,直到最終解決最本質的問題。
我這個問題首先我要做的就是去Googlec++如何與伺服器進行連接,這個直接搜,就不對了,這樣的話,搜索不直接,太模糊了,所以這裡換個思維,連接不就是socket嘛,那我直接搜c++如何操作socket,這樣的話,在網上出現很多資料,可以找一個詳細的來學習,這是第一個:如何去Google搜索!
在這個項目中,最複雜的也出現了,那就是c++寫入sqlite3資料庫,這個太簡單了啊,直接操作就行了啊,too young ,too simpla!
好吧,我錯了~sqlite3太輕量級了,出現了很多問題,比如不支援並發操作,只能單次操作完畢,才可進行下次寫入!
這就是我通過Google資料後去解決問題的,也就是第二個:如何去解決問題!