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

2023-11-02

看了包建强的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. 从多种角度考虑问题
此基础素质好的人应该是做什么都不怕.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 非关系型数据库Mongodb入门

    MongoDB是一个高性能 可扩展 易操作的非关系型数据库 适合处理大量数据和需要快速数据访问的应用程序 它使用文档数据模型 而不是传统的表结构 这使得它非常适合存储和查询复杂的数据结构 以下是MongoDB的一些主要特点和功能 文档数据模
  • Vivado中FFT核的使用解析及Matlab实现

    Vivado中FFT核的使用解析及Matlab实现 傅里叶变换 Fast Fourier Transform FFT 是一种重要的信号处理技术 广泛应用于音频 图像 通信等领域 在Vivado开发环境中 针对FFT操作提供了专门的IP核 可
  • js中对象值多个值快速置空

    1 批量处理制空的应用场景 比如我们关闭el dialog的弹框 再次打开编辑时 需要清空上次编辑时页面的值 这个时候我们需要在close方法内将弹框里面所渲染的值都值空 而一般对象的值一个个去置空在维护上不方便 所以采用这种统一的处理 后
  • 攻防世界 disabled_button

    查看页面源代码后发现 有个disabled class 标签 上网查看该标签的作用 发现只要把该标签删掉就能点击这个按钮了 使用bp抓包 如果直接forward则无法修改response回来的内容 因此在forward之前 需要点击acti
  • 数据迁移 java_数据迁移的成功策略

    迁移数据是一个具有挑战性的过程 将面临一些重大风险 因此必须尽可能有效地进行计划 执行 测试 数据迁移是将数据从源系统传输到目标系统的过程 这是任何数据存储专业人员的核心任务 数据迁移很重要 因为它是升级或整合服务器和存储硬件 或添加数据密
  • 如何快速入门 Python

    学习任何一门语言都是从入门 1 年左右 通过不间断练习达到熟练水准 3 到 5 年 少数人最终能精通语言 成为执牛耳者 他们是金字塔的最顶层 虽然万事开头难 但好的开始是成功的一半 今天这篇文章就来谈谈如何开始入门 Python 只要方向对
  • gerrit REST API

    查看REST API支持的所有命令 ssh p 29418 user gerrit host gerrit help gerrit COMMAND ARG help h end of options help h display this
  • Playwright直接控制本地Chrome浏览器的方法

    Playwright默认调用的是chromium浏览器 并且使用的是无痕模式 有时我们的一些cookie登录信息保存在我们日常使用的Chrome浏览器上 不想每次运行脚本都要去登录这么麻烦 那么playwright其实也可以直接调用我们平时
  • 【华为OD机试 2023】 匿名信(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • std::stoi系列函数自动识别8进制、16进制数的方法

    像这样写只能转为0 string str 0x12 int i stoi str 正确的写法应该是这样 string str 0x12 int i stoi str 0 0 指定base是0 函数则自动判断 不写的话 默认值是10 当然不给
  • Java类和对象的练习题

    1 冒泡排序 package one 使用冒泡排序 实现如下的数组从小到大排序 int arr new int 34 5 22 98 6 76 0 3 public class pao public static void main Str
  • 【转】计算机网络——三次握手与四次挥手

    转载来源 网络编程知识预备 2 三次握手与四次挥手 流量控制 滑动窗口 拥塞控制 半连接状态 2MSL 目录 一 三次握手 什么是三次握手 三次握手图解 过程解析 1 第一次握手 2 第二次握手 3 第三次握手 二 四次挥手 什么是四次挥手
  • 关于电脑找不到vcruntime140_1.dll,无法继续执行代码的解决方案-这几种解决方法轻松解决

    vcruntime140 1 dll文件是Windows操作系统中必要的动态链接库文件之一 当出现错误提示 vcruntime140 1 dll文件未找到 或 vcruntime140 1 dll已丢失 时 就需要对该问题进行解决 以下是一
  • springboot读写json文件,格式化写入json,java

    java springboot读写json文件 这是一个很酷的动作 而且是格式化写入json 美观漂亮 有问题可以咨询我的微信yizheng369 源码地址 https gitee com 618859 java springboot up
  • 属性重要性的举例(定性数据聚类)

    近日在解决一组定性数据的聚类问题 看文献时觉得论文中 基于属性重要性的定性数据聚类方法 举例不太容易理解 尤其是对我这种不喜欢看数学公式的人 所以写了这篇以备忘 1 基础知识 粗糙集和等价关系可参考 https blog csdn net
  • JAVAのIO框架---commons-io

    commons io包下载地址 Commons IO Download Apache Commons IO 进入后点击第二个链接下载 解压完后 箭头所指就是我们这次要用的jar包了 复制它 进入idea 导入jar包最关键的一步来了 右键粘
  • 3.【多级缓存架构】数据库和缓存不一致的情况分析和解决方案

    3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 文章目录 3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 1 最初级的缓存不一致的问题以及解决方案 1 1 问题 先修改数据库 在删除缓存 如果删除缓存失败了 就会导致数据
  • 基于express的文件上传功能实现

    基于express 的文件上传功能 功能描述 可以上传文件 并在后台中看到上传的文件 可以上传图片 并进行一个简单预览 点击提交后可以在后台中看到 功能展示 功能实现 index html
  • 爬虫实例分析

    下面我将介绍如何一步一步将豆瓣的top250的网页数据爬取并保存在本地 首先我们需要python的基础 定义变量 列表 字典 元组 if语句 while语句等 然后利用了解爬虫的基本框架 原理 爬虫就是模仿浏览器去访问网络中的网页 并将网页
  • 我心目中的优秀开发人员标准 兼谈OO和设计模式

    看了包建强的blog 一个优秀 NET程序员的技能树 想说些个人意见 包建强所列举的技能很多 可以说绝大部分人都达不到他说的标准 难道达不到那个标准就算不上优秀了 也不尽然 每个人有自己的看法 我的看法 对于 net方面的开发人员 我认为应