我心目中的优秀开发人员标准 兼谈OO和设计模式

简介: 看了包建强的blog: 一个优秀.NET程序员的技能树  想说些个人意见. 包建强所列举的技能很多. 可以说绝大部分人都达不到他说的标准. 难道达不到那个标准就算不上优秀了?也不尽然. 每个人有自己的看法.
看了包建强的blog: 一个优秀.NET程序员的技能树  想说些个人意见.
包建强所列举的技能很多. 可以说绝大部分人都达不到他说的标准. 难道达不到那个标准就算不上优秀了?也不尽然.
每个人有自己的看法. 我的看法:
对于.net方面的开发人员, 我认为应该掌握的基本技术素质:
asp.net方面
  webcontrols和htmlcontrols
  webform验证控件, 熟练地在不同场合使用客户端验证和服务器端验证
  了解Get. POST等常用web actions区别.
  知道Application, Session, httprequest周期.
  了解httpruntime的cache与session的区别
  javascript和DHTML如何work
  ajax如何work, 如果可以,最好了解一个ajax框架. 如微软提供的框架.
WinForm常用控件
web service
Threading,  STA 和MTA
ADO.net,  dataset, datareader
Regular expression初步知识
基础sql server
基础Debugging

如果再进阶的话,
   可以了解httpmodule, httphandler如何应用
   理解appdomain及其应用
   可以思考.net如何与其它技术平台work. 如com+, com, java. 
   可以了解新技术(如linq, wpf,wwf,wcf)等对应用的影响.
   可以思考如何提高应用程序的安全性,可维护性,可扩展性, 可
   可以思考高可用性, 高容量环境下的应用开发.
   进阶的Debugging, 到底层去理解系统是如何work的. 如何能在用高级语言编程时,也想到底层是如何work的, 那么你的系统一定会相对运行得效率高,省资源. 不要总想着硬件便宜, 加硬件或者升级硬件就行了.

再进一步,可以扩展知识面, 点面结合. 点是指你得主要技术强项,如.net, 面当然是指更宽的技术知识面和商业知识面了.

了解Microsoft的其它技术和它的历史
了解Microsoft以外的世界是什么样的
了解不同的商业知识Business domain, 计算技术其实是为这些商业领域服务的, 成为商业领域专家,是个不错的选择.

关于OO.
OO是一种方法. OO发展了好多年.有不少好东西 可以用但是不要什么都是OO. OO不代表计算技术的全部.   
开发企业应用时应用OO是比较不错的. 但是开发其它的应用时, OO就不见得好了. 

关于设计模式
GOF 23种模式还有其它一些模式是不错的知识. 你不一定要能熟记这些模式的UML图. 关键是要弄清楚这些模式在何种情况下应用. 能正确辨别何时何地运用何种知识才是关键.  兵法也说“兵无常形”. 就是让我们办事要因时、因地制宜,具体问题要用具体办法去解决。说句实话,设计模式就象围棋里面地定式. 你能熟记是最好, 但是一定要搞清楚何种情况下用何种定式. 再者围棋里面地变化实在太多了. 定式根本就不够用, 就要看你的基本功了, 对大势,厚薄,截才, 先后手, 气数等等都算计得很清楚, 才可能找出最优解. 我们面对的世界也是变化无穷的. 我们能凭借什么来设计好的软件系统呢.

1. 简单原则, 把复杂的东西简单化, 而不是相反. 看起来一目了然的界面,看起来一目了然的程序代码, 容易理解,容易维护. 我以前参加过一个项目,曾经为了改一个简单的文字, 花了四个小时在复杂的程序里找这个字符串从哪里来的. 当然我是刚加入这个项目组. 这就是复杂架构的不好的地方.  对于新人就学习成本很高. 维护成本也高. 设计要避免过度设计, 开始设计系统时首先要想到从应用层面和技术层面如何简化系统. 有句话说的好, 把复杂的东西简单化,是贡献. 千万不要做相反的事情.
2. 分而治之 就是将大问题分解成几个小问题,大系统分解成几个小系统. 这其实是简化地一种手段, 但是要注意分的时候的度. 不可过细,也不可过粗.

开发人员的其他素质
使用工具的能力, 有好多工具可供我们使用, 如单元测试,
对软件工程的理解
协作, 沟通的能力
自我工作的估计和计划
责任心和激情


最最基础,  也最最重要的素质:
1. 善于学习,总结
2. 善于分析判断
3. 从多种角度考虑问题
此基础素质好的人应该是做什么都不怕.
目录
相关文章
|
7月前
|
Ubuntu Linux 编译器
在Ubuntu Linux系统下如何搭建并安装EDK2
以上就是在Ubuntu Linux系统下搭建并安装EDK2的过程。这个过程可能会有些复杂,但只要按照步骤一步步来,应该不会有太大问题。如果在过程中遇到任何问题,都可以在网上找到相应的解决方案。希望这个指南能对你有所帮助!
277 17
|
8月前
|
算法 编译器 C++
C++20之2025年上桌我坐哪里?
C++20是C++语言的一次重大更新,引入了模块、协程、概念、范围等革命性特性。相比老版本,它显著提高了开发效率、增强了代码可读性和可维护性,并通过优化编译和运行性能提升了整体表现。这些改进推动了现代C++编程范式的发展,帮助开发者应对复杂软件工程挑战。文章回顾了C++发展历程,详细分析了C++20的新特性及其优势,展望了其未来潜力。
295 1
|
11月前
|
安全
【HarmonyOS学习】应用文件访问
访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。 优点: * 隔离性:应用沙箱提供了一个完全隔离的环境,使用户可以安全地访问应用文件。 * 安全性:应用沙箱限制了应用可见地数据地最小范围,保护了应用文件地安全。
258 5
【HarmonyOS学习】应用文件访问
|
数据采集 中间件 API
在Scrapy爬虫中应用Crawlera进行反爬虫策略
在Scrapy爬虫中应用Crawlera进行反爬虫策略
|
Java 调度 开发者
如何在Java中实现任务调度
如何在Java中实现任务调度
|
负载均衡 网络协议 算法
iptables 具体介绍
iptables 具体介绍
|
Linux PHP 开发工具
DockerFile定制镜像
Dockerfile 是用于构建 Docker 镜像的文本文件,包含构建镜像所需指令。镜像基于分层文件系统,如 CentOS 镜像仅含 rootfs 和必要的层。在 Redhat 9.2 系统中,通过 `docker build` 命令结合 Dockerfile 可创建自定义镜像,如 `centos7:v1`。构建过程包括从基础镜像开始逐层添加指令,并最终形成新镜像。镜像可导出为压缩文件便于存储和传输,之后能通过 `docker load` 加载回镜像。此外,可使用 `docker commit` 将容器转化为镜像。
189 1
|
Web App开发 存储 缓存
原生 js 实现一个前端路由 router
原生 js 实现一个前端路由 router
1120 0
原生 js 实现一个前端路由 router
计算机网络:数据链路层(广域网、PPP协议、HDLC协议)
计算机网络:数据链路层(广域网、PPP协议、HDLC协议)
706 0
|
SQL 存储 分布式计算
AnalyticDB MySQL带你深入浅出SQL优化器原理
SQL优化器是数据库、数据仓库、大数据等相关领域中最复杂的内核模块之一,它是影响查询性能的关键因素。比如大家熟知的开源产品 MySQL、PostgreSQL、Greenplum DB、Hive、Spark、Presto,都有自己的优化器。本文将由浅入深地带读者了解其中技术原理。