進入軟件開發這個行業已經有近一年時間了,感覺有必要整理一下,讓自己清楚自己要走的路,以此勉勵自己。
大方向抉擇
我所學專業是通信工程,偏硬件,單片機、信號與系統、嵌入式、模電數電。。。畢業了,很想找一個與專業對口的行業。將自己的簡歷掛在智聯上,有幾家公司聯系了我,可是考慮到發展前景問題,都選擇放棄了。記得第一次面試的公司是某內公司,當時懵懵的,問她招做硬件的嗎;她說我們這邊有的,讓我過去面試看看。去了之后是“先揚后抑”,對你一陣夸贊,之后就開始游說,“雖說你的學習能力很強,但是你的技術還是不到位,我們這邊可以對你進行包裝一下.......”,當時被她說的一陣一陣的,有點下定決心的意思了。還好自己比較明智,沒有簽合同。后來聽說它特別坑人。
之后對自己的發展前景有了很好的認識:硬件對我來說確實很對口,但是門檻比較高,需要好的學歷,即使進入普通公司也只是焊點電路板,排排線。軟件對我而言門檻就相對較低了,當時也是需求量最高的職業,但我沒有什么就像某內公司所說的我沒有什么技術。
不過一個偶然的機會,我收到某軟件公司的電話,只是簡單的電話面試,我就收到了offer,網上查了一下該公司的評價,還可以,公司挺大的,感覺不會太坑,正好當時輔導員也催著我叫三方協議,我就簽了這家公司。
就這樣我就走上了軟件這個行業。
小方向比較糾結
去公司報到的路上,沒想到遇到同去報到的同伴,她們的技術相對來說比我好,而且畢業學校比我也好,這兩方面一點優勢沒有,我的心開始虛了。后來很榮幸被分到了一個比較人性化的部門。
公司企業培訓完就是部門培訓。培訓期我們可以根據自己意愿進行針對性的學習,當時對軟件開發一點概念沒有。聽同事說,學iOS開發比較難,學習Android的人比較多,我就跟著選了Android。我們的培訓也沒什么,每天的任務就是敲培訓教材里500行代碼,學習到了后期我發自己跟不上,Java代碼都不能完全理解(Android是基于Java),我和組長商量一下還是選擇了Java。不過后來大領導出差回來了,聽說我只會C,單獨找到我希望我轉iOS,領導開口我也沒什么好說的,那就干唄。不過我也有擔心的,我的課程落后很多,擔心公司會辭退我。不過領導一句話打消了我的疑慮,“只要你態度端正,我們很人性的”。
從這一刻開始我就踏上iOS這條不歸路。
完全靠自己
投身iOS,唯一的好處就是沒有500行代碼的要求。
一號坑:設備問題,大公司設備都是要申請的,像蘋果設備這個只有進入項目組才會有的,我們只能用黑蘋果,關鍵是黑蘋果還得自己裝。這個坑大了,搗騰了半星期才把黑蘋果裝起來,但是系統只能裝Xcode5,系統版本太低。又花了半星期才把系統升上去(不是網絡升,換鏡像)。總算填了這個坑。
二號坑:沒人教,公司對網絡限制比較嚴,我們只能自己買書,自己看,對著書上敲代碼。一開始在StoryBoard上拖控件,后來看了視頻才知道一個完整代碼怎么寫。后來靠一些控件屬性整理才將整個界面搭起來。
填完這些坑領導就把我拉到項目組了,項目組里我就是天天打醬油,還好組長每天給分我一兩個缺陷讓我改,我就這樣熟悉了代碼。
但是后期想學點東西只有抽空自己學,每天晚上自覺加班,看著視頻敲點代碼。后期優化代碼還是得看點書。
學習心得——這才是重點
其實前期我看寫iOS方面的書,可是看了發現一點用也沒有,都是些Objective—C的基礎,不能深入人心,看完就忘了,不如看些寫界面的書。后來才開始看書。
第一階段:寫界面只是提高興趣。不要認為界面是iOS的核心,界面搭建只是為我們創造點成就感。但是寫界面還是需要點對象的思想的。關于對象思想,我也是后來在寫代碼中領會的,因為只學過C,只懂得面向過程編程。這個思想轉變需要一定的過程,其實這中間有種只可意會不可言傳的意味。代碼寫多了自然就領會了。界面后期會變的復雜話,這就需要你回去看一下OC基礎了。
第二階段:這個時候OC就派上大用場了。什么數據類型,什么forin循環,以及控件的代理等就在這個時候領會。但是你會發現有些數據怎么也顯示不上去,但是你的程序也沒有報錯。這就要更深入了解OC了。
第三階段:ARC機制,對象管理,內存管理就不得不去了解了,這個時候學習也能結合實際解決問題。
第四階段:你會發現你的代碼很不美觀,你就需要了解一下Block,了解對象如何封裝,什么類方法,什么實例方法自然而然就領會了。
第五階段:結合項目,對一些問題解決。這樣才可以豐富你的經驗。
我認為OC是學無止境的,總有一些新需求讓你去學些新東西。
總結
以上是我學習iOS這么久以來最想說的,其中的意味只有經歷過才能領會。后期我將我平時項目中遇到的問題以及解決方案放出來。重在總結。