雖然熟悉操作系統ucosiii及arm架構但是卻苦於不知道該去開發些什麼?
要解決這種瓶頸問題該怎麼做呢?平時都是朋友遇到一些操作系統問題以及arm內核問題會來找我。涉及到產品開發,和架構系統分析等這些問題就一臉黑毫無頭緒。
謝邀。
這個問題我想了好幾天,決定還是打擊一下題主吧。
首先,我想到的一個問題是:一個軟體工程師和一個編程愛好者(或者學習編程的學生)的區別是什麼?
我能想到的有兩點:
1、軟體工程師通常要用指定的方法、演算法、語言、設計方案去完成指定的項目、模塊,並達到指定的性能、代碼尺寸等要求。一般編程愛好者沒有這麼多的限制。
2、軟體工程師需要將自己的模塊組裝到一個更大的項目里,這個項目的規模可能是十萬、百萬甚至千萬行的。一般編程愛好者沒有這樣的需求。
題主之所以有這樣的迷茫,我覺得原因就是自己仍然定位於一個編程愛好者,而不是一個工程師或者正式的開發人員。
我認識過很多編程愛好者們,號稱自己有多少年的編程經驗,有人說自己有五年的操作系統開發經驗,再仔細一問,原來是自己的操作系統,而非真正的商業開發。當然,我過去也是這樣寫簡歷的,我從小學五年級開始編程的,我曾經把自己的編程經驗寫成了十年,不過現在我已經不這麼寫了,會讓人笑話的。
我這裡沒有鄙視或者看不起編程愛好者的意思,大多數正式的開發人員過去也都是愛好者,但大多數愛好者容易犯一些錯誤:
這個功能我實現就可以了,至於效率怎麼樣再說吧(例:設計一個大整數操作庫,但性能很差)。
這個功能太難搞了,算了,我不搞它了(例:公共DMA庫太複雜了,不做DMA了)。
……
商業開發與愛好者的不同就是:一旦項目立項,大多數情況下你沒有選擇放棄的權力,大多數情況下你沒有討價還價性能或者需求指標的權力。
回到題主的問題,不知道開發什麼,說明你開發能力還不夠強,最先需要的就是項目經驗,比如做一個uCOS的驅動。不要告訴我你不會做!一個合格的工程師沒有選擇開發自己會或者不會的東西的權力,要是什麼東西都等你會了再弄,那還要你幹嘛?別人也可以去學。
我很推薦編程愛好者做ACM題,因為ACM題有嚴格的考核指標,雖然ACM題離實際項目還很遠,而且ACM的很多理念其實不適合項目開發,但起碼能建立起一個完成需求的意識:要達到題目的需求。絕大多數愛好者都缺乏這種意識。
硬著頭皮去做,像一個真正的工程師一樣,在規定的時間內用規定的方式實現規定的需求。這就是你要做的。開源項目那麼多,uCOS里缺的驅動那麼多,隨便找一個做就可以了,不要說不懂硬體,誰剛開始做驅動開發的時候就懂硬體了?找手冊去讀啊,找不到就去搜啊,這點困難就克服不了可不行。
我說完了。
說明你做的實際開發項目還是少。
你想一輩子賣糖水,還是改變世界?呵呵
第一眼看到題主這個問題感覺有點滑稽。。。如果這個詞語讓題主感到不快敬請諒解,我只是直接說出我的感覺。
由題主問題描述開始,題主自問「熟悉」ucos3和「arm」,能夠解決閣下的朋友們的「操作系統」方面的問題和「arm內核」方面的問題,卻無法解決「產品開發」和「架構系統分析」方面的問題。先評價一下題主的用詞,我就一個感覺「玄」。
請問什麼是「arm內核」方面的問題?這裡的「arm」的含義是什麼?「產品開發」的問題又是什麼,可否分享出來大家討論一下?至於「系統架構分析」……我真不懂了,什麼系統?軟體?硬體,還是什麼?題主的描述讓我瞬間穿越到了大學時參加科技競賽之類的活動時寫作品設計文檔的時候。在這裡斗膽問一下,題主工作幾年了?希望滿篇的問號沒有冒犯題主,如果造成題主不快,在這裡向題主道歉。或多或少的在題主的問題里回想到了學生時代的自己,希望這幾行字能對題主有所幫助。看看開源項目吧,別人在做什麼,找些感興趣的試著貢獻一些?
推薦閱讀: