web前端實習小結

實習總結,就是把一個時間段的實習情況進行一次全面系統的總檢查、總分析、總研究,分析成績、不足、經驗等。下面就是小編整理的web前端實習小結,一起來看一下吧。

web前端實習小結

2個月的暑期實習結束了,不能算非常圓滿但是也有許多感受。畢竟,擠了兩個月的地鐵,每天3個小時,無論是上班還是回家身體都是溼的,也算是體驗過了社會人的生活。

在公司做的是後端工程師,其實就是協助團隊實現一些小的模塊,修改頁面等一些外圍的工作。這些都在預料之中。我找實習的初衷還是想體驗一下互聯網公司的工作環境、工作模式和方法,同時瞭解一下他們是如何瞭解並學習新知識的,從這一點上來說算是如願以償。

在學校,無論是作項目還是產品,往往是一個人大包乾。從產品(網站)設計,前臺html,javascript編寫,數據庫架構,後端coding,都是一個人完成的。而在正規的公司裏,這一套流程是有着嚴格分工的,大致如下:1 首先由產品經理與客戶交流,討論、溝通併產生需求,作出產品原型圖,(在軟件領域應該算是工業設計原型圖?) 。將原型圖交付設計師,讓設計師通過構想的原型圖設計出相關圖片。前端工程師通過設計師的圖片切圖並作出靜態頁。同時,產品經理通過溝通和文檔的方式將需求告知後端開發人員。研發人員根據需求設計數據庫並進行相應coding,其中還要與前端工程師溝通並完成一些接口交互(比如json等),產品完成後最後進行測試等步驟。

首先說說產品經理。我認爲,對於產品經理來說,需求和體驗是靈魂,溝通和設計是方法,而製作原型圖與撰寫相關文檔是必備技能。體驗就不用說了,產品經理就是爲優質的用戶體驗而生的,‘用戶體驗’往往被他們掛在嘴邊。而需求分兩方面,一方面是與外界進行溝通,從而瞭解到的一些需求。這裏面的溝通是有一些技巧和方法需要注意的。另外一方面則是自己通過對產品的理解,對生活的感悟自己創造出來的,這裏也是見真功夫的地方。這兩方面,前一種主要靠溝通,後一種主要靠自己的設計(create)。

然後是原型圖,什麼是原型圖呢?比方說你想設計一個網站,那麼,在大刀闊斧開工之前,你總要在在紙上寫寫畫畫,作出網站的一個view草圖,這個草圖就是原型圖。只不過把你原來要在紙上完成的工作放到電腦裏進行,加快工作效率和將草圖交付他人進行交流的效率罷了。這裏推薦兩款軟件,一個是balsamiq,一個輕量級的原型圖製作工具,我實習公司的產品經理一直在用。另一個的功能就相對較多同時軟件本身也相對臃腫許多,axure。百度的產品經理在用它。

產品經理由於是站在全局去把握產品的設計方向,所以需要有相當強的思想和眼光,更多的時候的確是需要從管理的眼光去看問題。產品經理需要見多識廣,思維活躍才能不斷爲產品注入新的能量。同時又要腳踏實地去把握用戶而不能脫離用戶,“用戶至上”這一點微信的產品經理張小龍是一個榜樣。

個人認爲走互聯網也就是電子商務方向的信管人比較適合做產品經理,基於技術而又高於技術(就是不用掌握太多的技術),同時需要一些創造性思維和較強的溝通能力。

接下來說說設計師,這個我瞭解的的確比較少了。。諸如PS AI等相關工具的熟練掌握肯定是必不可少的。我主要是想強調設計師的不可或缺。誠然,即便沒有設計師,你仍然可以讓前端工程師直接作出一個符合大致標準的靜態頁出來。不過,像一些複雜的邊角光影效果你肯定不能指望能達到一個比較好的效果吧。一些細節方面的地方可不是你摳摳其他網站配色和插圖就能搞定的。

下面講一下前端工程師。前端,多麼絢爛的一個字眼啊。所有複雜又牛逼哄哄的動態特效全部經自我手,想想都是激動人心的一件事。其實,前端工程師大部分工作還是蠻辛苦的,需要將設計師的圖稿轉化爲html頁,要適應chrome 要適應火狐,要適應IE, 要適應IE6(這個囧),要適應iphone,要適應ipad,要適應ipod....適應你妹啊適應! 各種js效果不好調試有沒有?需要不斷大刷(清空緩存)瀏覽器有沒有?css要各種hack有沒有? 要考慮SEO優化,要sitemap有沒有?

上面全是前端苦逼而且做起來又略無聊的地方,有沒有除了js特效還讓前端大顯伸手的地方呢? 看看阿爾法城的前端設計吧。前端MVC架構。恩你沒看錯,就是前端mvc。事實上,做網頁經常遇到這樣的情況,就是網站的頁面很少但是單個頁面的前端設計及其複雜。這個時候普通的單一js文件就不適用了,你需要自己架構或者使用現有的javascript的MVC框架解決問題。這時如何優化js,css代碼,如何建立起一個低耦合,複用性高的框架,如何靈活地運用一些設計模式,這都是前端工程師面對大型需要而考慮的。

除此之外,現在html5的流行與移動互聯網的興起也讓前端有了更多的用武之地。最後推薦一些乾貨吧。bootstrap是twitter推出的一個能夠使前端工程師快速開發出兼容性強,組件功能豐富的javascript開源庫;一個名爲Alice-css的文件也能解決一些兼容性方面的問題;backbone是一個javascriptMVC框架,這個我也有待學習。

接下來就是後端啦,geek們 哦不,hacker們一起high起來吧!這纔是我們程序員的天下啊。各種算法數據結構、設計模式、各類語言各類框架各類大規模架構方案軟件讓你學個夠!

現在的編程語言百花其放,各自適合的工作均不同。使用哪種語言還真是蘿蔔青菜各有所愛。注意一定要發揮各個語言之所長:python就要做膠水語言,java在業務處理方面非常出色,php最適合網頁展現;在MIS方面獨領風騷。

選擇什麼語言不重要,關鍵是要看清語言背後的東西。絕不是你學過一門語言,然後再使用過那門語言的相關框架開發過項目你就能出師了。那只是一種你掌握的技術,而單純的技術並不能轉化爲自己的理解,不能轉化爲自己的能力。先說面向對象。要搞清楚的是基於對象和麪向對象是兩碼事,java是一門基於對象的語言,而不是你使用java編程你就面向對象了。在實踐中不斷地領悟GoF提出的設計模式原理,慢慢地學會對象的用法。能根據需要,靈活地運用接口與繼承是關鍵。

有人認爲算法和數據結構在互聯網方面作用很小?抱有這種觀點的人一定沒涉及過web智能推薦算法以及大規模分佈式算法等領域。其實這也是互聯網方向的另外一片天地,當網站規模不斷擴大,服務器數量不斷增多,如何靈活地去設計服務器架構,拆分數據庫表結構,並提出相應的分佈式方案,也是一個非常有挑戰性的難題。這其中也涉及很多算法需要自己實現,因爲數據庫默認內核封裝的算法並不能滿足你網站架構的具體需要。還有一些是根據用戶需要而產生的算法,涉及到了一些交叉學科領域(比如MachineLearning),剛纔舉的web推薦算法就是一個例子。

一個合格的程序員很大程度上也是半個運維工程師。平時數據庫、服務器的維護往往也需要自己親歷親爲。這就要求你熟練掌握linux,unix各項指令的使用,一些常用的服務軟件比如memcache,sphinx等的使用方法。

對了,還漏了移動開發。想做手機開發的人,我想說的是,做IOS吧,Android的.各種不兼容實在是太蛋疼了,而且安卓市場有一些不合理的地方,相對來說不太容易賺錢。另外,wp7,wp8應用也可以嘗試一下。

說到做應用,微軟最新的office13提出了支持社交的理念,同時也支持針對office進行第三方應用的開發,感興趣的同學可以嘗試一下。

最後是測試。無論是做網站還是做系統都需要測試。公司曾經在的週末分享會上請來了IBM的測試MM專門講了測試的過程與方法。主要講的是黑盒測試。大公司的測試步驟簡單說來分爲這麼幾步:1 開發團隊派遣一名負責人向測試團隊發出Test申請。Test團隊然後根據需要對其進行評估,主要考察是否值得動用團隊精力去做測試以及動用多少人力資源。確立之後,Test團隊再進行測試項目啓動會,制訂計劃,並向開發團隊索要需求文檔。之後就是很關鍵的一步:根據文檔設置測試用例,就是case。case會根據項目需要和測試團隊自己發掘出的一些問題不斷增加和細化。

細化到什麼程度呢?IBM有一個進行了一年的項目,而根據需要產生的case就已經有上千多個了,每一個case的填寫字段超過20個。從這裏首先可以看出測試和開發時並行的而不是先開發後測試,然後,根據項目的不同,測試用例可能會增長到非常恐怖的程度。所以其他人的經驗不能照搬照抄,要根據自己團隊的規模合理地決定測試用例的粒度。

測試除了黑盒測試還有白盒測試。這就需要測試人員自己去寫自動化測試腳本,還有可能借助現成的諸如loadrunner等測試工具輔助工作完成。說明測試人員自身也要懂一些技術的。

扯的越來越遠了,簡單說說我實習做後端的收穫。首先是學會了個MVC框架,又再次顛覆了我對MVC的認知(又顛覆了。。。。),瞭解了開源領域的猿們是如何快速接受新東西的。在選擇開發工具方面,我想對IDE說再見了,不輕量的東西就不靈活,不簡潔。公司裏的人大部分都使用sublime 一個輕量級的文本編輯器,其優點在於能靈活地自定義快捷鍵、高效的查找替換、更便捷地代碼書寫方法以及優美的UI(說到UI最近新出的vs2012也是我的菜)。如果你夠牛比,你可以嘗試emacs ,一個操作系統級的文本編輯器,爲什麼是操作系統級呢,因爲它的設計初衷就是你能在裏面幹任何事情,比如敲代碼,比如發郵件,比如看電影,比如玩遊戲,比如。。。不過相應的,學習門檻也很高。最後是一款大家公認的殺手級工具,vim 誰用誰知道吧。我是用不習慣。

實習中除了技術上提升之外更多是不斷體會溝通的技巧。比方說,客戶說:“我想要實現一個XXX功能”,然後你說好,然後去做了。最後給客戶看,客戶說,“你怎麼作成了這樣的東西呀,我想實現的是XX效果”,你很委屈地說“你上次跟我說需求時並沒有提到這一點啊”。就此僵持。

誰的錯?客戶的錯嗎?其實是不完全的。首先,你要知道,往往在客戶的腦海裏,他所想的需求就是不清晰的,是模糊的,也很有可能是整個客戶團隊經過各種討論最後折中的一個結果。其次,不同的人語言表達的方式和能力是不一樣的,他以爲你能理解,你也以爲你理解了,中間的差別也可能有十萬八千里。

如何解決呢?記得SYN的三握手嗎? 爲什麼要三次握手而不是一次就行呢? 就是要反覆確認。溝通時要學會去向客戶提問題去驗證客戶的需求,這也是讓客戶明確自己需求的一個過程。我用信息的傳輸打個比方。客戶頭腦中的需求是信息。從客戶嘴裏說出來是編碼,然後通過耳朵傳輸到你的腦子裏,這個過程是信道傳輸,最後你通過自己的理解(就是信息的解碼)轉化爲自己的信息。信息在傳輸的過程中是肯定會有丟失和錯誤(誤碼)的。原因可能出自多個方面:也許信息在源頭就是不確定的(客戶頭腦不清晰),也許信息在編碼時就發生了錯誤(客戶不懂得表達的技巧),在信道傳輸時發生丟失(客戶的話你左耳朵進右耳朵出),信息解碼發生錯誤(你自己理解能力有問題)。怎麼辦呢? 我們說提高信息傳遞效果有多種方式,比如信息要有冗餘,多次傳輸去驗證是否接受信息正確(要求客戶反覆說明),信息傳遞後你要有校驗碼驗證(自己向用戶再次確認)。總之,要“正確領會客戶的意圖和絃外之音”。

還有一大感悟就是:在工作時是否要追求完美?追求到什麼地步?這個時候我們可以嘗試遵循80/20原則,即先集中精力解決80%的問題,再慢慢解決剩下20%的問題。“許多失敗並不是因爲人不夠優秀,而是做事情的方法不對,一開始最求大而全的方案,之後長時間不能完成,最後不了了之。”

實習的遺憾也是有的,本來打算好實習3個月的,結果開學有很多事情出乎我的意料。很多學校的事情是推不掉的,權衡再三,只好決定提前結束實習,不然兩方面的事情都做不好。感謝實習期間團隊的各位夥伴對自己的提攜和教導,使自己進步很多。臨行前公司贈書一本,望我繼續努力。

感覺自己還沒掌握的知識還有很多,至今我還沒學如何用git;在面向對象方面仍有許多困惑;前端代碼實現起來依舊有很多問題;很多框架和軟件都只是瞭解而沒有實踐操作過。在實習業餘時間在網上還報了個MachineLearning公開課,望能堅持下去。

新的一週要開始了,公司裏的夥伴們依舊要開會、工作,爲geekpark,itvalue的成熟壯大而奮鬥。我也要開始忙碌一些自己的事情,前面依舊是一片天空。