在美做開發多年,寫給國內iPhone開發新手

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

        從這個論壇開始辦這個板塊就幾乎沒正面回復過什么,但平心而論,看的最多的板塊也是這個。但從沒有發表過自己的看法,因為任何一個人在今時今日都可以成為一個程序員。而在看了很多國內的程序大小論壇后,養成了一個習慣,不敢在論壇里做正面的回復,甚至不回復,乃至連文章也不寫。為什么今天破例了?因為被很多新人的那種態度所打動,因為他們真的很誠懇的在學。

  羅哩叭嗦的前言到此為止。我說一下我個人經歷在先,我做過PPC的項目經理(可能現在改名叫WM),也在塞班智能系統剛開發之初做過一些商業項目等等等等都和嵌入式有關。但我一直認為那個時候的我的開發都是不成熟的開發。為什么?因為和很多新手一樣,陷入一些誤區。就是到底什么是開發程序?這個錯誤大家常犯,為什么開發程序,是一大堆數據處理,從第一個程序誕生到今天,程序就是一大堆的數據處理。而其實很少的國內開發人員考慮過這一點,因為他們大多考慮的是自己的飯碗和升職。所以他們忽略了最基本的東西。而多數國內論壇也把這些東西認為是無需討論的。而那個時候的我也是。

  為什么我在文章的一開始就提到了一大堆數據處理,那是因為數學。可能看到這里大多數學生朋友都會笑了,數學我很強。如果這樣想,這樣你和我以前的我一樣又進入了一個誤區。這里我還是以我自己說一個例子,我在美國上calculus,在上之前,我本來不想上的,因為高數什么的我都很輕松拿到了高分了,這calculus算什么,對于中國人來說,簡直就是智商的侮辱,而且第一次Quiz和Midterm也證明了我的想法,多數的外國人的均分就60多,而中國人幾乎都是85以上。而在這成績背后我卻發現了一個問題,就是題目我們都會解,但老師為什么一定要反復的證明趨向于一個數字,他寫了滿滿一個黑板的2.0,1.999,1.998,1997 趨向于0,然后他又寫了從-.2.0,-1.999趨向于0。其實那時的我認為老師很傻,有必要嗎?你做這些不會改變定律,也不會改變任何結論。而且定律大家都已經知道了。后來我在上完后,找到了老師,問她為什么你要這樣寫?她開始笑了,然后對我說,其實過程比結果更重要,而她個人也認為在這些過程中,說不定哪天她會看到一個,那個就是一個很tiny的一個數字,他的趨向可能會不同。其實她說完這些我還是沒理解,而且我還是認為她很stupid更多的是古板。但當我完成所有的理科科目后,我終于有了很微妙的轉變,那就是哪怕是一個簡單的結論都需要去自己證明出來,因為說不定哪一天我也可以去推翻這個定律,因為我發現了一個很tiny的錯誤。 我想了半天,我決定用這個例子,因為這代表了美國和中國文化的差異,沒有那一方是對的,或者錯的。只是個人如何去看待這個問題。

  而這也是為什么要學習離散數學和線性代數和高等數學甚至物理,如果你實實在在的從根本上了解了他們,你的開發程序技能已經是有一定水準了,哪怕你就是不會C。而這個例子的證明,在國內很多,比如很多清華的數學系和物理系的學生,在phd或者master轉入了CS(計算機技術)專業,他們會有很大的發展空間,而往往都是這類人比從一開始讀CS的人取的成就要高。

  可能看完上面你已經灰心了,因為你的數學不好。數學是一個捷徑,如果我們沒有這個捷徑,我們還有創意。這說起來好簡單。看看國內軟件行業就明白,沒一個有創意的軟件,在說遠一點,你用百度去搜索一個技術參考,可能有1000到2000個結果,但可以很負責的說這1000到2000個結果都是重復的。如果你把這個keyword打入Google美國服務器,我也可以很明顯的告訴你,他的重復率低的讓你難以想象。為什么搜索結果和創意聯系起來。因為抄襲首先扼殺了創意,而什么是創意,那個不是高深的理念,更不是什么多符合數學或者物理邏輯的東西,那個是一個純粹的想法。

  而多數的程序員在有了好的想法之后,就開始束縛起來,要加密,要如何創業快速賺錢。呵呵,很符合中國特色。其實一旦當你在最初階段就把你的創意捆綁上這些附加的東西之后,他就開始隕落了,除非你有很強大的公司做支持,比如Google或者MS,或者Apple。所以,有了好的想法后,不惜代價,勇往直前才是一個程序員的信念,哪怕市場就是不好,先把它完成,在一段時間后,說不定就會被注意,in other words. 哪怕就是不成功,沒人注意,對程序員本身而言,這也是一種經驗的累計,因為只要你去寫代碼,你就會發現你需要的知識很多。 那怕就是一個小的semicolon(;) 擺的位置發生變化,在程序上,也有可能發生質的變化。therefore, Just do it if you got good idea.

  說了2個大前提,讓我們開始進入一些開發細節。我看了多數人喜歡問這個一個問題,我要具備哪些語言才能開發apple的程序或者java的程序。

  in fact, my answer is nothing. 做java開發也好,做objectC開發,乃至php什么都好,C不是必須的基礎. in other words, 你會C和不會都一樣。而為什么有很多人強調無論學什么你都要會C,這個論調在國內很多,他們說沒錯,因為可能他們老師是這么說的,或者他的學長或者學姐也是這么說的。但其實,國內多數人都沒給出一個為什么要學C的理由,其實看多英文書后,你就知道了,C是一種Thinking, 我并沒有去翻譯這字,因為Thinking代表很多,不單單是解釋他是一個想法。thinking包括你的文化,包括你的個人經歷,甚至你對其他專業的理解。而我個人的理解對C就是,他是一個做大型程序的基石,而對于你只是完成一個普通程序,可要可不要。因為現在的計算機英文開發教材都是屬于解釋性的,什么叫解釋性,就是作者把那些枯燥的東西用他們自己的經驗和實力通過最簡單的語言給你解釋了一下。所以你不需要任何其他基礎, 只需要和twitter一樣,去follow以一個你喜歡的作家,但找到這個你喜歡的作家要花很多時間。

  而開發語言,真的無太多話可以說,你只要去記住那些就可以了,OOP就那么點東西,說來說去就是繼承,多態,封裝這些。最難的也就是C++,因為他只是一個不全面的OOP,或者不完善的OOP,所以他難,因為沒完全遵循OOP的規則或者原理。 而相對java就容易很多,因為就是一個純OOP。而了解OOP的人,或者你真的掌握了她的精髓后,你會發現她是一個合理的東西,而不存在難與不難,就等于Thiniking in Java里作者反復說的一些句子,萬物皆對象。而這個對象就是我們在現實生活中天天遇到的,再打個比方,你對你的另一半有些基礎的要求,比如是男性是必須,然后要20歲以上,太小不行,則就是你的field. 而有了field就是需要一些function, 比如這個男的需要有錢,所以他能賺錢這個function是必須的,當然能實行人道這個function也是必須的。就這么簡單,OOP基礎就這些,在深入一些,也有很多,花個2到3天時間就掌握了,所以不要一開始就問難不難。請記住,在中國這么艱難的環境里,你都能生存下來,還有什么可以算得上是難的。

  而如果你有C的基礎,其實還是要看一下ObjectC, 因為很多定義還是有一定差別,就等于你會C++,可能也用了C++多年,但你剛接觸java的時候,你也要難免有點不適應,比如繼承里,你不能繼承多個base class, 而且要使用interface, 而更具體的,邏輯方面的東西更現實化,比如instanceof(), 例子有很多,但說白了就是更方便你快速開發。既然這里說到了快速開發,我在這里就展開這個話題,作為一個新手,不要考慮太多,用現有的你的資源去把你的想法去實現,那怕就是VB也好,不要太在意我今天學的這個java是不是過時了,或者ObjectC是不是太不可移植了。請在你腦海中一定要放棄這個概念,任何東西都會過時,但Thinking是不會變化太大的。而我們要master或者要handle的是Thinking.

  多討論,這個是我在美國學到的另一個東西。其實任何人都可以討論,我的另一半是學生物的,對計算機編程是完全不懂,但我很喜歡問他,你認為這個如何?他經常的回答很讓我生氣,比如他自己的項目有時候,其他人是用java寫的,他的瀏覽器沒裝可以打開java程序的東西,他就會很憤怒,為什么你們這些做程序的不把問題簡單化。我當時也很氣憤,人家用java寫有什么不對,但我靜下心來想想,他就是一個最終端的用戶,雖然他的要求不符合計算機原理,但最起碼他對這個程序是感到厭煩了,而那個用Java寫的人,完全可以用ajax加php做改進,這樣就把這個問題讓非程序員更容易理解。最起碼容易打開。所以和任何人去討論,去聊天,你會得到很多東西。而那些東西是你一輩子在書上學不到的,但肯定會讓你的程序更貼近用戶。如果你和可以和你奶奶(前提你奶奶會電腦)多聊一會,他們也會給你他們需要什么樣的程序,而不一定要到處找靈感,因為靈感就在你身邊。

  最后一點就是討論后的認同,國人很不喜歡認同別人,總是會認為自己比別人有本事。但在來美后,我也開始逐步的去承認別人,這在以后的team work中很重要,國內的team work不多,所以很難體會到,一個組員,一個手下,他們都會有他們的想法,而一個好的leader甚至manager, 是需要過人的包容力,而這個包容力的基礎就是去認同別人,因為他們會在任何的一個時間點上說出一些你不知道,或者你沒想的提示,而這個提示可能就是你的軟件項目的轉折點。

  本篇完結,我的結語就是:雖然社會很讓你無奈,但作為一個“人”,做任何事情,都要先尊重和了解身邊的一切,這樣你才能成為一個人,最少也是一個對別人有幫助的人,而程序員就是用程序去幫助人,而不是停留在自我滿足的層面。  


威鋒網 2010-07-15 08:32:58

[新一篇] 麻木的IT公民:293個公司人壓力和心理調查

[舊一篇] 【國產單機】我們能投入多少?
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表