1. 程式人生 > >2018 軟體工程 第1次作業

2018 軟體工程 第1次作業

第一部分  結緣計算機

1、計算機是你喜歡的領域嗎?是你擅長的領域嗎?

自己最早接觸計算機應該是在小學的微機課上,而那時個人計算機作為一種新興的事物,大家對它的存在保持著高度的興趣,但僅僅是對一種新鮮事物的好奇,而那時對計算機的使用也就停留在學習打字,或者是對計算機本身所含有的一些小遊戲的痴迷,比如掃雷、紙牌等,還有那時對計算機記憶最深的就是上課所穿的綠色鞋套了。而到了初中所學習的則是一些基本的辦公軟體word之類,因為有與之對應的考試,所以大家學的都比較認真,雖然那些東西是如此的基礎簡單,但個人計算機的廣泛普及也沒有幾年,至少在那時我的家鄉,它還是比較少見的。那時對計算機也沒有太多的感覺,即使學習了它的一些辦公功能,但因為沒有進行實際有價值的應用,所以只是感覺它可以做為家庭經濟實力的一種象徵以及遊戲新的載體。高中大家都在忙著學習,計算機只是躺在那成了另一個老師。真正接觸計算機應該是在大學期間,我覺得學習《大學計算機基礎》以及《C語言》這兩門課是我開始走入計算機領域節點,但這個開始是痛苦的,師生關係和路人甲\路人乙差不多(http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html),《C語言》作為一門必須課,我卻拿到了中等的,這對我心理的影響挺大的,再加之本身也不是計算機專業的,所以本身對這個領域就有些排斥,也不是所擅長的領域。

2、你對計算機的熱愛是怎樣的?僅僅是口頭的嗎?

就算上面所說的,我對計算機談不上熱愛,甚至還有一些排斥。但是現在幾乎所有的行業都與計算機脫不了關係,而且在這個資訊化的時代,計算機是這個時代一個很重要的一部分,所以我又得去認真接觸它,去學習它,讓它作為自己的一個有力的工具去更加有效地解決問題。

第二部分  學習生活

1、你對你的大學生活有什麼想要吐槽的地方嗎?你理想的大學教育應該是什麼樣子的?跟學校給你的有什麼區別?

對的大學生活吐槽主要還是對自己的吐槽吧,其實大學生活有很多的空閒時間,但是我沒有把它充實起來,自己浪費了很多時間,那些對本科教育體制的吐槽,比如在第一篇文章(http://blog.sciencenet.cn/blog-765339-847817.html)

所講的作者在美的學習經歷為對比列舉了我國本科教育的很多問題,值得我們深思。但這種問題是整個教育體制的問題,而不是簡單的一個本科教育的問題。

其實我很不適應這門選修課的教學方式,在我編輯這篇部落格時,其實我內心還在擔心英語和數學的複習,就像把它們進行歸類時,都是緊迫且重要的事(https://book.douban.com/subject/4006425/discussion/22803733/)。而就像經濟基礎決定上層建築,在整個體制無法做出有效的改變時,有些問題被思考得過於樂觀。當然我也覺得美國的那種教育模式也十分有意義,但我覺得我們不能脫離中國的基礎教育來談大學教育,也不能那個要求從高中那種應試教育模式一下到大學的教育模式就能比肩美國的大學教育,這種比較是很不負責任。當然這不是來推脫每個學生身處其中的責任,第一個螃蟹也需要相應的傢伙事兒其品嚐,不然也是虛無的。所以基於這些我對學校所給的沒有想法。

2、迄今為止,你寫了多少程式碼,描述你做的最複雜的軟體專案/作業。

很遺憾,我基本沒有寫過程式碼,最複雜的是今天在學習python時所做得一個小遊戲,即一個簡單的print以及if、else語句的應用。

第三部分  未來規劃

1、你有什麼樣的夢想或者未來想從事什麼樣的工作?你準備怎樣來規劃你技術道路,職業道路和社會道路?

因為自身工作性質問題,回答這部分問題的語言會很少。我希望我將來的工作還是從事技術方面的吧,雖然如今的政策下我們的可選擇的變得越來越少,有些東西身不由己。當我以一種很誠實的態度來談時,我沒有太多去思考技術道路、職業道路和社會道路,即使現在思考也沒有頭緒,只是覺得現在這個道路中規中矩走下去就可以。

這有點像文章中提到的隨波逐流的樣子(https://blog.csdn.net/haoel/article/details/1688104)。

2、你對於實現自己的夢想已經做了或者計劃做什麼樣的準備?

首先希望通過對老師工作的參與提高自己的能力,並且也在認真地學習自己的基礎課程,接觸自己專業的軟體以及前沿知識,希望能有個好的開始,打下一個好的基礎,並且培養自己所需的思維以及解決問題的方法,以此來應對將來所遇到的難題,並且學習一些可能工作環境中用到的軟體與知識來應對將來的變革;其次更多地去參與團隊協作,培養自己的團隊協作能力與意識;最後保持一個良好的心態和強健的身體,作一個自律和開朗的人,並積極進行身體鍛鍊,保護自己的健康。我感覺我現在所做得就是為了使我將來有能力得到自己想得到的東西,並且絕大部分東西都是水到渠成。

第四部分  課程期望

1、你對這門課的期望是什麼?你打算平均每週拿出多少個小時用在這門課上?你願意為了一個你感興趣的專案、或得到實戰鍛鍊而付出更多時間和精力(包括熬夜)嗎?

我對這門課的期望是能通過這門課學會使用python程式設計並用其解決實際的問題,每週除了上課時間平均拿出八個小時用在這門課程上,雖然自己的程式設計基礎很差以及興趣不是很高,但在自己完成一個很短的程式並順利實現它的功能,內心還是很高興的,而且對於已發生事物,我總會抱著一種良好的心態去做,所以我肯定會付出更多的精力以及時間去學習這個技能。

2、分析軟體

(1)這些軟體的開發者是怎麼說服你(陌生人)成為他們的使用者的?他們的目標都是盈利麼?他們的目標都是賺取使用者的現金麼?還是別的?

Internal Software (企業或學校或某組織內部的軟體)一般都是企業或學校管理的工具或者企業或學校部分功能的載體,所以它的使用者一般是因為相較於真實生活方便快捷的體驗而成為使用者,一般不存在競爭,而且目標不是盈利。Games(遊戲)、Mobile Apps(手機應用)則與同類型軟體存在競爭,通過其功能體驗來吸引使用者,有時還有與該公司其他軟體的捆綁來強化其使用者群體,其目標基本都是在本公司體系內的盈利。但不一定時使用者的現金,可能是使用所帶來的流量。

(2)你個人第一次用此類軟體是什麼時候,你當時多大,具體在什麼學校讀幾年級,老師是誰,同桌叫啥?軟體是如何到你手裡的?例如:郵購,下載,互相拷貝,從應用商店購買,…….

第一次使用Internal Software是在大學,是學校的評教軟體,大一,老師若干,同桌二狗,軟體是下載的。

第一次使用Games是在小學,我能說它是掃雷嘛,三年級,老師若干,同桌小黑,軟體是自帶的。

第一次使用Mobile Apps是在初中,是QQ,初一,老師若干,同桌小白,軟體是下載的。

(3)我們知道有些軟體是收費的,有些是“免費” 的, 那麼,軟體公司為何會給你免費使用這個軟體呢? 寫這個軟體的工程師們,他們的工資如果不從你(使用者)這裡來, 從哪裡來呢? 目前你們當地的軟體工程師的工資大約是多少,請給出儘量詳細的分析,精確到年收入多少萬元人民幣。

免費的軟體比如360,360衛士是一種免費的電腦安全軟體,但是奇虎公司仍可以正常運作,是因為該公司在別的領域存在收入,比如360網址導航、它所代理的廣告以及遊戲的開發。而且360的免費使用者使他其他盈利部分的潛在使用者。這樣整個公司就是盈利的,工程師的工資就有了。軟體工程師的年薪大概15萬吧。。。

(4)你是如何學會用這軟體的?它給你什麼好處,壞處? 這些軟體是如何處理 bug 的?  如何更新新版本的?  你估計軟體團隊更新一個主要版本花了多少 人月? 請寫上人月的定義. 如果你們宿舍(或者你和另外三四個同學)要做同樣水平的軟體,請估計你們需要多少時間?

除大多數專業軟體之外,大部分軟體的使用門檻都很低,專業軟體的話我會跟著老師學或者看書自學,普通的軟體按照他的功能操作一遍就掌握了。軟體給我們生活和學習帶來了極大的方便,壞處的話,可以舉一例子,比如大家上課都對完全依賴PPT課程提不上興趣。

我估計軟體團隊更新一個主要版本要花3人月左右的時間。下面是從百度百科找到的人月定義,一種表示勞動時間的計量單位。指一個勞動者工作一個月。它是計算月勞動生產率的時間單位。計算時,在該月內出勤的工人,不論其出勤天數,均作一個人月。由於不考慮工人的缺勤天數,因此,所得結果的精確程度,要比用人日或人時為低。如果使我們作出同樣水平的軟體應該得是他的4-10倍吧,也純屬猜測,沒有什麼資料支撐。

(5)同一型別的軟體之間是如何競爭的?你現在還用它麼,你為何選擇這個產品,而不是它的競爭對手?

因為對於軟體來說,使用群體的功能需求以及使用習慣來說很重要。所以我認為軟體之間的競爭在某種程度就是這兩個方面的競爭,當然在這兩個方面上相差不大時,使用軟體所付出的代價也會影響。現在舉我在用軟體的一個例子,比如英語翻譯軟體有道詞典和百度翻譯,這兩點我都安裝過,它倆在翻譯的精準度上各有千秋,相差不大,但是有道詞典更符合我的使用習慣,它的介面以及模組劃分更加令我喜歡,所以我選擇了有道詞典,而不是百度翻譯。

(6)5年後, 這種軟體執行的硬體會有什麼變化, 軟體再過 5 年還會存在麼,為什麼?

五年後這種軟體執行的硬體可能已經老化無法正常使用,但軟體依舊可以使用,應為硬體作為一種消耗品,它是有使用壽命的,但軟體作為一種邏輯產品,本身的程式不會改變,依舊可以執行,雖然它的部分功能可能無法滿足人的需要。

(7)列舉你在使用上述軟體的時候觀察到的 “特殊”現象,它們和硬體有什麼不同?  這些能說明軟體的某些本質特性麼?

比如在程式設計完後執行出現錯誤,只可能是所程式設計序的問題,而不是軟體的問題。研製成功之後可以進行無限複製和傳播,並且會有很多的更新、補丁之類。所以軟體是一種邏輯產品,與物質產品硬體有很大區別。

而基於不同的硬體,軟體的效率是有區別的,並且在某種程度上由硬體所決定,所以軟體使用是有硬體基礎和環境要求的,軟體反過來可以控制軟體。