您的位置:首页 > 其它

软件开发的三重门

2016-12-11 18:15 204 查看
软件开发的三重门:



       第一重门是业务功能,在这重门里,的确是会编程就可以了;

       第二重门是业务性能,在这一重门里,技术的基础就很管用了,比如:操作系统的文件管理,进程调度,内存管理,网络的七层模型,TCP/UDP的协议,语言用法、编译和类库的实现,数据结构,算法等等就非常关键了;

       第三重门是业务智能,在这一重门里,你会发现很多东西都很学院派了,比如,搜索算法,推荐算法,预测,统计,机器学习,图像识别,分布式架构和算法,等等,你需要读很多计算机学院派的论文。

       总之,这主要看你职业生涯的背景了,如果你整天被当作劳动力来使用,你用到的技术就比较浅,比较实用,但是如果你做一些知识密集型的工作,你就需要用心来搞搞研究,就会发现你需要理论上的知识。比如说,我之前做过的跨国库存调配,需要知道最短路径的算法,而我现在在亚马逊做的库存预测系统,数据挖掘的那些东西都需要很强的数学建模、算法、数据挖掘的功底。

 

       我觉得真正的高手都来自知识密集型的学院派。他们更强的是,可以把那些理论的基础知识应用到现在的业务上来。但很可惜,我们国内今天的教育并没有很好地把那些学院派的理论知识和现实的业务问题很好地接合起来。比如说一些哈希表或二叉树的数据结构,如果我们的学校在讲述这些知识的时候能够接合实际的业务问题,效果会非常不错,如:设计一个IP地址和地理位置的查询系统,设计一个分布式的NoSQL的数据库,或是设计一个地理位置的检索应用等等。

       在学习操作系统的时候,如果老师可以带学生做一个手机或嵌入式操作系统,或是研究一下Unix System或是Linux的源码的话,会更有意思。在学习网络知识的时候,能带学生重点学一下以太网和TCP/IP的特性,并调优,如果能做一个网络上的pub/sub的消息系统或是做一个像Nginx一样的web server,那会更好。如果在学图形学的过程中能带领学生实践一个作图工具或是一个游戏引擎,那会更有意思。

        做为一个程序员,我们除了要掌握多门程序语言和多种数据库,了解前端技术、后端技术,通晓网络七层架构,知道 TCP/IP三次握手和四次挥手,编写漂亮的代码,设计优美的架构……之外,我们还要解决研发、程序运行和产品上线过程中遇到的各种问题,而且被要求以最小的代价来解决问题……我们容易吗?

        除了编程技巧和程序设计能力,解决问题的稳准狠是衡量一个程序员是否优秀的重要因素之一,也是资深技术人员真正的价值所在。在科技浪潮澎湃、技术信息扑面而来的今天,一位刚毕业的大学生如果足够勤奋,他可以在两三个月之内掌握一门编程语言,并编写出像模像样的软件,他们的学习速度甚至超过了我们这些老程序员,但是解决问题的能力是无法速成的,只能依靠时间、经验和惨痛的教训历练而成。有时候还需要灵感和运气。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: