我的做業4

我的做業4--alpha階段我的總結

標籤: 軟件工程前端


第一部分:我的總結

1. 硬的問題。要在找工做的時候說服別人你是適合這個工做的, 那就要搞清楚對方期待什麼東西,自信地展示出你的價值和能力。 (這個列表也能夠說是 - 面試中最關鍵的問題)

類別 具體技能和麪試問題 如今的回答(大三)
語言 最拿手的計算機語言之一,代碼量多少? (偏web前端,PC/Mobile App) ①C語言 ②代碼量:兩千左右(偏向算法一類的,前端較少)
語言 最拿手的計算機語言之二,代碼量多少? (偏後端,數據處理,網站後臺,機器學習,等) ①Java ②代碼量:一千之內(偏向數據處理,後端)
軟件實現 (閱讀代碼的能力,實現,單元測試)你有沒有在別人代碼的基礎上改進,你是怎麼讀懂別人的代碼的,你採起了什麼辦法來保證你的新功能不會影響原來的功能?你在開發中碰到最複雜的bug是什麼,你是如何解決的?這個bug出現的緣由是什麼,你在未來應該怎麼去避免bug再出現? ①有過在別人代碼的基礎上改進,畢竟這是學習的畢竟之路②經過註釋,變量命名,先弄懂大體的方法的做用。知道代碼是幹什麼,才能入手,獲得本身想要的答案③保證和原功能的命名規範是同樣的,實在衝突,就將原功能刪掉,重寫④最複雜的bug有不少啊,那種一拋異常就幾十行的那種。只能慢慢的一點點的改錯了。⑤我印象深入的仍是那種程序沒錯,可是輸出結果又不正確的狀況。只能在每一行代碼後面輸出測試一下,找出問題所在。
軟件測試 (測試方法、測試工具、測試實踐、代碼覆蓋率) 你如何測試你本身寫的代碼?你如何測試別人的代碼?你掌握了多少種測試工具和方法?你寫過測試工具麼?你如何對一個網站進行壓力測試和效能測試?你如何測試一個軟件的人機界面 (UX/UI) ? ① 經過編譯軟件測試,別人的代碼也是同樣② 沒有掌握什麼特定的測試工具,沒有寫過測試工具③目前爲止,沒作過網站④先發布測試版本,對測試用戶進行問卷調查,看他們的體驗度
效能分析 效能分析,效能改進你寫過的最複雜的代碼是什麼?你是如何測量和改進它的效能的,用了什麼工具,如何分析的? ①課程設計②沒有用什麼技術含量的東西,直接自我感受
需求分析 (需求分析, 典型用戶,場景,創新)你作過多少個有實際用戶的項目,用戶最多有多少?你的項目有什麼創新的地方? ①目前爲止,沒有作過(如果強行將如今作的微信小程序歸入的話,算有吧,實際用戶50人)②可以綁定郵箱
行業洞察力 你最感興趣的領域是什麼?這個領域過去10年經歷了哪些創新?你分析過這個領域前10名產品麼? 請分析下他們的優劣。你要進入這個領域,應該如何創新? ①遊戲領域。互聯網領域發展迅速,從最初的網頁遊戲,到端遊,再到手遊。一路飛速發展,遊戲的種類也是愈來愈多。卡牌,格鬥,RPG,塔防•••••••••••②現在遊戲領域仍是免費氪金遊戲賺的比較多吧,付費買斷類的盜版橫行,仍是給遊戲公司帶來了必定的虧損。國內的遊戲領域,騰訊和網易兩家獨大,兩家公司手游出的多,畢竟遊戲靠的就是一時的熱度。說其優劣,優勢就是玩法多樣,界面美觀,人物美型也是一大賣點。缺點就是氪金嚴重吧。③玩法,劇情創新
項目管理 你參與過項目管理麼?請描述一下兩個當下流行的開發方法在你的項目中的具體應用狀況:請問你如何決定項目中各類任務的優先次序,有什麼理論來支持你的作法?若是你忽然發現項目不能技時完成,你做爲項目領導,有什麼辦法? ①沒有參加過項目管理②緊急的事件要先作,③帶領團隊理清事件的前後緊急程度,一塊兒努力,熬夜寫完(程序員熬夜彷佛是個很常見的事情)
軟件設計 你作過架構設計,模塊化設計,接口設計麼?請說明一下你爲什麼是這樣設計,你比較過什麼不一樣的設計方式,你的設計取得了什麼結果? ①作過,②對比了同類的產品,而後再加上本身想法。設計彷佛沒有取得什麼成果。
團隊協做 Work with others (協同工做,提供反饋,說服別人)請描述你在項目中如何說服同伴採用你提出的更好的解決方案,或者你如何聽取了別人的意見,改進了本身的方案?你如何說服懶惰的同伴加緊工做,實現團隊的目標? ①首先提出本身的見解,而後委婉的說明本身不同意以前的方案②別人說了本身的意見,若是本身以爲真的有道理,就按照別人提的意見對本身的項目進行修改③任務分配到我的,採起強行手段
理論素養 你上過什麼數學,計算機或其餘理論課,請舉出具體的例子,說明你學到的理論知識如何幫助你解決實際問題。 ①《高數》《線性代數》《機率論》《數據結構》②就《數據結構》吧,以前在作四則運算的時候要用到二叉樹,這個時候就用到了以前學到的數據結構。
自我管理 整年級你專業排名多少?你從剛入學(大學一年級)到如今的排名有變化麼?如何解釋你的排名的變化? ①20多②排名有變化,由於努力的方向不一樣,人要作好取捨,纔能有所收穫。

2.軟的問題,在成長路上學到了什麼?

  1. 保持高標準,不要受制於破窗理論(broken windows theory)[i]。
    當你看到不靠譜的設計、糟糕的代碼、過期的文檔和測試用例的時候,不要想 「既然別人的代碼已經這樣了,個人代碼也能夠隨便一點啦。」
    (c)

a) 歷來沒據說過; b) 我就是這樣隨便過來的; c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好程序員

  1. 主動解決問題。當看到不靠譜的設計,糟糕的代碼的時候,不要想「可能別人會來管這個事情」 ,或者「我下個月發一個郵件讓你們討論一下」。要主動地把問題給解決了[ii]。
    (c)

    a) 不懂啥是靠譜的設計; b) 隨便應付一下便可; c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好web

  2. 常常給本身充電,身體訓練是運動員生活的一部分,學習是軟件工程師職業的伴侶。每半年就要了解和學習一些新的相關技術。經過按期分享(面對面的分享,寫技術博客等)來確保本身真正掌握了新技術。
    (c)

    a) 歷來不看書; b) 看了就忘; c) 有時分享。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好面試

  3. DRY (Don't Repeat Yourself)——別重複。在一個系統中,每個知識點都應該有一個無異議的、正規的表現形式。
    (b)

    a) 歷來沒據說過; b) 據說過,可是認爲意思不大; c) 這要講場合。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好算法

  4. 消除不相關模塊之間的影響,在設計模塊的時候,要讓它們目標明確並單一,能獨立存在,沒有不明確的外部依賴。
    (c)

    a) 歷來沒據說過; b) 出了問題再說吧; c) 想作,可是不知道怎麼衡量效果。 d) 可以在多種語言和架構中作到 e) 不但主動作, 還會影響同事一塊兒作好小程序

  5. 經過快速原型來學習,快速原型的目的是學習,它的價值不在於代碼,而在於你經過快速原型學到了什麼。
    (a)

    a) 歷來沒據說過; b) 把原型直接用於產品,否則就浪費了; c) 不用原型,一直在產品中直接改。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好windows

  6. 設計要接近問題領域,在設計的時候,要接近你目標用戶的語言和環境。
    (d)

    a) 歷來沒據說過; b) 按個人想法設計,用戶之後會適應的; c) 大概贊成,可是怎麼接近用戶呢? d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好後端

  7. 估計任務所花費的時間,避免意外。在開始工做的時候,要作出時間和潛在影響的估計,並通告相關人士,避免最後關頭意外發生。工做中要告知可能的時間變化,過後要總結。
    (d)

    a) 作完了,就知道花費了,不用事先估計; b) 大概估一下,沒必要在乎時間 c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好微信小程序

  8. 圖形界面的工具備它的長處,可是不要忘了命令行工具也能夠發揮很高的效率,特別是能夠用腳本構建各類組合命令的時候。

    a) 一直用鼠標和GUI; b) 到時候問牛人; c) 正在學習命令行工具。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好設計模式

  9. 有不少代碼編輯器,請把其中一個用得很是熟練。讓編輯器能夠實現本身的定製,能夠用腳本驅動,用起來駕輕就熟。
    (c)

a) 只用老師教的一個; b) 隨意; c) 沒有任何定製。 d) 會定製,而且分享給其餘人 e) 還會學習和使用各類編輯器的擴展。

  1. 理解經常使用的設計模式,並知道擇機而用。設計模式不錯,更重要的是知道它的目的是什麼,何時用,何時不用。
    (b)

a) 歷來沒據說過; b) 模式沒用; c) 每寫100行程序,我就儘可能用一個模式。 d)有實際使用的經驗 e) 能用具體代碼說明模式的利弊

  1. 代碼版本管理工具是你代碼的保障,重要的代碼必定要有代碼版本管理。
    (a)

a) 歷來沒據說過; b) 用QQ,u盤便可; c) 領導要求才用。 d) 常常用 e) 不但主動作, 還會影響同事一塊兒作好

  1. 在debug的時候,不要驚慌,想一想致使問題的緣由可能在哪裏。一步一步地找到緣由。要在實踐中運用工具,善於分析日誌(log),從中找到bug。同時,在本身的代碼裏面加 log.
    (b)

a) 歷來沒據說過; b) 只會printf; c) 加log 太麻煩,個人代碼不會有bug 的。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 重要的接口要用形式化的「合同」來規定。用文檔和斷言、自動化測試等工具來保證代碼的確按照合同來作事,很少也很多。使用斷言 (assertion) 或者其餘技術來驗證代碼中的假設,你認爲不可能發生的事情在現實世界中每每會發生。
    (c)

a) 歷來沒據說過; b) 太麻煩,不用; c) 想用,但沒有時間。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 只在異常的狀況下才使用異常 (Exception), 不加判斷地過多使用異常,會下降代碼的效率和可維護性。記住不要用異常來傳遞正常的信息。
    (a)

a) 歷來沒據說過; b) 抓住全部異常 c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 有始有終。若是某個函數申請了空間或其餘資源,這個函數負責釋放這些資源。
    (c)

a) 歷來沒據說過; b) 隨緣; c) 有時這樣作。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 當你的軟件有多種技術結合在一塊兒的時候,要採用鬆耦合的配置模式,而不是要把全部代碼都混到一塊兒。
    (b)

a) 歷來沒據說過; b) 沒有實踐的機會; c) 代碼都在一塊兒比較好管理。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 把經常使用模塊的功能打形成獨立的服務,經過良好的界面 (API) 來調用不一樣的服務。
    (a)

a) 歷來沒據說過; b) 拷貝代碼過來用也能夠 c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 在設計中考慮對並行的支持,這樣你的API 設計會比較容易擴展。
    (a)

a) 歷來沒據說過; b) 並行不會出錯的; c) 任何代碼都應支持並行。 d) 考慮在適當的層次支持並行 e) 不但主動作, 還會影響同事一塊兒作好

  1. 在設計中把展示模塊 (View) 和實體模塊 (Model) 分開,這樣你的設計會更有靈活性。
    (c)

a) 代碼都在一塊兒比較好改; b) 隨緣啦; c) 沒搞清楚啥是V,啥是M。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 重視算法的效率,在開始寫以前就要估計好算法的效率是哪個數量級上的(big-O)。
    (a)

a) 歷來沒據說過; b) 個人數據量不大,無所謂; c) 不會有效率問題的,如今CPU 都快了。 d) 主動測試程序效率,以驗證估算 e) 不但主動作, 還會影響同事一塊兒作好

  1. 在實際的運行場景中測試你的算法,不要停留在數學分析層面。有時候一個小小的實際因素 (是否支持大小寫敏感的排序,數據是否支持多語言)會致使算法效率的巨大變化。
    (a)

a) 歷來沒據說過; b) 想用,但不知道工具 c) 主要靠肉眼觀察算法效率。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 常常重構代碼,同時注意要解決問題的根源。
    (b)

a) 歷來沒據說過; b) 任何修改均可以叫重構; c) 天天應該重構兩次。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 在開始設計的時候就要考慮如何測試 ,若是代碼出了問題,有log 來輔助debug 麼? 儘早測試,常常測試,爭取實現自動化測試,爭取每個構建的版本都能有某些自動測試。
    (c)

a) 歷來沒據說過; b) 個人代碼不會出問題的; c) 項目沒有安排時間,我也沒有提這事。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 代碼生成工具能夠生成一堆一堆的代碼,在正式使用它們以前,要確保你能理解它們,而且必要的時候能debug 這些代碼。
    (c)

a) 歷來沒據說過; b) 歷來不看那些代碼; c) 那些代碼沒有bug。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 和一個實際的用戶一塊兒使用軟件,得到第一手反饋。
    (d)

a) 歷來沒據說過; b) 用戶太蠢,不值得聽反饋; c) 想作可是沒有機會。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 在自動測試的時候,要有意引地入bug,來保證自動測試的確能捕獲這些錯誤。
    (b)

a) 沒據說過; b) 沒必要這麼麻煩; c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 若是測試沒有作完,那麼開發也沒有作完。
    (d)

a) 歷來沒據說過; b) 簽入代碼,就是作完了; c) 。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 適當地追求代碼覆蓋率:每一行的代碼都覆蓋了,可是程序未必正確。要確保程序覆蓋了不一樣的程序狀態和各類組合條件。
    (c)

a) 歷來沒據說過; b) 覆蓋20% 就行了; c) 要覆蓋至少60%。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 若是團隊成員碰到了一個有廣泛意義的bug, 應該創建一個測試用例抓住之後將會出現的相似的bug。
    (a)

a) 歷來沒據說過; b) 每一個bug都是特殊的; c) 測試用例不值得加 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. 測試:多走一步,多考慮一層。若是程序運行了一星期不退出,若是用戶的屏幕分辨率再提升一個檔次,這個程序會出什麼可能的錯誤?
    (c)

a) 歷來沒據說過; b) 若是有問題,用戶會報告的,咱們不用測這些; c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. (帶領團隊)瞭解用戶的指望值,稍稍超出用戶的指望值,讓用戶有驚喜。
    (d)

    a) 歷來沒據說過; b) 咱們決定用戶的指望; c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  2. (帶領團隊) 不要停留在被動地收集需求,要挖掘需求。真正的需求可能被過期的假設、對用戶的誤解或其餘因素所遮擋。
    (c)

a) 歷來沒據說過; b) 用戶不說的,咱們不作; c) 若是有明確要求,我能夠作好。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. (帶領團隊)把全部的術語和項目相關的名詞、縮寫等都放在一個地方。
    (d)

a) 歷來沒據說過; b) 都記在我腦子裏; c) 你們看代碼就好 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. (帶領團隊)不要依賴於某我的的手動操做,而是要把這些操做都作成有相關權限的人士都能運行的腳本。這樣就不會出現由於某人休假而項目被卡住的狀況。
    (c)

a) 歷來沒據說過; b) 咱們沒有休假的,不要緊; c) 出了問題再說 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. (帶領團隊)要讓重用變得更容易。一個軟件團隊要創造一種環境,讓你們有輕鬆的心態來嘗試各類想法 (例如,模塊的重用,效能的提高,等)。
    (d)

a) 都聽領導的; b) 團隊嚴肅緊張最好; c) 沒必要嘗試,失敗的可能性太大。 d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. (帶領團隊)在每一次迭代以後,都要總結經驗,讓下一次迭代的進度安排更可靠,質量更高。
    (d)

a) 沒有時間總結,直接作下一版; b) 總結用處不大; c) 若是上級有要求,就作一下; d) 一直主動這樣作 e) 不但主動作, 還會影響同事一塊兒作好

  1. (帶領團隊)團隊中每每會有矛盾產生,做爲領頭人,怎麼辦?
    (d)

a) 我沒看見矛盾。 b) 和稀泥,過得去就行 ; c) 若是沒有捅到上級那裏,就打哈哈,但願他們本身搞定; d) 有明確和一致的處理矛盾的原則 e) 不但有明確和一致的處理原則,並且對於影響團隊士氣的任何事情追究到底

第二部分:回答問題

1.咱們在課程開始之初,曾經要求你們針對軟件工程提出問題:我的閱讀做業2,那麼在通過alpha階段,你們是否對軟件工程有了必定的瞭解?請結合本身提出的問題進行回答

  • 問題:做者在如何正確地給予反饋中給出的是一個「三明治」的解決方法,較以前文所提到的三個層次,「三明治」解決方法彷佛只停留在最外層。那麼這種所謂的「三明治」解決方法,真的可以解決問題麼?對於這三個層次的反饋,究竟該如何注意場合的使用?
    答:針對不一樣的人,採起不一樣的策略。做者認爲評論人有三種層次:最外層(行爲和後果),中間層(習慣和動機),最內層(本質和固有屬性),在團隊合做中,首先對其最外層開始,委婉的談其作法,如果勸說無效,則更近一層,咱們所處的環境有必定製約因素,不比在公司,如果在公司,不用批評到最內層,老闆可能就琢磨着炒你魷魚了。
  • 問題:p169頁,文章指出:同窗們不能穿新鞋,走老路。學習了不少新的技術,新的開發模式,新的團隊管理方法,卻作一個毫無新意,沒人使用,演示完就扔掉的東西(例如:虛擬的學籍管理系統,圖書管理系統···)。咱們要在競爭性的環境中實踐軟件工程,那就要作使用而且創新的項目。我認爲,做爲學生,咱們的資源有限,剛學完一門新技術,就想作出驚天地,泣鬼神的創新,彷佛有點難度。固然也並不是不可能。畢竟大神不少。萬事不可過於絕對,一切事物皆有存在的道理,從小的嘗試開始,也是爲未來作好打算。
    答:如今正在作咱們團隊正在作微信小程序,說實話,這是在大學裏我第一次有作項目的感受,以前的一些東西都感受太虛了,作東西,仍是要作有挑戰性的東西才能真正學到知識。以前的簡單的一些管理系統實在是沒什麼用。
  • 問題:書本在第12章用戶體驗(p250)提到了:短時間刺激和長期影響。文中對這兩個概念作出了詳細的解釋,但對於其如何影響軟件用戶體驗並未做出進一步的論述。一個軟件如何才能維持它的生命力呢?
    答:創新是一個企業存活的條件。這學期學了馬克思哲學,事物是發展的,要用聯繫,發展的眼光去看問題。落到軟件開發中也是如此。

第三部分:再提問題

同時,你們必定會在實踐過程當中產生更多問題, 結合你的讀書(教材,博客,參考書), 實踐, 再提出關於軟件工程的 5 個問題。

1,在每一個問題後面,請說明哪一章節的什麼內容引發了你的提問,提供一些上下文。
2,列出一些事例或資料,支持你的提問 。
3,說說你提問題的緣由,你說由於本身的假設和書中的不一樣而提問,仍是不懂書中的術語,仍是對推理過程有疑問,仍是書中的描述和你的經驗(直接經驗或間接經驗)矛盾?

-問題1:對於書中所提到的PM的工做,其主要任務是管理團隊,分配任務。但在咱們組的實際項目開發中,PM是個很辛苦的活兒。幾乎什麼都作······(PM很辛苦的),PM對於項目的流程要很清楚,但這就意味着PM不管是什麼都會麼?

-問題2:書中的敏捷衝刺階段,小組要一塊兒開發項目,雖然事前小組內的工做都分配的很好,但因爲基礎的問題,仍是不能及時的完成任務,未能達到理想的狀態。程序猿加班加點已是屢見不鮮,因此,一個好的項目,一定要用熬夜換來麼?

-問題3:項目測試這一章給咱們提供了不少的測試方法,其實在咱們具體實踐中, 彷佛沒有管那麼多,畢竟作出來的程序功能也不是很強大。修bug是個很使人頭疼的事情,但倒是一個好程序的必經之路。沒什麼代碼量的小程序能夠忽略掉項目麼?

-問題4:書上談到創新,雖說如今咱們所作的項目看似有創新點,可是實際上放到市場上彷佛沒什麼競爭力,到底怎樣的創新纔是有價值的創新。

-問題5:如何才能作到溝通的藝術,項目小組成員之間如何才能作到更好的溝通?

相關文章
相關標籤/搜索