1. 程序員面試過程中,面試官想要從"自我介紹"獲得什麼信息
工作10餘年,經歷過很多次面試,也面試了N多人。這些年來,已經有好些位朋友(或同事)與我聊起相關話題,涉及面試,更關乎職業生涯規劃。感觸頗多,就藉助自媒體的浪潮,與更多的程序員一起共談面試經歷,希望可以讓程序員的面試過程變得更舒適。
萬事開頭難。頭腦中的萬千個思路,在筆尖流淌,可就是不願意走到紙上。既然主題是技術面試,那就從面試過程中最簡單的最直接的第一個問題,「自我介紹」開始講述。
本人自我介紹:非典型程序員,從事研發工作10餘年,受互聯網產品熱潮的影響,現自認為可以兼任半瓶水晃盪的產品經理。
"我是面試官"介紹:從產品設計角度解讀面試過程,嘗試分析面試各個環節背後的動機和原因,從而,讓程序員在面試過程可以更好地展示自己,也希望與各位面試官共勉,以改善現有的面試體驗。
面試"官":Interviewer,此官非彼"官",而是職責-進行面試者,這里基本特指面談專業技能環節的面試官,具有選擇未來同事的權利。
對面試官的建議:面試前仔細閱讀候選人簡歷,有精力的話可以針對具體簡歷內容准備相關面試話題。對於一個面試前沒有詳看簡歷的面試官而言,候選人在自我介紹的這段時間,面試官就會去詳讀簡歷,而這可能會降低候選人的積極性,也會給候選人留下不好的印象。
面試前,面試官可能會虛寒溫暖,以緩解候選人的緊張情緒。那麼當面試官讓你做自我介紹時,就正式進入面試主題了。自我介紹,不會對面試起決定作用,但會影響面試官對候選人的第一印象,甚或部分影響後繼面試官的話題選擇。那麼,針對這個問題,面試官心裡究竟想要知道什麼呢?
1.你是誰
雖然你的姓名年齡都在簡歷中,但通過你的聲音、肢體語言,又或是你的姓名由來,背景故事,都可以決定你的第一印象是否深刻。
2.你會什麼
面試官首先感知的是你的語言組織水平和邏輯總結能力。
其次,面試官想知道,你的知識面如何,是否對技術有濃厚興趣,特別關注的是你的特長是什麼。
3.為什麼是你
當提到你的專業技能與特長時,面試官最感興趣的是,你的知識面與當前崗位的技能要求的匹配度;如果有類似的業務經驗時,面試官會更高興,因為你可以快速熟悉當前崗位。 那麼主動提及職業規劃呢,一方面,一個對未來有追求的程序員,通常也會把當前崗位的事情努力做好。另一方面,方便麵試官去判斷當前崗位與候選人的職業規劃的匹配度。
候選人做完自我介紹之後,面試官如果沒有獲得相關問題答案的,會在後面的談話過程中作為問題單獨提出。而如果已經獲得一個簡要答案的話,那麼這個答案就是追問的基礎,他可能就會有針對性的深入探討相關話題。
還有程序員需要了解的一點:不同的崗位,不同的公司,面對不同的招聘需求,面試官的側重點是不一樣的。但只要可以全面地介紹自己,就邁出了成功的第一步。
2. 科班出身和非科班出身的程序員差距在哪
1.有內存概念,科班的人編程一般都知道自己在什麼時候需要跟內存打交道,什麼時候不需要,而非科班的人,大部分都是功能導向的,很多人不理解內存在計算機科學裡面的重要地位,像python這樣的語言,你其實大部分時候看不到內存,跟你打交道的是list呀,map呀這些數據結構,你在寫code的時候一般都不會考慮他的內存情況。
2.不會被局限到框架中,大部分培訓班出來的人,都是學了一門語言加框架,所以他一般就是背的這些東西,但是不理解,比如典型的web框架,尤其以前jsp時代,好多非科班的人,捧著一本厚厚的jsp書跟查字典一樣學這個東西,非科班的人容易被某個框架局限住。而科班的人一上來就知道所謂框架不過是人家寫好的code,你理解他在做什麼就可以了。
3.對操作系統的理解,這一點上很容易看出科班跟非科班的差距,大部分非科班的人看到的都是程序呀,語言這一層面的,但是科班的人,如果操作系統學的不錯的,他關注的其實是對機器的抽象,他知道我們要run一個程序,需要這么一些東西,包括進程怎麼管,內存怎麼管,io怎麼管,網路怎麼管,這樣對於編程來說,你其實拿到的是什麼,是一個進程管理器的句柄,一個內存管理器的句柄,一個io管理器的句柄,一個網路管理器的句柄,有這幾個功能句柄,你就可以操作這個機器了。
4.再進一層是緩存,這個可能需要有工程經驗的科班人士才會有的意識,實際上計算機體系結構,只有一個東西就是緩存,跟上層應用相關的cache最典型的就是python裡面的迭代器。弄明白這個,很多架構上的事情你才會明白,比如資料庫有一個cache,搜索引擎有cache,你做的所有的優化,基本上都是跟cache相關的。
5.抽象的意識,這個也需要寫過很多實踐的code才能明白,跟科班可能關系不是很大,跟悟性有關,有的人很笨,無論是不是科班,他就是悟不到這一塊,有的人很聰明,無論是不是科班,只要他寫過一些code,你點撥他一下,他自然而然就知道什麼時候該做什麼樣子的抽象。
3. 為什麼會有女孩喜歡程序員
Bi Bo,養猿一隻
養猿五年,是只非典型性程序猿,其特徵為『 錢不多,話不少』,智商情商都高,簡直是個話嘮。明明我家裡沒有森林,卻養了一隻程序猿。我的養猿經歷如下:
家有程序猿第一年:
聽他用極大熱情和最生動易懂的語言講程序是什麼,各種語言是什麼,演算法是什麼,etc.
家有程序猿第二年:
早已習慣了異地戀網上聊天時這樣的對話:
「幹嘛呢,親愛的?」「寫程序啊」
「怎麼不說話嘛,親愛的?」「哎呀,寫程序呢」
「好啦,我要睡覺了~」 「恩啊,我寫完這個就睡。。」
家有程序猿第三年:
好朋友的女友說,「寫代碼,就知道寫代碼!我重要還是代碼重要?」 我淡淡一笑,心說,「唉,要有自知之明啊姑娘,這種問題根本不用問就知道答案的。。」
家有程序猿第四年:
他來加州看我,結果變成我安排了滿滿一周的灣區矽谷互聯網公司行。我們最快樂的時光就是沖去各種electronics
stores抱回遙控飛機、賽車、投影儀,回家試驗它們的性能,在校園的大草坪上比賽。
家有程序猿第五年:
多年來被某人指手畫腳著更換了所有的電子產品,慢慢地變成了各種電子產品的死粉,電影只想看1080p,琢磨著怎麼帶著google
glass去朝鮮,一個人在機場的時候喜歡對比各種品牌的耳機和Brookstone的各種遙控飛機....
碰上Geek電子產品精神潔癖處女男的結果就是...家裡所有的舊電子設備(手機、筆記本、耳機種種)全部要保存在原裝盒裡規規整整地擺在櫃子里.....
我不是程序媛,我知道這些年他也在默默地遺憾。認識第一年捧起他的編程教材的時候,我就發現CS並非我的真愛,但我還是願意多了解科技新聞和新產品,多去結識互聯網行業的小夥伴,偶爾試著學寫點小東西以圖在快樂中了解些「編程之美」。
慢慢地,我開始享受坐在男友旁邊看他和朋友聊各種技術問題。有次,一同聚餐的女友問,「哎呀,這么無聊的對話你怎麼聽得下去?」
我偷笑,其實這是特別好的學習機會,而且覺得暢談中的男朋友特別有魅力。(捂臉走了~~)
魔女劉,男票是程序員
我們公司是做化妝品代理的,所以會有很多護膚品、香水、彩妝之類的東西,無意中看中了一款Burberry的香水,就拿下了,然後給他發了個QQ消息,內容如下:
但是後來慢慢相處,他讓我發現程序員、理科生不是想像中的模樣,至少他不是,他有太多太多優點,多到讓我可以忽略他是個胖子。
他很愛干凈,愛上他就是因為他身上特殊的香味,讓人依戀、沉醉,即使炎熱的夏天,也不見他身上有什麼難聞的氣味;
他上進,只要有空,就會鑽研技術方面的知識、整理讀書筆記。我知道會有人抱怨程序員男朋友經常加班,我也會抱怨,每次問他幾點睡覺,他總說快了快了,結果半夜一兩點了身邊還是空的,但當初不正是他的認真他的負責吸引了我們嗎?
他沒事總叨叨技術上的專有名詞,搞得我現在對很多詞都不陌生,他的願望是教會我寫代碼,真可怕......
他每天都很忙,但只要我需要他,他總會第一時間出現;
他溫柔體貼,每次在外面遇到好吃的他總會帶一點回來;我膽子小,他擔心我在家害怕能回來早點就回來早點;我的手不能沾洗潔精,他包攬了家裡洗碗的家務;我脾氣大,他不跟我吵架,總是很耐心的哄我......
他廚藝好,只要想吃的菜,照著菜譜他都能做好。
他不僅了解理科知識,連天文地理歷史也比我這個文科生強,甚至連《聖經》也讀過幾遍,哲學也略懂,總之,每次提到他簡直各種驕傲,真不知道自己從哪裡挖出來的寶;
在生活中,他幽默、可愛,偶爾犯二,和他在一起永遠不覺得無趣。
【和大家分享一些小故事】:
1、 我:幫個忙唄。
你:說。
我:幫我把熱水器里多餘的熱水放進水瓶里。
你:好。
十分鍾後,起身去衛生間。
我:黃大爺,你熱水瓶蓋蓋兒了嗎?
你:蓋了啊。
我:你大爺,蓋子蓋了,那瓶塞呢?
你:哦,忘了。
2、雙十一我們分別在網上淘了些寶貝。
11月14日。
我:我買的東西只有一件沒到貨了哦。
你:我的還沒發貨,哭。
我:哈哈哈,人品。
你:沒關系,反正都不是給自己買的。
我:靠,賤人!
3、 早起遛狗。
你:帶錢了嗎?
我:帶了。
你:請我吃早飯吧。
我:為什麼?
只見你立刻抱著我的胳膊,道:人家是你的人嘛。
我:額......買。
李大方,減肥不減臉,長肉不長胸
不知道我的回答是否切題,因為我已經嫁給程序員了。
印象最深的一件事是,有次和老公爭執,老公嘴巴笨,說理又說不過我,一直挨我訓。
最後他突然哭著沖我大喊:「我這么早結婚就是不想管這么多破事,我只想安安靜靜的碼代碼!!!」
。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。
我只想安安靜靜的碼代碼!!!
。。。。
安安靜靜的碼代碼
。。。。
碼代碼
。。。。
。。。。
我會說在那個爭得面紅耳赤的情況下我噗嗤一下笑了么= =
匿名用戶
程序員男朋友是一種很呆萌的生物。絕對不是只會修電腦而已。
1.很多人說程序員智商高,情商低。其實不是的。只不過你恰好遇到了一個情商低的人而已。
智商高是真的。所有程序員都是很聰明的。
不和我吵架。不是因為不會吵。其實他很聰明,要是想說道理我肯定說不過他。但是他知道要讓我贏了我才開心。
2.睡覺睡的很晚。哄我睡了他才會睡。好就好在每天都可以和我說晚安,我從來沒問過他你睡了嗎這個問題。不過白天起的也是不早。(從沒聽見過早安
3.從來不嘲笑我程序編的不好,每次都很耐心的說我教你編程序吧,然後我都說滾開我不要被你鄙視,然後他就笑嘻嘻的吃泡麵去了。
4.很少玩游戲,雖然後來有段時間去了一家網游公司工作了一會兒,但是也很少玩。但是能編出各種好玩的東西給我看哄我開心。對於我這種程序白痴來說真的挺有用的。
5.一般我從來不問他在哪裡,他的電腦在哪裡他就在哪裡。特別特別宅。
6.我不用擔心沒有地方找各種軟體的下載地址,不用擔心電腦各種崩盤,身邊的妹子電腦有問題的時候,我一般都捨不得麻煩他,一臉驕傲的說這個是小問題嘛,不過他太忙啦沒時間。
7.我的消費觀被改變了,所有電子產品更新換代的時候能聽他吐槽各種。各種發布會從來不睡覺,第二天話比誰都多,有時候噴完一個產品,我以為他厭惡至極了結果沒多久他就買了一個回來(這尼瑪是什麼心理……,現在看到所有電子產品都不覺得貴了,尤其是當我知道他的機械鍵盤的價格,我買吃的的時候更加歡快無罪惡感了了。
8.很不喜歡陪你逛街陪你無聊是真的,時間比較少也是真的。但是在一起看電影吃好吃的你想玩什麼都會陪你玩。
9.出軌概率極低。你們懂得。
10.挺喜歡看美女關注各種美女的。(如輪子。
11.人都很善良。不會多愁善感,自尊心一般都普遍偏重。
12.有個程序員男朋友很酷。感覺有個技術大牛陪在自己身邊。感覺無所不能。
13.為什麼總有人說很呆呢 →_→ 我覺得很逗比啊,從來都不怎麼正經回復你的話,說話風格也是很幽默的。
14.他喜歡看動漫,買手辦,買模型,有時候我會嘲笑他幼稚,(媽的明明感覺真的很幼稚啊!
15.不會哄人。哄人千年一句:我錯了。其他的無論如何都別不出來了。(後來我就不指望了…和程序員交往都可以自我癒合能力爆表。
————————————————————
但是我們已經分手了。而且不聯系了。他應該不看知乎。
但是我還是覺得有一個程序員男朋友是很酷的一件事。真的。
希望以後還能再遇到程序猿當男票。
匿名用戶
位! 等我解決完這個Bug再來回答。
---------------------------------------------------
忽然發現都已經五月份了。bug早就解決了!我是機智的程序媛!
既然沒事干,不如回答一下吧。
首先,程序員男朋友是個男的(我知道是廢話!),他有一般男生一樣的愛好。
對游戲愛得深沉是肯定的。 如果說代碼是他的二老婆的話,游戲應該是他的三老婆。
很宅。 當然幸虧有我解救了他,讓他偶爾感受下外面的世界。
愛萌妹子。 但我應該不是萌妹子吧 嘿嘿- -
不太會說話。
單純善良。
賺得多? 和其他專業畢業生比起來算比較多了吧,可以包養作為學生黨的我咯
下面是兩個程序員的生活。
紀念日以2的次方作為整數過。
視頻的話大多會請教他編程技術。我覺得技術很牛的程序員很有魅力呀。
可以幫我解決各種bug,寫代碼的時候很踏實呀,但也有依賴心了。
第一次送我的禮物是機械鍵盤。(都沒有hhkb,差評)
後來又給了我一個運動手環。
本來覺得他會有很多特點可以說一說的,但其實仔細想想也沒啥好說的。但和他在一起的這么多日子裡有很多有趣的事情。
其實程序員男朋友也沒啥特別的,但對我而言他是獨一無二的。
【網路整理】
4. 咋樣理解非典型程序員呢
非典型程序員,愛著代碼,也愛著自己喜歡的一切。他鼓勵程序員在不影響正常工作的情況下,投入時間玩轉自己的副業、愛好。
5. 什麼是低代碼開發
低代碼開發平台(Low-Code Development Platform,LCDP)是低代碼開發所需的環境。大多數低代碼平台都是以雲上提供的aPaaS(Application Platform as a Service,應用程序平台即服務)的形式,不僅用於開發,還用於應用程序的運行,實現了軟體開發到應用的一貫性支持。
所謂低代碼開發,是指盡量無需編寫源代碼,通過使用「圖形用戶界面/GUI」這一可視化操作,在極短的時間內實現系統開發的手法。目前也有通過在Web瀏覽器上搜索所需組件,整合粘貼來製作應用程序的工具。
採用低代碼開發,無需SQL記述就可以製作資料庫,簡化開發工序。在保證一定擴展性的同時,可以有效縮短開發工時。
低代碼開發平台最初被關注的是用於移動應用的開發。與基礎系統開發相比,手機app開發對速度的要求更高,而且還必須支持多設備。在傳統意義上,要在短時間內推出這樣的移動應用程序是非常困難的,於是,低代碼開發平台進入了開發人員的視野。
在現今社會,低代碼開發平台受到關注的最大理由是數字化轉型(DX)。所謂數字化轉型,是指通過人工智慧和物聯網等信息技術,將一切事物通過數字數據連接起來,從而從根本上改變企業業務模式。
目前許多企業都在致力於數字化轉型,以求在高速發展的時代中生存下來。企業的IT部門為了推進數字化轉型,必須更密集的進行軟體開發。但是,軟體開發技術人員的數量是遠遠不夠的,僅靠IT部門根本無法滿足軟體開發的需求。
低代碼開發平台,可以被一般的業務人員、一線工作人員、管理人員等非專業的開發人員使用,無論是否有開發基礎或經驗,都可以經過簡單的培訓進行軟體開發。
縮短開發時間
低代碼開發最大的優勢是可以縮短開發時間,也就節約了開發成本。低代碼開發平台提供了大量的通用組件,可以實現一些基礎功能。必要時可以添加自己編寫的代碼,來滿足用戶的功能需求,提供質量穩定的應用程序。
無需擔心安全性
低代碼開發平台的供應商會提供相應的安全對策,用戶無需擔心程序的安全性以及開發過程中的安全風險。為了實現特殊功能,需要自己編寫代碼時,用戶只需關注自己的編寫部分的安全性即可。
降低開發門檻
在低代碼開發中,無需編寫復雜的源代碼,就可以在專用的平台上編寫程序。即使沒有受過編程專業教育的人,也可以在平台上輕松地進行開發工作。在傳統印象中,程序開發都是由專業的工程師來完成,使用低代碼開發平台,程序開發的門檻大大降低了。
通用性組件
低代碼開發平台提供了大量通用的組件,這些可供使用的組件種類多樣。
此外,用戶也可以利用第三方開發的組件。這樣的可再利用形式的組件,支撐著在低代碼開發平台的視覺建模。
視覺建模
低代碼開發平台以模型驅動型開發為基礎,任何人都可以通過可視化建模,輕松實現程序開發。
通過拖放可以將所需的流程和組件整合,無需編程即可創建程序。同時,有編程技能的工程師也可以根據需要進行編碼,從而定製組件。
支持各種架構
要開發與企業架構相對應的基礎系統,就必須具備與各種系統協作的功能。在這一點上,低代碼開發平台支持大多數的主流操作系統和資料庫。
另外,通過豐富種類的API,可以和外部系統自由合作。因此,低代碼開發平台具有可擴展性和開放架構,可支持大企業的基礎系統開發。
基於代碼的擴展
完全不使用代碼的無代碼工具,特點是使用預設好的功能來製作簡單的應用程序。對於低代碼開發平台,用戶也可以通過編碼自由擴展組件的功能。
低代碼開發平台可以根據客戶各自的需求,進行各種各樣的定製,即使是復雜的大規模系統開發也能應對。
軟體全生命周期整體支持
目前提供的低代碼開發平台大部分採用的是雲服務aPaaS的形式。
因此,低代碼開發平台並非單純的應用開發工具,從與資料庫的自動連接、測試、正式啟動、進一步運行管理、變更管理等開發工序到實際運用工序,搭載了支持整個軟體生命周期的功能。
與低代碼開發平台對應的是無代碼開發平台(No-Code Development Platform, NCDP)。無代碼顧名思義,就是不以編寫代碼為前提的開發方法。
低編碼和無編碼在某種程度上非常相似。前述的可視化建模、可再利用的通用性組件、生命周期管理等低代碼開發平台的特徵也適用於無代碼開發平台。
無代碼開發平台同樣適用於專業的開發者和無基礎開發者,提供了能夠在更短的時間內輕松發布應用的環境。無需通過編碼進行編程,通過PaaS平台提供,可以在不構建操作環境的情況下立即運行。
乍一看,無代碼開發平台只是從低代碼開發平台中去掉了編寫代碼的要素。但實際上它們是非常不同的。
首先,無代碼開發平台不能通過編寫代碼來擴展或定製功能。因此,無代碼開發平台目標是通過預先准備好的組件和API,實現功能范圍內的相對簡單的程序開發。不需要專業開發人員進行系統設計和資料庫設計,經過簡單的功能設計後立刻就可以使用。
典型的例子是使用Excel等電子表格的普通業務人員,將Excel和紙質工作系統化,自己創建應用程序,以簡化日常工作。這些應用程序由其使用者來完成運營,隨著業務的變化可以靈活的調整應用程序的功能。
無代碼開發平台不能通過編寫代碼擴展功能,所以不適合功能較多的程序開發。此外,由於API的系統協作自由度較低,也不適合核心系統的開發。
得益於一些廠商的努力,低代碼行業正在構建起健康的生態。我們在討論低代碼的未來時,需要清楚一點的是,低代碼並非萬能,它有清晰的能力邊界,而非一些聲音所說的會「搶走程序員的飯碗」。低代碼是企業數字化建設當中「最後一公里」,在保障企業數字化進程的價值賦能下,中國市場會有低代碼的一方天地。
國內的簡搭(jabdp)開發平台是一個低代碼開發平台,復雜的業務功能,只需要會基本的sql語句和javascript語法,就能進行快速開發,滿足其個性化的業務需求,設計出各種復雜的企業web應用。主要特點如下:
可靈活定製:簡搭(jabdp)低代碼平台提供了強大的定製能力,包括頁面定製、數據表管理、業務流程定製等,便於實現各類企業應用。
許可權管理:簡搭(jabdp)低代碼平台提供組織結構管理和精細的許可權管理多人,便於企業根據實際情況靈活地進行許可權設置和調整,促進內部協作。
易於部署和維護:簡搭(jabdp)低代碼平台提供一鍵部署功能,無需配置復雜的網路伺服器;根據企業的需求變化進行系統維護也更容易。
支持二次開發和系統集成:簡搭(jabdp)低代碼平台是一個開放的快速開發平台,有經驗的程序員依然可以基於jabdp定製開發出許多高級的功能,而不受jabdp本身的限制;同時,簡搭(jabdp)低代碼平台開發出的應用也可以很方便地與企業的現有信息系統集成,或者與微信、釘釘等第三方應用集成。
簡搭(jabdp)低代碼平台適合用於大部分的企業級web應用的開發,尤其適合企業信息管理系統(MIS)、企業資源計劃系統(ERP)、客戶關系管理系統(CRM),業務支撐系統(BSS)等。並且就一些經典的項目案例提取整合出各種類型的項目模板,共享給開發者參考,開發者可以在原有的項目基礎上進行修改定製,以打造其個性化的企業信息化平台。
關於低代碼開發平台,一個常見的誤區是認為「低代碼開發平台只適用於平民開發者(CitizenDeveloper)」。平民開發者是指那些非傳統的、沒有受過專業編程教育的開發者,他們主要用低代碼平台來創造和定製應用。
當然,通過使用低代碼開發平台,可以降低對多數項目人員的技術要求。在多個項目並行時,只需要一個有經驗的程序員進行數據表、業務邏輯等的設計即可,其他項目人員無需編程能力,這樣在人月數和人員要求兩個方向都能有效控制項目的投入。
藉助低代碼開發平台,可以更高效地理解中小企業的信息化項目需求,控制項目開發的成本,同時適應中小企業信息化需求變化快和缺乏專業技術人員進行項目維護的特點,是開發中小企業信息化項目的最佳選擇。
6. 半是蜜糖半是傷李小川結局是什麼 李小川喜歡誰
半是蜜糖半是傷李小川是眼裡只有程序的典型IT男,但是超高的顏值和直男屬性,使其收獲了大批的粉絲,不善言辭的他也散發著不一樣的魅力,半是蜜糖半是傷李小川結局是什麼?下面帶來全面介紹。
半是蜜糖半是傷李小川結局是什麼?
李小川作為西部世界APP投資人,他有著非典型程序員的外貌,五官俊朗帥氣,比男團鮮肉也毫不遜色。但他對顏值沒有概念,常年穿著格孑衫,不修邊幅,節儉摳門。
他性格有些孤僻,不善言辭,有著天才少年的自負與偏執,整日沉浸在編程和代碼的世界中,萬事漠不關心,視代碼為女朋友,渾身上下散發著注孤生的氣質,不過最後是根徐莉在一起了,而且還是徐莉主動追求的李小川,觀眾們耐心等待後續的劇情吧~
李小川扮演者是誰?
王以綸,出生於1996年3月18日,加拿大華人,中國台灣男演員、歌手,台灣男子團體SpeXial成員。
2015年1月14日,以第三期成員的身份加入男子團體SpeXial正式出道;2月4日發行迷你影音專輯《Love Killah》;9月11日發行第三張正式專輯《Dangerous》,專輯中的同名主打單曲《Dangerous》作為好萊塢電影《移動迷宮2》的中文主題曲;12月8日參與湖南衛視天天向上節目的錄制,是該節目改版的主持陣容「天天小兄弟」之一。
李小川喜歡誰?
最初的李小川眼裡只有代碼,視代碼為女朋友。直到徐莉走入他的生活,他的態度才有所轉變,隨著倆人的交集漸漸增多,自然就在一起了。
半是蜜糖半是傷劇情
江君,一個對眼淚重度過敏的女孩,有著經濟學與心理學雙碩士學位,父母給予的優越而寵溺環境造就了她天性灑脫、理想主義的性格,畢業後的她在一家公益組織工作,追尋著屬於自己內心的生活。不料,父親的意外去世卻使她站在了人生的三叉路口,江君最終決定進入頂級投行公司MH完成父親的遺願。在MH里,江君意外與童年玩伴袁帥相逢,但高興不過三秒後,卻發現自己童年的保護傘,那個溫柔的袁帥哥哥竟然處處與自己為敵,在狼性文化的投行公司里,有人在暗中給她布局設套,有人視她為棋子兼眼中釘,但江君憑借著自己善良而細膩的天性,出眾的情商以及天才般的想像力,判斷著人和項目復雜的變數,在暴風雨的中心,她開始了自己的征途,經歷了一番番風霜雪雨後,最終收獲了自己的事業與愛情。
以上就是全部內容,請大家繼續關注。
7. 為什麼國內程序員都很少進行代碼重構
說到代碼的重構對於國外的程序員提到的比較多,特別是大型的開源工程,基本上一個模塊或者函數的實現會反復的修改,一個文件能被修改成千上萬次,曾經訂閱了linux內核組的郵件,每天的收到的修改文件成千上萬,有時候一個文件都能被修改上百次,對於文件修改最瘋狂的是google的chrome源碼,重構的次數,讓你覺得每天都在重寫但是功能上感覺越來越流暢。為什麼我們周圍的程序員絕大部分時間做的不是這樣的事情。
為啥從直覺上覺得老外的寫的代買質量比我們的要高,我們國內的程序員絕大部分的時間是在趕進度,准確的來講忙著增加功能和修改bug,其實也從側面反映出為什麼國內出不了android以及Linux等影響深遠的 科技 創新,從全球開源代碼的佔比就可以看出,差距還是很巨大的。
為什麼覺得老外寫的代碼比我們的強?
1.國內軟體發展主要階段還在解決有沒有,還遠談不上強大
中國的軟體經過近幾十年長足的發展,已經取得了巨大的成就,特別在互聯網行業已經有幾個巨頭躋身世界前列了,最近炒的很熱的臉書的用戶數據泄密事件,作為當事人扎克伯格,也在論述中提到中國有幾個很厲害的互聯網公司,這說明中國在互聯網領域還是取得了相當大的成就,但是在一些核心的領域,或者門檻很高的領域差別還是非常巨大。
任何事情在發展的初級階段首要考慮的是不是有沒有,所以如同創業初期的公司會選擇短時間內搞出來個產品,哪怕是不成熟的產品,然後快速的投入市場,根據市場用戶的反應同步追蹤問題,等到產品差不多穩定,並且產品在市場上有了一席之地之後,後續的事情就要考慮優化功能,對裡面的代碼或者產品的性能進行全方面的提升,目前國內大部分的互聯網一般比較年輕,還在解決有沒有的問題,相信隨著時間的推移以及國內軟體的發展,也會有大量的高質量的開源框架代碼出來,但這一切都需要很長的時間。
所以國內的程序員大部分時間都是在趕進度和根據需求完成功能代碼。
2.軟體產業的底子還很薄弱, 歷史 積淀還不夠
舉個很典型的例子,現在很多國內的程序員到了30多歲就開始考慮後續的轉型了,因為後面的輕輕人會帶來很大的沖擊,所以大部分的30多歲的程序員都在考慮自己後路,都要考慮轉型的問題。老的有經驗的程序員反而轉型去做管理或者合夥創業了,哪有幾個還在安心搞技術,年齡大了還在搞技術的還被人鄙視,覺得自己沒有出息。
但是在國外寫代碼是一種很常見的職業,和別的工種沒有多大的差異,40,50歲了寫代碼也是比比皆是,做軟體是一種技術工種,經驗的佔比是很高的,所以老程序員寫出來的代碼更加有深度,穩定性更高,一切的根源還是產業的發展不夠成熟,需要時間和 歷史 的積淀,從這方面講國內的軟體整體產業還是比較薄弱,從業人員的整體素質和工作氛圍還有待慢慢的成熟,周圍都是有經驗的程序員在帶領著如何去重構代碼,如何提升代碼的質量,而國內大部分的程序要還是被產品經理鞭策著增加需求和修改代碼。
3.公司的文化差異
目前很多的中國技術公司更多的追求的是短期利益的最大化,在基礎軟體的投入遠遠不夠,畢竟基礎的投入很難短期見成效,在一個具體的場景,有一個產品主體的功能已經實現了,也能在用戶那邊投入使用了,一般的公司很難拿出時間來,讓你做代碼的重構,畢竟這種事情很難直接產生經濟效益。這與公司本身的文化差異有很大的關系,重視的技術或者懂得技術的公司對於這方面相對比較重視,反之就差很多。
小時候課本上就說著我們落後100年,所以高樓大廈不是一天建成的,所以在追趕的道路很漫長,所以承認存在差距,然後努力加倍的去追趕。
Time is money. 以目前國內互聯網的情況,需求應接不暇,程序員基本上都是被需求與業務趕著走,時間非常緊張,在這種情況下,程序員很多時候唯一的選擇就是趕緊實現需求的功能。所以,一個項目下來,代碼基本上都變得非常非常的「垃圾」。
也有很多程序員想過在項目結尾的時候進行代碼的重構,基本上每個程序員也都知道重構代碼的好處,但是並不代表著真正能做起來。還是那個原因,國內互聯網的速度太快,需求應接不暇,做為程序員,基本上沒有時間來做這件事情。
而另外一個原因是跟團隊負責人有關。若團隊負責人能夠意識到重構的好處,那麼他可以為此單獨劃分一段開發時間出來,讓大家分別負責一個模塊進行重構,這都是可以安排做起來的。這也需要團隊負責人如何在需求人員的需求與代碼質量的進度上做一個平衡,進行統籌安排。
最後我想說一個可能很少意識到的原因,那就是人員流動問題。國內互聯網目前人員流動非常的大,尤其是北上深這樣的互聯網發達的城市,基本上是平均兩年就會走一大波人,在這樣的情況下,也會考驗從業人員的職業道德,即我到底要把代碼寫的多好,要把代碼的可維護性做到多好,其實這都是從業人員自身需要考驗的問題,因為完成一個功能很容易,但是要考慮的全面就是另外一回事了。而人員流動帶來的另一個問題就是有一些代碼是很難看懂的,即有些代碼在人員離開後成為了「 歷史 」,無人敢動。這也會阻礙著軟體的重構工作的進行。
從我所講的這幾種情況來看,重構其實是大家都能知道的好處,但是真正實施起來卻又有現實的約束,需要負責人來做這樣的統籌安排與推動。
成本太大
大多數軟體產品的開發都是經過了很多開發人員的付出,如果進行代碼重構需要了解產品、了解框架、了解代碼邏輯,這個過程會花費大量的時間和人力成本,對於企業來說,效益是第一位的,與其花費精力進行效益不大的產品重構,不如去承接更多的項目來的實在。
領導決策
由於大部分企業的老闆都是非技術人員出身,他們更關注效益和客戶,為了符合企業的發展,在進行產品開發時會更多的採用新技術來吸引客戶,花費精力重構代碼不如開發一套新產品或者開發更酷炫的效果更具有實在意義。
代碼規范不足
由於國內互聯網較之國外起步較晚,很多企業發展時間較短,加之人員流動比較大等多方面的因素,很難形成標准、嚴謹、行之有效的代碼規范,所以很多技術人員在開發時都是根據個人風格習慣在開發,等其他人接手代碼時,缺少相關標准和文檔,很難理解代碼邏輯,花時間去了解代碼、重構代碼不如直接推翻重做來的方便。
客戶定製化需求
部分企業創業初期對企業信息化是不夠重視的,只有企業發展到一定程度才會考慮信息化建設,而由於業務的限制,大多數標准化的互聯網產品都很難滿足企業的實際需求,需要進行大量定製化的開發,對於互聯網企業來說,即使產品開發足夠完善,在實際項目中也需要進行擴展,倒不如直接在項目中進行調整。
程序員的發展限定
在國內很少有終身的程序員,大部分都會逐漸轉向銷售、售前、項目經理、產品經理等崗位,而這些崗位則需要了解業務、了解客戶,對技術的需求反而不會太高,所以與其花時間去專研技術不如將更多的精力用在業務和項目層面。
代碼能夠重構對底層框架要求深度掌握、且代碼框架本身要足夠靈活,而國內絕大部分技術人員都是停留在對框架的使用層面、少數可以完善、結合使用,極個別的在做同語言山寨或者換一種語言重寫,能夠對產品體系進行把握、與時俱進擴展實在是鳳毛麟角。隨著國家的經濟提升、IT行業逐漸成熟,在我國這么多IT公司基數下,即便是鳳毛麟角的概率,重視基礎框架、積累萃取、不斷迭代完善的一些技術公司也會慢慢嶄露頭角、涌現出來的。
【國內程序員很少進行代碼重構】,這個現象雖然沒有什麼調查統計,不過我寫了十多年代碼,也發現身邊的程序員大多數是這樣的,【寧可寫新的代碼,也不願意重構老代碼】。下面我也談談自己的看法:
系統沒有問題,就是最大的功勞
我見過的大部分的傳統行業的軟體公司或IT部門是這樣的(互聯網公司不太了解),「只要系統穩定,那麼就是最大的功勞」,而保持系統穩定最好的方法是什麼? 就是盡可能的不要動系統!
可能很多人不能理解,但很多公司確實是這樣,甚至公司對項目的考核標准中,項目有什麼突破的權重很低,是否有生產事故的權重很高。所以很多「機智」的項目組成員,千方百計的不接需求,或者把需求推給別的項目組。在這種單位裡面,別說重構了,新代碼都寫的不多。
測試覆蓋度太低,重構代碼沒辦法保證質量
代碼重構,很重要的一個問題:「重構後的代碼誰來保證?如果影響到原有的功能怎麼辦?」
這時候很有效的一個方法,是使用各種自動化的測試來保證重構代碼的質量。
但是,大部分公司,不管是單元測試還是其他的自動化測試,都是不健全的,甚至是沒有的。所以只要不是被逼不得已,程序員寧可重新寫一個方法,也不願意重構之前的代碼。
其他
進行代碼重構不是一件容易的事情,務必需要對需求熟悉;對代碼 歷史 變更熟悉;對代碼框架,模塊熟悉;對產品更新迭代做好風險把控,時間成本把控……
進行代碼重構需要能力非常高,責任心非常強的人進行,甚至需要一個優秀的團隊完成。
為什麼要代碼重構?理由一大堆,我認為主要有兩條,一是原代碼已不適合擴展新需求,二是原代碼已擁腫不堪,亂七八糟。
為什麼很少重構?除了上述分析外,還有其他因素,如人員流動快,原團隊原作者早已不知何去何從了。又如需求和業務繁多,完成工作開發都累得半死不活,日理萬機似的,哪有時間和心情重構?
謝謝大家。
1.國內程序員技術能力不足以進行代碼重構
大量的軟體從業人員連編程規范都不熟悉,怎麼可能做代碼重構?更多的人只會寫寫hello world,只會拷貝粘貼小段代碼,連if else這種語句都寫不清楚甚至漏掉邏輯,連面向對象的編程思想都沒有,談何重構?
2.國內程序員的溝通能力說服能力一般。
進行軟體重構,必須說服經理,讓經理相信重構會帶來軟體質量的提高和故障率的逐步降低,這樣經理才會安排人力進行重構。
3.國內軟體開發更注重bug的及時解決
國內軟體開發大量的人力被分配到解決短期的某個bug,沒人抽時間思考如何長久的徹底的解決軟體缺陷,其實解決bug不重要,找到軟體的缺陷或者性能低下的地方才重要,這些才是重構的點。國內加班加點疲於奔命式的開發,沒人考慮bug率是否長期內能夠收斂,總是先解決眼前的問題再說,處於一個永遠解決bug的死循環里。
這種工作模式是愚蠢的,不是smart的。
軟體開發,一定要動腦子,不要蠻干,這不是耕地,力氣大就耕的多。
重構代碼的目的說白了,就是讓軟體開發人員更自由。
謝謝樓主的問題,這是一個我特別想回答的問題?
為什麼?因為,第一,我是一個對代碼有潔癖的人,受不了一坨,一坨那樣的代碼。第二,我是一個踐行Clean Code 的人,給大家我主要負責的一個項目的一組數據(JAVA),總代碼量20萬行,UT coverage(單元測試代碼覆蓋率)82%,代碼重復率0.5%,代碼規則(sonar)違反(Code issue)0,甚至連最低的違反都沒有。
也正是因為我的項目在實踐Clean Code上的數據,我經常去給不同的團隊做分享,也對團隊對這個重構不太上心有一些理解。
大致以下幾個原因。
第一,也是最多的,交付壓力,大部分人都會抱怨,你看我們有這么多新功能,還有那麼多bug,根本忙不過來,哪有時間重構?
第二,重構意識不足,老闆,管理人員總是希望這個我們要有,那個我們也要實現?為什麼?因為別人有,別人有我們沒有可能會造成用戶流逝。即使有一些有見識的程序員和老闆反應這個重構問題,但是重構從來不是高優先順序的。畢竟,現在的軟體的生命周期可能很短。
第三,人員流動性大,這個是我聽過最奇葩的一個理由,我問一個來聽培訓的哥們,說你代碼寫成這樣,以後怎麼維護?這個哥們說,我也知道難維護,但我明年就跳槽了。
第四,設計上就不需要重構,曾經給一個保險公司做分享,我本人也是做金融相關產品後台的,我就問你們這樣寫代碼,可能三四年以後就非常難維護了,還是要盡快重構。他們的回答是,我們不重構,我們只重寫。什麼意思那?就是一個系統,三四年以後在寫一遍。
第五,程序員本身的問題,可能第一寫單元測試,修改命名,修改代碼結構,是一件很沒有成就感的事情,也是一個沒有多少附加值的事情。畢竟現在你去找工作,這個代碼質量方面的問題會問得很少。
第六,我見過的我不能反駁的一個回答,我的英文太差,不能很好的命名,而我也不想學英文。
第七,反正我已經實現了功能。
最後,用一句話來提醒程序員們,重構是多麼重要。
出來混遲早要還的,挖了坑遲早要填的。
在國內,【重構】這件事是程序員最喜歡做的事,而不是公司喜歡做的事。
但程序員喜歡並不能影響公司的決策,所以,國內的現象就是軟體系統很少有重構。
其根本的原因在於,國內的公司所推出的系統大多沒有重構的價值。
1、國內的互聯網公司存在這樣一種快節奏,那就是發現一個有價值的創意,就馬上進入開發,開發完成立即上線,並立馬推廣使用。這是一種快速試錯的模式,一旦發現系統在 社會 中沒有引起反響,那就馬上把系統再下線。這種情況下的系統哪來的重構價值呢?
2、即使一個系統上線成功了,也積累了大量的用戶,貌似為了系統的穩定性和性能,可以有重構的機會。但事實上不是,國內公司仍舊不會選擇重構,因為重構帶不來新的價值。所以,公司多數都會在系統上添加新的功能來吸引新的客戶,而不會考慮重構現有系統。
總得來說,引起重構的原因在於能夠有持續的價值。沒有價值的事,企業當然不會做,僅是程序員的一廂情願而已。
你只是見到了你所在的公司現象,不代表所有,也不能代表大部分的。
代碼重構還是存在的現象
代碼設計爛,經常出問題、擴展麻煩、維護心累、數據混亂、結果不清醒、模塊劃分混亂
就可能要考慮到重構了
呵呵,
老大說:
你趕緊去修復一下這個bug,
還有幾個功能沒有實現,加班搞一下,
pm 說:
這個功能改一下,
還有這個,界面重新調整一下,
這個業務流,現在不一樣了,
客戶需求需要多幾個功能,
老闆說:
這東西下周能出來嗎?
8. 軟體開發的流程都有哪些步驟呢
軟體開發是指一個軟體項目的開發,如市場調查,需求分析,可行性分析,初步設計,詳細設計,形成文檔,建立初步模型,編寫詳細代碼,測試修改,發布等。
軟體是怎麼樣開發出來的
第一個步驟是市場調研,技術和市場要結合才能體現最大價值。
第二個步驟是需求分析,這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手 冊。
用戶視圖 是該軟體用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這裡麵包含了 很多操作方面的流程和條件。
數據詞典 是指明數據邏輯關系並加以整理的東東,完成了數據詞典,資料庫的設計就完成了一半多。
用戶操作手冊是指明了操作流程的說明書。
請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟體設計之前完成,完成這些,就為程序研發提供了約束和准繩,很遺憾太多公司都不是這樣做的,因果顛倒,順序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。
需求分析,除了以上工作,筆者以為作為項目設計者應當完整的做出項目的性能需求說明 書,因為往往性能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。
第三個步驟是概要設計,將系統功能模塊初步劃分,並給出合理的研發流程和資源要求。
作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是 並不是說詳細設計說明書不重要,事實上快速原型法在完成原型代碼後,根據評測結果和 經驗教訓的總結,還要重新進行詳細設計的步驟。
第四個步驟是詳細設計,這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把 具體的模塊以最』干凈』的方式(黑箱結構)提供給編碼者,使得系統整體模塊化達到最 大;一份好的詳細設計說明書,可以使編碼的復雜性減低到最低,實際上,嚴格的講詳細 設計說明書應當把每個函數的每個參數的定義都精精細細的提供出來,從需求分析到概要 設計到完成詳細設計說明書,一個軟體項目就應當說完成了一半了。換言之,一個大型軟 件系統在完成了一半的時候,其實還沒有開始一行代碼工作。
那些把作軟體的程序員簡單理解為寫代碼的,就從根子上犯了錯誤了。
第五個步驟是編碼,在規范化的研發流程中,編碼工作在整個項目流程里最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提 高,編碼時不同模塊之間的進度協調和協作是最需要小心的,也許一個小模塊的問題就可能影響了整體進度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發過程中都 出現過。
編碼時的相互溝通和應急的解決手段都是相當重要的,對於程序員而言,bug永 遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候 嗎?從來沒有!
第六個步驟是測試
測試有很多種:
按照測試執行方,可以分為內部測試和外部測試
按照測試范圍,可以分為模塊測試和整體聯調
按照測試條件,可以分為正常操作情況測試和異常情況測試
按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試
以上都很好理解,不再解釋。
總之,測試同樣是項目研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外部測試都是正常的,因為永遠都會又不可預料的問題存在。
完成測試後,完成驗收並完成最後的一些幫助文檔,整體項目才算告一段落,當然日後少不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營 狀況並持續修補升級,直到這個軟體被徹底淘汰為止。
什麼是軟體開發的核心問題
按照軟體工程鼻祖,《人月神話》作者 Brooks 在「沒有銀彈——軟體工程中的根本和次要問題」一章中闡述的思想,軟體開發的核心問題就是如何從概念上對一個復雜的業務系統進行建模。這個建模是含義廣泛的,不僅僅包括對象建模,還包括數據建模、演算法建模等等一系列的內容。總而言之是要先找到解決復雜問題的突破口(先要搞明白需要做什麼,然後再考慮如何做)。至於採用什麼表示方法(簡單文本、UML 圖、E-R 圖)、採用什麼高級語言、是否一定要用面向對象、使用什麼開發工具都是次要的問題。
軟體開發方法
軟體開發方法(Software Development Method)是指軟體開發過程所遵循的辦法和步驟。
軟體開發活動的目的是有效地得到一些工作產物,也就是一個運行的系統及其支持文檔,並且滿足有關的質量要求。軟體開發是一種非常復雜的腦力勞動,所以經常更多討論的是軟體開發方法學,指的是規則、方法和工具的集成,既支持開發,也支持以後的演變過程(交付運行後,系統還會變化,或是為了改錯,或是為了功能的增減)。
關於組成軟體開發和系統演化的活動有著各種模型(參見軟體生存周期,軟體開發模型,軟體過程),但是典型地都包含了以下的過程或活動:分析、設計、實現、確認(測試驗收)、演化(維護)。
有些軟體開發方法是專門針對某一開發階段的,屬於局部性的軟體開發方法。
特別是軟體開發的實踐表明,在開發的早期階段多做努力,在後來的測試和維護階段就會使費用較大地得以縮減。因此,針對分析和設計階段的軟體開發方法特別受到重視。其它階段的方法,從程序設計發展的初期起就是研究的重點,
已經發展得比較成熟(參見程序設計,維護過程)。除了分階段的局部性軟體開發方法之外,還有覆蓋開發全過程的全局性方法,尤為軟體開發方法學注意的重點。
對軟體開發方法的一般要求:當提出一種軟體開發方法時,應該考慮許多因素,包括:
①覆蓋開發全過程,並且便於在各階段間的過渡;
②便於在開發各階段中有關人員之間的通信;
③支持有效的解決問題的
④支持系統設計和開發的各種不同途徑;
⑤在開發過程中支持軟體正確性的校驗和驗證;
⑥便於在系統需求中列入設計、實際和性能的約束;
⑦支持設計師和其他技術人員的智力勞動;
⑧在系統的整個生存周期都支持它的演化;
⑨受自動化工具的支持。此外,在開發的所有階段,有關的軟體產物都應該是可見和可控的;軟體開發方法應該可教學、可轉移,還應該是開放的,即可以容納新的技術、管理方法和新工具,並且與已有的標准相適應。
參考:http://www.blog.e.cn/user5/280156/archives/2008/2090192.shtml