『壹』 怎麼才能成為一個優秀的程序員
1、迷戀技術,保持對代碼的熱情
興趣是最好的老師,如果不是最初對編程充滿興趣,應該很少有人會選擇程序員這個行業,但同時程序員是一個有點乏味枯燥的工作。如果你不迷戀技術,對代碼充滿熱情,那你只能做一個平淡的程序員。
2、在實踐中成長,磨礪技術
程序員是一個在實踐中成長的職業。你看再多書,聽再多的視頻課,自以為學到很多東西,但正在接觸項目的時候,就兩手發軟,頭腦空白了。最好的提方法,是正在參與到項目中去,最好是能參與從設計到開發到測試到維護一整套的整套流程。
3、加班雖苦但也是提高的過程
虎虎在之前的文章中說過:畢業之後的前三年最為重要,要認認真真鑽研技術,積累經驗,至少能在某一方面成為技術達人。程序員加班是很正常的事情,要加班工作,加班學習,同時在這段時間要注意多總結,注意工作方法,合理安排時間,提高工作效率。你現在的付出是為了以後的成功!
4、不怕失敗,學會尋找成就感
新程序員由於技術水平、經驗的欠缺,寫出的程序bug多,執行效率低,可能被同事嘲笑(我發現這還是普遍現象),然後被上司責怪,內心充滿有挫折感。要學會自我減壓,相信挫折與失敗只是暫時的,發奮圖強。在工作中要學會尋找成就感,哪怕你只是完成一個小功能,優化了一段代碼,都是你辛勤付出的結果,是你能力提高的體現。
5、要學會寫文檔
不要以為程序員只要負責寫代碼,如果是那樣,你永遠不能有上升的空間了。因為不管是走技術路線,還是管理路線,都離不開文檔,方案文檔,技術文檔,產品介紹文檔,管理文檔等等,是你了解開發流程,產品運營的必由之路。
6、學會復制粘貼
現在的開發資料已經非常的充實,遇到難以解決的問題不要過分糾結,為難自己,請打開搜索引擎搜索一下。畢竟,你做的是工作,不是在學校做研究。
7、細節決定成敗
不少程序員都有這樣的習慣,好不容易思考出解決問題的方法,迫不及待的把代碼寫出來,功能也實現了,立馬提交代碼完事。殊不知你的代碼中還有不少細節需要完善,大到內存泄露、資源釋放、代碼是否高效,小到注釋是否規范,都是你必須關注的問題。且不談這些細節問題對你做出來的項目的影響,就是對你編程習慣的影響也是深遠的。
『貳』 30歲了,做了7、8年的java後端,感覺人越來越多,想轉行c++怎麼樣
恕我直言,你此時需要的不是一門新語言,而是該轉崗了。
5年以後,不管你會什麼語言,你的簡歷褲稿都沒人看了。或者說別人對35歲的需求不是在語言的層面上,而是具備一定產品項目管理或者業務層面經驗的中高級人才。
如果打算繼續從事技術也可以,但是就要有專精之處,大的方向比如AI,游戲引擎,分布式計算,等等。人們喜歡一個5年的熟練程序員,但一個15年的程序員沒有打人的專精領域,那是沒市場的。
我想你問這個問題,應該也感受到了壓力。但是同一水平上的重復從來不是最好方案。怎麼也要轉一下能開辟另外10-15年才是需要考慮的事情。30歲怎麼搞還都來得及。
如果以後不想再拼得太激烈,轉做產品和市場相關的職務可以考慮,相對於未來做CTO之類的一個單位只有一個的職位競爭壓力會小很多,畢竟中小創業舉帆公司對這種職位需求比較大一些。
我自己就是做了10年C++程序員轉向技術管理後來做運營管理的,當時是被迫接受調動,回頭看還是比較幸運。有些老同事技術也不錯的到我這尋求給個工作,感覺也胡答孝是走投無路了,不然忍不了這給老同事打工的尷尬。
我也不想再說多了,都是程序員,碼到為止。
『叄』 怎樣建設有競爭力的APP開發團隊
1、人員配置
APP開發團隊,筆者個人看來,每一個產品,每一次項目,其實應該都是一個周期完整的APP開發過程(先拋開運營不談),為了達到全過程的專人專崗,以最精簡最節約的方式,也應該達到以下團隊配置。
A、產品經理(項目經理):整個產品團隊的核心管理者,懂用戶,精通需求,能跑市場,了解開發,實在沒人還能拉去做測試,很苦逼,但是個什麼都懂一點的萬精油。最重要的職責就是把控產品的方向和質量,並能在前期,就對產品的運營進行規劃,並按照運營思路,推進APP開發工作。
B、安卓及IOS程序開發:這里基本是個2人的搭檔配置,一個人負責IOS蘋果開發,一個人負責安卓,就長沙APP開發而言,精通安卓和蘋果開發的人,真的很少。青橙團隊里有那麼1-2個高手,負責整個產品開發的全過程把控。APP的質量,好不好用,流暢不流暢,都與程序編寫質量息息相關。
C:後台及資料庫設計:必須對資料庫較為精通,能根據APP需求,進行資料庫設計,並搭建APP後台管理框架。這個類似傳統程序員及架構設計師的工作范疇,牛人也很多。 青橙基於一般企業復雜的APP應用,後台使用java+oracle比較多,而簡單的APP輕應用,php+mysql也可以搞定。
D、UI設計師:這位仁兄的工作非常重要,除了要做得好看,等要懂得用戶的操作習慣,讓APP更好用,要懂點產品,懂點美術,後面我們會再說起他。
為了節約成本,一個最精簡的APP開發團隊可能需要這么些人來搞定,如果有大牛,BC一起都自己搞定,不過這樣的牛人,都是不上班的,加入團隊的可能性就更小了。至於調研,測試等苦逼活,產品經理就兼了吧,至少筆者是吃過不少這樣的苦頭的,哈哈。
2、硬體設備
為啥寫這個,其實也是想發發牢騷,抱怨抱怨。做APP開發,你就得緊跟時代,最新的手機,筆記本一個都不能少。
做安卓開發,公司備著三星S4、HTC、華為,魅族等多款手機,安卓平台,兼容性一直是個問題,多測試測試總不會錯吧。
做IOS開發,這就要求更多,iPhone4、iPhone5、iPhone5S、iPad都要有,然後蘋果的程序開發,你還必須通過Macbook進行,買幾台蘋果筆記本,少不了吧,再加上每年99美元的開發者賬號,七七八八下來,幾萬塊錢就沒了。
所以說,APP開發團隊,有人說我們成本低,不就幾台破電腦嗎? 其實我們真是必須這里申明,我們真的買了好多設備....
3、軟體配置
軟體這個不知道為什麼拿出來說,主要最近蘋果升級IOS7,讓XCODE6的版本搞慘了,調試兼容性,測試BUG,調整界面風格,現在回想起來,真是挺辛苦的。
但這里說明一點,蘋果的開發工具較為人性化,很多控制項使用也很傻瓜,我們的開發人員都認為,只要掌握熟練了,其實蘋果的開發,相對安卓,反而會比較輕松。 安卓雖然很靈活,但正因為這種靈活,帶來的程序工作就更多,開發起來,就更辛苦一些。
所以,APP開發團隊,最佳狀態是蘋果和安卓分開開發,這樣效率和質量都會高一些,畢竟專精一門更容易。
4、UI及界面設計
UI設計,易用性設計,交互設計,在手機APP開發過程中,是貫穿始終的重要工作。UI設計師過去一直被稱為美工,得不到重視。但現在我們發現,好的操作流程,好的交互設計,才是APP的靈魂,好用易用,用戶會去使用。
APP團隊的UI設計師,往簡單的來說,必須具備:能深入產品需求,懂得用戶體驗,精通美術設計,將最優秀的交互傳遞給用戶。 因此,這也是對綜合素質要求很高的一個崗位,需要良好的文化素養和藝術氣質,不一定是長頭發藝術家,但是一定要懂得很多。
5、上線支持
APP開發完成後,需要做什麼?大家肯定會回答:上線。 看似很簡單的2個字,大家都認為很簡單的工作,其實有很多訣竅,並且還有不小的難度。
先不說別的,你的APP要上蘋果的APP STORE,就必須十分精通蘋果的上線流程。而且即便你了解流程,編寫上線資料,發布上線程序,都是一件考驗人的活兒。
專業的APP開發團隊,一般都有專業的上線服務人員,他們精通蘋果、安卓市場的上線流程和技巧,並對各大APP市場運作流程十分精通,能通過技術手段,讓用戶更快速,容易的找到您的APP,這就是專業性。
6、運營服務
APP開發完成,只是萬里長征走完了第一步,APP的發展,用戶數的增加,離不開後期的產品運營。這裡面可以講,可以做的東西很多很多,這里只提一點:市場瞬息萬變,運營就要採用靈活多變的方式與手段。而往往在過程中,都必須對APP進行適當的調整,作為APP開發及運營團隊,就有責任和義務,配合客戶完成這些工作。
APP開發團隊與客戶的合作是長期合作,特別針對運營的全過程,服務必須是持續性,無法間斷的,所以請您謹慎選擇APP開發團隊。
7、團隊合作
APP開發團隊,毫無疑問,是屬於一種創新型的研發團隊機構,團隊成員間的分工合作很明確,各司其責,而又彼此緊密結合。建立一支彼此信任,能力均衡,有創新精神,有核心領導的團隊,成為了我們的理想,而且我們也一直在努力。
『肆』 程序員在職業生涯中易犯的7個錯誤
1.沒有明確的職業目標
沒有目標的人生,就像無根的浮萍,水流到哪裡就飄到哪裡,一生漂泊。
如果你想要在軟體開發領域獲得真正的成功,那麼就必須知道該何去何從。或許面對遙遠的未來,你已經有了一個粗略的目標了。但是除了這點還不夠,你應當堅實自己的目標——清楚的定義在實現過程中的每個重要時間點所需要達到的效果。
我認識許多程序員和其它方面的專業人士,數十年來他們都在相同的職位上反復地做著同樣的事情。是的,你沒有看錯,是數十年。接受職業現狀,不做任何改變,是造成這種悲劇的根源。對於未來,如果你沒有明確的職業規劃,這樣的悲劇就很可能會發生在你身上。
面對於此,你該怎麼做呢?
從現在開始,花一些時間來認真規劃一下職業並確定最近的目標。一旦你達到了這個目標,你就要選擇一個新的目標了。在職業生涯中,這樣的目標會一個接著一個。你可以把這些目標寫下來,放在一個每天都可以看見的地方,這樣就可以讓你隨時回想起當前需要做的工作。
2.不重視「軟技能」或非技術的東西
我認識許多擅長寫代碼的程序員,他們可以用所寫的演算法把我耍得團團轉,他們對復雜架構的理解力和思考能力令我自愧不如。
但是真實的狀況卻是:技術不如他們的我,軟體開發領域的職業發展卻全面超過了他們,除了職位,還包括薪水、生產力等諸多方面。
在這里我並不是為了吹噓自己多了不起,而是為了向那些只埋頭專研技術的程序員們說明「軟技能」對於職業發展有多重要。
作為一個軟體開發者,我相信你也清楚,編寫代碼並不是工作的全部。在通往成功的道路上,還需要學習很多其它技能。我們需要長期與他人打交道,所以必須學習為人處事;軟體開發面臨長期的趕工與不同的需求變化,所以需要學習對心態和注意力的調整;在不斷變化的環境里有許多事情需要處理,所以應當學習對事情劃分優先順序以做到效率的最大化。另外,我們對待身體健康應當和對待自己收入一樣敏感,這個才是革命的本錢。
我還可以繼續列舉出更多的東西,關於了解開發者應當掌握的「軟技能」你可以去閱讀我寫的《SoftSkills:TheSoftwareDeveloper』sManua》一書。
總的來說,在生活中無論從事什麼樣的工作,那些軟技能通常都比硬性的技術能力更為重要,所以請保持不斷地學習這些技能。
3.不融入社區生活
在程序員生涯中有一樣東西令我受益頗深,它就是社區的幫助。成為這個大群體的一部分,不僅讓我擁有了歸屬感不再孤獨,也幫助我改進了自身的技能,向著更高的平台發展。
如果你還沒有參與社區生活的話,我強烈建議你融入這個圈子裡來。它是一個比自我寬廣得多的平台,有助於你的發展。
如果你感覺自己的軟體開發工作停滯不前,費勁腦力也無法獲得更大突破的時候,最好的方式就是加入社區,與一群有志同道合的人共同探討所遇到的困難,獲得有助於解決問題的建議。另外,融入社區生活還能夠聚集人氣,培養人脈,這對於提升自身的職業發展也有很大幫助。
但是,如何才能融入到社區生活中呢?
這很簡單,世界各地都有很多開發者團體,你可以通過程序員網站找到並加入到他們當中去。你還可以參加開源夏令營,這是一個一年一度的免費地方性活動,眾多開發人員會聚在一起分享他們的工作,任何人都可登記參加自己感興趣的話題。
如果你不希望在現實生活中與過多的人接觸,也可以選擇加入虛擬社區。
那些大眾的程序員社區會是你的第一選擇。在社區中你會發現有一些非常厲害的程序員,他們會在自己的博客上寫一些精闢的文章並解答大家的問題。除此之外,還有另外一些不錯的在線社區,比如大牛們的博客網站、各種技術論壇、討論群等。
當你開始學會分享,把自己的所知與所想都寫出來的時候,你就真正的融入進了社區生活——而這個博客就是我為自己加入這個程序員社區所做的第一件事。:-)
4.沒有專長
如果你過去常訪問我的博客或者YouTube視頻,你會發現我很多時候都在談論這個話題。這個話題是如此重要,以至於我一有機會就會說到它。
俗話說,術業有專攻。你應當選擇一項想要專精的技術並努力磨煉它。但這並不意味著你就可以放棄對其它技術的基本理解而一味地去專研某項技術——我對那些會數種語言的人是非常欣賞的。這一點非常重要,尤其是在你職業生涯的早期培養一技之長的時候。
專長可以滿足更高級的需求,因此,在同等條件下,它會帶來更豐厚的報酬並更快的積累聲望——這些對於業界對你的認可是很有幫助的。
有專長的人好比是小池塘中的大魚,受人矚目。或許最終這條大魚會跳入更寬廣的池子,但是所累積的聲望和名氣同樣有助於在軟體開發行業的其它領域的發展。
凡事只要七分就好,對於專長技術的研究學習同樣如此。過度的投入會對程序員的時間與精力造成浪費,這是得不償失的。
5.無視個人品牌價值
生活中充滿著各種變數:搬家、結婚、換工作、一夜暴富、突然發福等等。無論如何,有一樣東西始終會伴隨著你一生,而這個東西就是——名字。
你的名字會貫穿於你的全部生活,難道它還不值得你去重視么?
你的名字或者也可以稱作是你的個人品牌是一件非常有投資價值的東西,可許多軟體開發人員對此卻一無所知。
對於獲得工作、取得晉升、客戶端的登陸以及工作的開展等,名字無疑都展現了其強大的作用。毫不誇張的說,假如你臭名昭著的話,會萬事難行,而如果你有良好的名譽的話,大多事情只需通過簡單的握手就能搞定。
我認識很多的軟體開發人員,他們從不擔心自己會失業,這是因為他們投資了時間和精力來打造堅實的個人品牌。他們知道,無論發生什麼事情,在他們失業後的幾個小時內就可以獲得一份新的工作,這是因為他們在業界有良好的聲譽。
對產品和服務進行的投資看起來很正常,但是你是否考慮過自我營銷的價值?要在軟體開發行業建立起自己的個人品牌,我的建議是從創建自己的博客開始,選擇將自己的專長或者有很深了解的領域作為提高自己影響力的跳板,學會把自己的名字一步步做成行業的金字招牌。如何快速的提高自己的影響力呢?最好的方法之一就是創建對別人有幫助的文章。
就拿這個博客為例吧。這個博客建立了我在互聯網上的個人品牌和聲譽,如果你認為我的文章或者網站是有價值的,你會選擇進行分享。甚至你有可能把它列入收藏或者進行訂閱,以方便以後繼續訪問。而這只是其中一種打造個人品牌的方式。同樣的,你還可以選擇視頻網站、播客等媒體,或者在書刊上發表文章,在會議上演講等方式。如果你對如何在軟體開發領域深度挖掘自身的品牌價值很感興趣,這個網站會告訴你如何去做。
6.荒廢業務時間
在工作之餘,你應當做一些項目來練練手。
做業余工作有許多你不知道的好處。首先,它可以有效的改進你的專業技能,特別是那些在平時的工作中很少用到的技術。相比起平時朝九晚五的工作,業余工作類型多變,對於專業技能的提高更有好處。其次,它有助於你對新的開發技術和技巧的學習。這對於日後你想從事新的工作是很有幫助的。我碰到過許多程序員,他們向我抱怨在當前工作中沒有機會去學習新技術,這讓他們今後無法在工作市場上立足。而我向他們建議工作之餘去做一些小項目,使用他們今後想要立足的新技術——這種方式對於提高相關技術是很有幫助的。
除此之外,我們不要忽視做業余工作所帶來的經濟利益。人們常認為業余時間做的那些小項目是掙不到什麼錢的,而事實上它卻是額外收入的重要來源。4年以前,我在業余時間里開發了一個在Android和iOS平台上使用的應用程序,而到現在,這個應用程序還能為我創造價值。
我還認識一些程序員,他們從業余工作做起,最後把這些工作發展為了全職工作。而事實上我就是這些程序員中的一位。這個博客本身以及SimpleProgrammer周圍的其它部分現在成為了我的全職工作。我喜歡稱自己為程序員的生活導師,但是也有很多人認為我是一個專職的博客寫手。
業余工作可以讓你充滿樂趣,它能夠把你從那些你不喜歡但又必須去做的工作中解脫出來。作為一種釋放工作壓力的好方法,它會每天帶給你新的希望。
7.沒有自我學習的計劃
在我面試軟體人員的時候,我首先會問到的一個問題就是關於他們的自我學習和持續完善的計劃——如何進行自我完善。程序員如何在這個快速變化的領域保持技術與觀念上的更新?我希望獲得的回答是他們能告訴我對於自我學習與成長他們有著一個實際可行的計劃。因為一個致力於不斷學習進步的人不僅能夠讓自己邁向成功還能影響到周圍的人,使他們一同邁向成功。
然而,有如此之多的程序員對於自我學習沒有任何計劃。假如你是這些人中的一員,你就應該立即行動起來做一個自我學習的計劃。
這兒有一個可供參考的個人簡單計劃:
堅持每月讀一本關於技術學習或者職業發展的書籍。
這意味著一年時間里你需要閱讀12本書。對於我來說,我會在每天用至少45分鍾時間來閱讀。當我在跑步機上運動的時候我會同時閱讀一些與我個人職業發展相關的文章。
積沙成塔,集腋成裘。每天只需花費30分鍾時間來閱讀書籍,一兩年時間之後你的人生境遇就會發生很大的改變。
『伍』 程序員總去的交流平台,哪些比較好呢
知乎、博客園可以去看些文章類型的,開源、csdn、「問啊」、segmentfault,就是解決問題啊,那個問啊回答問題是直接給錢的,而且速度也挺快。
『陸』 工作五年以上的程序員,應該幹些什麼
我做開發十幾年了,說說我的理解。工作五年以上的程序員,應該在這些方面多多精進:在某一領域,建立自己的知識體系,形成頂端優勢。因為只有你形成了知識體系,才會更有價值,才能更好的解決問題。培養自己的通用能力,比如溝通、演講、管理、寫作、講授、組織、輔導等。這些通用能力,能讓你更好的與人協作,也能讓你獲得更好更多的做事機會,能夠更好的成長。學會思考,建立思考的習慣。正確的思考,能夠讓我們少走很多彎路。要多想,想明白再去實現,至少,也要想明白當下要做的這一步再行動。要規劃思考時間、要經常琢磨一些根本性的問題,比如你為什麼要做軟體開發,比如這個產品到底有什麼用能給用戶帶來什麼價值,比如怎樣才能做得更好,比如我能通過軟體開發得到什麼,比如五年之後我在哪裡……建立自己的影響力。在一個團隊之中具備影響力的表現是:經常有人來問你的意見,經常有人向你請教問題,很多事情或者問題依賴你。只有你具備影響力了,才能夠做更重要的事情,擔任更重要的角色。建立個人品牌和辨識度。你在一家公司工作,離開時,別人會因為你是某某公司的開發工程師而記得你,還是會因為你是機器學習方面的專家而記住你,這非常不同。所以,要竭盡全力,在公司的平台上成就自己,建立個人的品牌,讓別人因為你本身的特質而記住你,而不是因為你曾在哪裡待過。
『柒』 小公司程序員的編程水平與BAT大公司相比,有多大差距
網友一:
單純從技術上來說,大公司是小公司沒法比的,大公司系統要更加復雜,研究的東西更加深入。
比如高並發,大數據,小公司沒有那麼大流量和數據量根本沒辦法研究。
大公司一個系統N台機器,為了節省資源就要研究怎麼使機器能力最大化,優化代碼,優化邏輯。
小公司可能一兩台機器就能支撐一個系統,只要沒bug就能正常運行。
但是大公司大部分普通程序員,由於做得太專一了,基本上在某一方面做得不錯,整體能力差很遠,但是自己覺得啥都行。
這么比喻吧,如果說把程序員比作廚師。
普通公司的程序員基本上是各個飯店的大廚,啥菜都會做。
bat是御膳房,程序員什麼大菜都見過,但基本上一個大菜也做不了。很多人就是御膳房後勤部切蔥花大隊的切蔥花手。
『捌』 程序員,不會重裝系統,不懂計算機硬體基礎知識,正常嗎
不懂硬體 是正常,不會重裝系統 是不正常的。
很正常
怎樣定義懂?
你是程序員,你應該至少至少有一些模糊的概念,你的程序是怎麼運行的,內存怎麼回事,緩存什麼東西,cpu怎麼運算的,數據切入切回硬碟是什麼意思。
我見過不少程序員,一個「運行慢」就能讓他直接攤手,那些頻繁的IO開銷,不斷讀寫硬碟數據,甚至在里三層外三層的循環里去訪問資料庫,這些在他們眼裡根本就不是問題,或者說他們根本意識不到這里會有問題。
因為「編譯通過了呀,程序能運行呀,我電腦上沒問題呀」。
程序員可以不專精英硬體知識,但是想要自己提升,最好還是了解一些比較好。
至於了解到什麼程度,每個人都有差異,自己把握。
至於那些業界被奉為大神的早期程序員,其實他們當年寫程序,都是需要自己手工碼代碼去控制硬體的,包括那些你能想到和想不到的。
我是網路維護的,經常被人請教word Excel ps O_o 我說不會,,他們就說你就是干這個的怎麼能不會
正常,人家是另外一個層次,解說員和教練或伏不一定會打球
正常,術業有專攻。越是大的單位越這樣
太正常不過了。我公司里幾個程序員不會裝電腦。電腦有硬岩啟件問題也不知道怎麼解決。但寫代碼確實比較厲害
不正常。不會切菜的廚師,不是真廚師。
只要掉頭發就行,標配
很正常,這兩者之間並沒有必然的聯系,解決電腦系統問題,硬體問題是維修人員商家售後的事情。程序員很多在大學開始粗團如學的時候都是小白,除了玩 游戲 什麼也不懂,大學也只會講講計算機硬體的基本組成,不會講什麼重裝系統和Windows系統故障分析,只會講編程軟體的環境部署,編譯原理什麼。也就是說很多程序員除了編程等相關方面外對計算機和普通人一樣什麼也不懂,除非這個人是一個計算機愛好者對計算機各種硬體顯卡,各種操作系統有自己的興趣。