工作後寫程式的收穫

    這三個月下來,從中心同事的身上學到不少東西,這些都是他們累積下來的經驗,讓我收穫良多,謝謝他們。工作已經將近三個月,有很多的心得,職場、寫程式都有不少心得,今天先從程式談起好了,以前在學校無論是寫作業,接case,算一算也寫了不少程式,但真正工作寫大型的軟體後。發現產品跟之前寫的程式完全不一樣,要考慮的事情也多了很多,我從程式的設計、開發、測試三個部份來說好了。

設計
  之前寫程式雖然知道事前的設計很重要,但都是粗略的想一下就著手進行開發了,往往在開發完成要使用的時候遇到需要改很大的問題,額外又多花很多時間修改。看書上寫多多紙上談兵,設計的修改往往比成式的修改省時,但那時沒甚麼感想。現在外面工作之後,才真正在實務上遇到,我們花很多時間在討論新的功能如何實做,以及會遇到各式各樣的問題都事先預想,怎樣跟其他組整合才不會影響到原本的功能,甚至討論到快吵起來。不過最後討論出來的東西雖然稱不上完美,但也非常好了。而且在我們的team中,大家的設計都是往right things to do 的方向想,也會兼顧目前的時程,我覺得非常的好。有非常多的人事物值得我學習。

  • 開發前多想一點多考慮一點,以後的修改與錯誤就少一點。

開發

開發的部分也有很多跟以往經驗不同的地方,最讓我印想深刻的就程式的容錯性,因為我們開發的是儲存系統,上面儲存的的是重要的資料,所以容錯性非常重要,在這常常需要考慮到,系統crash後再啟動,資料是否能正確的被保留下來,系統是否能正常運作,在這個部份我是完全的新手。但在我們組內,每個人開發都會考慮到容錯性,還有錯誤還原等問題,這是我不足的地方,也是我在這裡努力的方向。程式的效能也是一大的考量,之前再開發教學網站就有預到類似的問題了,這種問題處理起來也蠻累人的。在工作之後,這個問題也是每天會討論到的問題,希望在這裡可以學到這方面的經驗。不過在這邊的開發也有一些問題,文件的不足(我之前想到公司學的就是開發的文件化),由於我們中心也才成立第三年,很多流程制度等也還不夠成熟,很多都是藉由大家的努力持續在改善中,文件我想過一陣子開發的進度不那麼忙的時候就會被注意到了,到時候就做中學吧。還有一個很大的不同,就是以前很少開發multi-thresad的程式,這邊幾乎都是,所以在除錯上的困難度對我來說很高,我有找一個同步問題找一個禮拜的經驗= =,找到快發瘋,而且每次測試幾乎都是沒問題,只有幾次重現問題的機會,我發覺這部分的經驗很重要,也是一個學習的目標。

  • 容錯、效率、同步都是在開發中重要的考慮點。


測試

這個部份就是我之前一直想學,一直想加入自己開發程式的流程中的部分,我剛進中心的工作就是寫測試,測試也是一門學問阿。雖然在這邊不是TDD,所有的測試幾乎是在程式寫完後,或完成前寫的。不過同事們也一直強調程式在commit之前一定要經過測試,最近我們還訂了一些規則,用了CI的工具,確保我們出去的程式都是被測試過的,這部分就跟我以前在學校很不同,這裡寫的程式幾乎都要有unit test , functional test , feature test等,不過我還蠻想試試TDD的,希望以後有機會。

  • 齊全完整的測試才能有好的程式。

在真正工作後,有很多的感觸與感想,發現需要學的東西還有一大堆,慢慢來吧!
之後有機會在慢慢記錄下來。


留言

  1. 我也覺得自動測試程式很重要!可惜我們不是軟體公司大家都不太重視這個......每次要加新功能都很麻煩

    回覆刪除

張貼留言

這個網誌中的熱門文章