前言
今天想讲讲的是我的技术树. 我最初是做 CS 开发的, 第一阶段的技术经历是以 Powerbuilder 来做 CS 开发, 第二阶段开始基于 C# 做 winform 开发, 眼看前端开发越来越流行, 需要更广泛的技术栈势在必行. 因此以. Net 为基础, 我开始拓展自己的技术栈. 从 14 年到 18 年, 跨越了很多界限, 到现在为止, 应该说. Net,Java,Android, 基于 Node.JS 的 web 开发都积累了一些经验, 可以给大家分享一下.
01
我的技能树
我对技能的培养, 是很有目的性的. 我在开启我的第二阶段技能增长的时候, 就预先对自己未来的技术树发展进行了选择. 因此当时就画了思维导图并逐渐补充和调整. 现在我就将我的 "技能树" 思维导图跟大家分享.
其中, 标注为黄色旗帜的是基本掌握, 标注为红色旗帜的为使用熟练. 未标注的只是了解.
首先提一下我的技能树的底色. 从我进入 IT 行业开始, 一直从事的是企业信息化系统的开发, 所以在技术树里, 还看不到算法, 集群, 微服务这类技能, 这还不在我的技能需求列表内. 我的技能覆盖范围是: 如何做好一个企业信息化系统. 但我未来对这些还是很有兴趣并会进行研究.
史前技能:
作为 IT 行业的老爷爷, 我还有前一段的技术经历, 是使用 PowerBuilder+Sybase 数据库进行 CS 应用开发. 我刚进入 IT 行业的时候, PowerBuilder 还是非常火的, 那时候有两火, PowerBuilder 和 Delphi. 那时候也刚好是互联网时代刚开启的时候, 所以几年之后, 技能便逐渐过时, 我从程序员到部门经理, 感觉技能无法进步, 最后我转行做了产品经理.
在几年前, 经过 n 年的折腾产品, 我发现搞技术也挺适合我的, 我又回头拿起了技术. 一手产品, 一手技术, 都是我喜欢的事情, 因此我想如何能尽快的精进技术, 我的技能树思维导图就是那时候诞生的.
首先开刀的就是 C#. 为什么要选择 C# 这个看起来似乎有点 "没落" 的技术呢? 这里我得感叹, 公司对个人的发展影响重大, 一个人的一生, 隐约的都在循着某条路线前进, 最终形成了你独特的个人人生. 你就职的公司是你人生轨迹的重要部分. 我在之前的公司担任产品职位, 因为做的是和 RFID 硬件相关的行业, 因此选择了 C#. 在产品研发过程中, 逐渐了解 C#. 之后我进入了一家外贸电商企业, 负责企业 ERP 的研发, 因为对操作便捷性的极致追求, 仍然采用了 C# 基于 Winform 进行开发, 这也使得我更深入的介入到研发中去. 在这期间, 为了攻克技术难题, 优化系统架构, 提高部门开发效率, 我花了大半年的业余时间, 把《C# 高级编程》啃下来了, 至今仍反复阅读, 从此也真正的重新进入了程序员的行列.
但从 0 开始何其之难, 因为基础太低. 为了尽快的达成目标, 我采用了 "跳远" 式的学习模式, 这种模式现在仍然采用, 那就是学习的新技术要和上一个技术要有相当程度的升级, 尽量避免同级别技术都去学习, 且要不断的学习技术和抛弃技术. 技术要跳跃式升级是因为学习时间有限, 而为什么要学习技术又要抛弃? 这是多余么? 我认为并不多余, 我非常认同一句话:"人生中你所走的每一步, 都是构成你人生的基石", 技术大厦的基石, 一定是要牢固的, 没有扎实的技术基础, 就去学新技术, 必然走火入魔 (产生大量的认知错误). 这也是为什么我看《C# 高级编程》的版本是第四版, 而不是第六版, 因为第四版基于. Net2.0, 那是一个技术基石, 我未来可以不用, 但不能不学.
因为公司的产品是基于 C# 和 WinForm, 因此我首先学精的就是它们了.
- 02
- C# 相关技术
- C#: 必须
- C# 本身就不用说了, 需要深度学习.
Linq: 必须
Linq 是个好东西, 我觉得如果 C# 没有 Linq, 那可能就索然无味了. 使用 Linq 可以大大的精简代码. 而 Linq 的技术链其实很长, 它是从委托, 匿名委托, lamda 表达式, 表达式树, 最后才有 Linq.
DI/IoC/AOP: 值得了解
我觉得深入理解这些概念, 对程序员来说很重要. 这可以让我们把架构做的非常优化, 也有利于我们更好的理解 ASP.NET mvc.
其中微软企业库 EntLib 我是详细了解过的, 受益匪浅, 但实际工作中没有用到, 因为技术已经过时了. 而对于 MEF 和 Spring.NET 有兴趣, 但没时间去了解.
Membership: 值得研究
对于网站的权限控制, 不管是 webform 还是 mvc, 微软都提供了自己的解决方案, 但在实际使用中, 企业的需求各异, 一般大家都是自己实现, 不会用 Membership. 但了解它, 从而了解微软的网站权限设计原理, 从而定制自己的权限控制架构, 是很有帮助的.
正则表达式: 值得研究
我觉得这东西非常有用, 但表达式太难记, 又用的少. 所以到现在为止, 还只停留在碰到问题就百度的业余水平.
EmitMapper: 必用
在. Net2.0 时代, 大家大量用 DataTable, 但它五年前甚至更早就应该被抛弃了, List 对象使用起来非常方便, 而映射工具使得将前端的数据映射到后端变得非常方便, 使用强类型编程变得非常有优势, DataTable 应该走入历史了. 除了 EmitMapper, 也有人用其他的比如 AutoMapper 等, 都可以.
Log4Net: 必用
对于一个完整的应用系统, 怎么能没有日志记录系统? Log4Net 已经非常强大, 没有必要自己去写一个.
ASP.NET WebForm: 未来会继续研究
我算是大致研究过 WebForm, 虽然没有用于实用, 但我始终保持一种想把它实用, 并进一步深入了解它的兴趣. 肯定有人会觉得, WebForm 已经过时了, 为什么还要研究它? 因为要打好技术大厦的基础, WebForm 可以说是一个非常经典的设计, 虽然已经过时, 但拿来把玩也是很好的.
ASP.NET Mvc: 正在使用
当前我的产品里, 在后端使用的就是 Mvc. 但我所使用的 Mvc 远远不是 ASP.NET mvc. 因为实际上只用了其中很少的一部分, 而完全抛弃了 Razor. 因为 Razor 也过时了, 现在流行的是前端开发, 后端只要简简单单, 就好.
.Net Core: 未来应该会使用
当前产品还不需要跨平台, 但我感觉未来可能会需要跨平台.
CodeSmith: 在用
为什么会使用 CodeSmith? 这是历史遗留问题, 因为当初公司使用的架构, 是博客园上的一篇文章推荐的基于 Repository 的经典架构, 那个架构下需要生成大量的类, Model,ViewModel,Access,Service 等, 所以需要代码生成工具, 就用上了 CodeSmith.
但随着我后来彻底抛弃了 Repository 架构, 架构越来越简单, CodeSmith 也用的越来越少, 现在只用于生成 ViewModel 类. 其实就生成 VM 这种简单的 POCO 类, 用 C# 直接写一个就行了, 但用习惯了 CodeSmith 不用白不用吧.
不知不觉已经写了 5 页了, 今天就到此为止, 下一次继续写完我的技能树.
觉得文章有意义的话, 请动动手指, 分享给朋友一起来共同学习进步.
来源: https://www.cnblogs.com/holyknight17/p/10234735.html