人类文明的发展离不开哲学家的思考、科学家的发现和工程师的构建。三个简单的方程式解释了什么是现代软件工程:

1.程序=算法+数据结构

2.软件=程序+软件工程

3.软件企业=软件+商业模式

软件开发的不同阶段可以类比为航空产业:从玩具阶段的纸飞机,到业余爱好的飞屋,再到探索阶段的 莱特兄弟的飞机,最后成为成熟的产业。软件开发从简单的“Hello World”,到我们现在用js写写网站,再到我们一直追寻的新技术与创新,并为着成熟的工业而奋斗,这就是现代软件工程的“软件开发流程”。

在个人技术和流程方面,有三个非常重要的概念:

单元测试:测试程序中最基本的单元,如“类”和基本功能点,要测试API中每个方法每个参数,单元测试必须由最熟悉代码的人(程序的作者)来写。

回归测试:新的构建不一定就是进步,可能也会导致一个模块或功能重新出现问题,出现“倒退”。我们管理源代码时,一个模块只负责一个功能。

个人开发流程:从大学生和工程师在PSP阶段中的所花时间百分比对比中,我惊奇的发现从学生到职业程序员,没完没了写代码的时间反而有所减少,需求分析和测试反而是菜鸟常需要重视的环节。

作为一名以初级软件工程师自比的学生,积累软件开发相关知识与提升技术技能是榜单上第一位的成长方式。这里有瓦茨·汉弗雷提出的一个类爱迪生公式:软件领域≈5%创新爆发+95%维护测试,可见脚踏实地地磨练技术才能使问题变成低层次问题,在教育学领域,这样的问题也就成为了我们精通的舒适区的一部分。

 

成长的另一个关键要素就是在工作中学习。所谓“没有人能在学校里掌握所有将来会用得到的只是才离开学校”,学习者正如摸着石头过河的人,学习者正如摸着石头过河的人,踩着前人经验与教训铺好的石头上不断向前,而分析麻痹等思维误区导致的停留,可能让我们在等待之中看着这条河越来越宽,所以实际工作里,在专攻与略懂相结合的方式之中不断学习,才能保持进步。

著名程序员姚冬说:“工资不是老板对你过去贡献的回报而是对你未来贡献的预期。现任老板不可能给出让你满意的工资,下一任老板才会。”,自学能力、动手能力、耐心毅力、表达能力永远是程序员的核心竞争力。

最新文章

  1. 关于 CSS 反射倒影的研究思考
  2. 2. SVM线性分类器
  3. [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?
  4. Java 集合系列18之 Iterator和Enumeration比较
  5. Nmap 使用指南
  6. [Linux] LVM的条带化
  7. 将Windows 7导航窗格中的收藏夹、库、家庭组、网络全部去掉
  8. Opencv2.4.4作图像旋转和缩放
  9. currentStyle、getComputedStyle
  10. flexigrid
  11. 基于Dubbo的压测调优实例
  12. MySQL集群架构:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken
  13. Golang自定义包导入
  14. Linux配置snmp
  15. 虚拟化技术之KVM
  16. C# 的三种序列化方法
  17. Html5 移动应用软件开发框架 JqueryMobile SenchaTouch 介绍
  18. centos上搭建git服务--3
  19. 从原型链看DOM--Document类型
  20. Linux命令应用大词典-第4章 目录和文件操作

热门文章

  1. Cobbler安装配置简单使用
  2. bzoj4066
  3. Codeforces 1108F MST Unification MST + LCA
  4. 20个Flutter实例视频教程-01节底部导航栏和切换效果的制作-1
  5. mysql使用小结
  6. [Xcode 实际操作]一、博主领进门-(2)第一个工程项目:将导入的图片显示到屏幕上
  7. Quantitative proteomic analysis of small and large extracellular vesicles (EVs) reveals enrichment of adhesion proteins in small EVs (文献分享一组-柯酩)
  8. Suse 11 sp4 安装Oracle 11g
  9. echarts相关属性设置(1)折线图篇
  10. 超简单 Promise封装小程序ajax 超好用 以及封装登录