摊牌了,.NET开发者,准备赋能未来
Hi,这里是桑小榆。一名 .NET 开发,从 19 年毕业至今一直从事相关技术已近 4 年。
发展至今,很有必要分享分享我的经历以及对于 .NET 开发的看法和见解。
篇幅有些长,无论你是学生,职业人, .NET 开发者还是其他语言开发者,都请你能够读到末尾,或许将赋能于你。
你是 .NET 开发?
老读者可能会发现,我是第一次对外讲是 .NET 开发者,以往的文章中讲解的技术案例使用的 C# 语言,不仔细看都不知道作者是一名 .NET 开发者。
所谓事出必有因。我在毕业前实习那会,自觉所掌握的技术很弱,直接称呼菜鸟。
在第一家公司实习的时候,做的是 ASP.NET 开发,那时候给甲方客户做OA,做官网和审批系统。
这类项目使用的 ASP.NET 框架技术是非常繁杂的,而且公司流动性也非常大,也大多是一些新人开发的东西,很难具备可读性和继承性。
所以使用起来非常头疼,业务代码和界面代码揉搓在一起,各个同事也是非常繁忙也没多少时间给你一一查找和排除。虽然凭借自己的毅力撑了下来,也掌握了 ASP.NET 框架开发技术。
尽管如此,我还是非常讨厌 ASP.NET 。虽然开发东西非常快,接一个项目直接一套就基本上完成了,但是接的系统越来越庞大,里面的业务逻辑越来越臃肿,没有人愿意花时间重构或者制定一套跟紧时代的开发。
导致维护起来简直令人头大,虽然参与其中,我明知自己没有能力重构系统和制定标准流程的能力,被迫往 “shit mountain” 里叠加 “shit code” 。无论你是否追求优雅的代码,在那里都变成了 “shit code” 。
我很难想象这是人的复杂还是人的逻辑混乱造成的结果。
因为 .NET 在之前是非常火的,也是很容易入手的一门技术,这也造就了功利性往这方面靠,一进来就出不去了,他们只能继续使用 ASP.NET ,并没有精力深入下去了,更没有精力去学别的语言,比如 JAVA ,Python。
所以彼时还是很抗拒说是一名 .NET 开发,因为不自觉想到界面样式和业务逻辑混合在一起的场景,觉得不符合一名程序员。
毕竟我也时常阅读开发者相关的文章,以及阅读别人的代码,当然 JAVA 也能看懂,学校里有学,也会在业务对接阅读别人写的代码,以及github里阅读到优美的代码。
我曾因为阅读到别人精悍而优美的代码而喜悦一晚上,并立志成为一名优雅的代码选手。
19 年毕业之后,也就是实习结束,当前这家公司因为主要做的是政府,各大机构的官网,OA 等。因此转行 JAVA 开发,配合linux服务器部署,迎合政策以及市场。
也迎来了作为开发者的思考,是否要跟着转 JAVA ?
虽然在16年 .NET Core 就诞生了,但是处于不温不火,也没多少企业去碰它。到了 19年那时候的 .NET Core 开源社区已经开始有所行动,不断冲击市场和影响开发者,下半年在上海举办了首场线下大会,而我也参与其中,要是没受影响那是假的。
在职场里,转前端,转 JAVA ,转Go 似乎成为了.net开发者见面就会聊的话题。
对于我而言,本身技术掌握并不精湛,当时我在想,我连 .NET 都搞不定,何以谈 JAVA ?
在这样的内心驱使之下,我选择继续做 .NET 开发,并且离开了东家。
谁说 .NET 入门容易学起来不难?
2020 年,我开始了 .NET Core 职业旅程,为什么说是职业旅程,是因为之前仅限于理论上了解并且自行实践 demo,并没有进入商业生产化。
在加入新东家开始做.net之后,我也接触到了.netcore带来的惊喜,每天都在玩转 .NET Core ,把 linux+docker部署,jekins+octopus 自动化部署,swagger+restfulapi,以及自身带来的依赖注入,日志体系,控制台式开发, nuget 打包,授权体系,微服务等等通通玩了个遍。
甚至各大组件也是很好的融合,并且我还体验了完全通过 vs code 来开发 .NET Core ,别提有多舒服。
可以说语法上要多优雅就可以多优雅,我并不是在吹,而是在谈恋爱。
尽管在编程上高了几阶段,但是过程还是因为经验问题在面对业务上有些吃力,但是整体的体验是非常棒的。
看我说到这里,你脑袋里肯定会浮现出 .NET 在国内的 HC 的问题。
.NET 在国内的岗位确实不如其他热门语言,毕竟几年的落后,也因服务器的问题导致大面积滞后,不可否认失去了很多先机。
作为一名开发者,除去自身的coding热爱,那一定是为了谋生,人人都想追求高薪,良好的办公环境以及含佬率。
毕竟,总要回归到一个哲学问题:“一行代码究竟为何而生”。
很显然,对于自身的定位我很清晰,我的代码至少在这年纪里是为老板而生。
这一家的新东家虽然技术上是前沿的,但终究无法为开发者提供更大更甜的蛋糕。
我每年都会去市场上考察自己的技术以及能力。说到面试,你肯定听过不少 JAVA 开发者深入底层源码,JDK ,链表,集合,排序等等,更有甚者出现手写红黑二叉树,吊打面试官系列云云。
一比较之下, .NET 面试都是浅显的内容,是吧?以前确实是,不过那时候我还是学生并不是很了解,但是最近几年绝对不是的。也开始深入源码,数据库优化,各种集合优劣势,设计模式等等。
如果你还没接触到,那就是还没进入到该环节。
就如21年的时候,我首先通过 .NET 开发大会上认识的肖老师举荐到校宝在线面试。
很遗憾,校宝的面试官面的内容很全面并且由浅入深,但我没能很好地解答出来,很遗憾错过了机会。
这场面试里,我很清晰认识对于一些技术只是浅尝辄止,并没有深入了解原理和阅读源码,去了解 .NET Core 技术。
于是我认识到了自身的不足,决定好好深究技术。把 .NET Core 底层原理统统去学一遍,把设计模式搞懂并根据现有业务结合起来,相关的授权认证也就是 Oauth2.0,Identityservice 掌握,数据库优化,网络原理等等,这些相关内容我都有在我的公众号和博客有发表,只有学会用自己的语言描述以及动手实践才能真正掌握。
在此期间我也面试了边锋网络,很庆幸面试我的主管也是一名 .NET 开发热爱者,和我谈论的 .NET Core 技术,微服务,授权认证以及分析netcore市场变化等等令我印象深刻,至今也记得他。
他以前在博客园独当一面负责项目,把 .NET 技术玩了个遍,后面加入了一家医疗公司也玩转了 .NET Core 技术,最后加入了边锋网络做 .NET 开发,已经是.net开发部门的主管。
只是,边锋大量业务转为 JAVA 技术开发, .NET 业务逐渐被替换,主管凭借自身的力量做了一份技术迁移方案,就是由 .NET Framework迁移到 .NET Core 技术。
不过,由于人力物力以及市场的不可控因素,最终没有被采纳,选择了 JAVA 技术替代。
最后,他的部门基本上被裁完,只剩两三个人。
既然大量裁员,为啥还要把我招进去呢?
因为边锋内部的 .NET 开发者大量跑路,需要有人来维护老系统。
二面的总监是 JAVA 开发者,考查我的基本上是算法,最终他们录用了我,给我开出了诱人的薪资。
当我决定要来并通知了主管之后,他把内部信息告诉了我。没有内编,项目周期结束便会被裁掉,而且染上外包的性质简历就会拉胯。
这里有几番观点对峙,不便多讲,最终我采纳了他的建议,拒绝任职。
事实证明, .NET 开发者对 .NET 开发者是非常友好且惜才的,如果此次我去了,那我不到半年就会被裁掉,并且简历拉胯一半,至今我对他还是感谢的。
22 年上半年我还联系了他,他对于.NET Core 技术的热爱是没的话说,但是由于市场的原因最终继续在边锋网络工作并转成 Golang 开发。
这也是很多人血的经历建议新人不要去外包,不是说外包不好,外包也有大佬是不可否认。
但是市场上对于外包就是很抵触,市场上风气也不好,大体能够知道进入外包的都是哪些人群。
国内市场上一半以上对于开发者的贬值,不尊重,就是大量外包扩张导致,企业降低成本采用外包,其中就是有你们为了一时的诱人薪资加入他们,成为蓝牌,红牌,绿牌区别。
蝴蝶效应,好好细品。
以前我对外包并没有啥认识,觉得只要工资高工作差不多得了,“钱多就去”这句话可能会有很多人误导你判断,导致一不留神就加入了外包。
就举个简单的例子,我认识的几家企业的面试官,他们在决定候选人是否入职之后,有一个环节就是搜索简历里的公司是否外包,作为当事人听着有些打颤,但就是这样。
所以有时候面试良好也进不去,这个几率也包含在里面。
规则由金字塔顶端的人决定,我们只能遵守规则并通过一定条件利用规则。
我的建议就是,无论你是新人也好,入门也好,开发2-3年也好,如果你们对于行业存在疑惑和飘摇不定,一定记得咨询当前行业走在顶端的大佬,一定要保持学习,冲顶。
他们能够走在前沿一定有自身的硬实力和眼光,市场的供求关系不可能出现弱联系。
不然随便在一个群里咨询,总是有一群看山是山充满戾气建议这建议那,他们对于自身无力改变的东西,很喜欢指点别人的路线。
这里我会有让你们联系 .NET 开发们走在前面的大佬认识的机会,请你一定要看到末尾。
你在跟着谁跑?
在2022年的时候,其实我已经有些动摇了并且已经在系统性学习前端技术了。
飘摇不定的时候,我选择咨询了.net社区引领者之一,微软mvp的张队,他告诉我 .NET 能做的东西多,基本属于全能技术栈,要学的东西自然是非常广,学的东西广度和深度要搭配。
至于市场,市场影响我认为是暂时的。
他的建议非常中肯,纵观 .NET 开发走在前面的大佬,他们总是充满了坚定信念,做自己认为值得做的事情。
所以我自身沉下心来,继续做自己认为有价值的事情。在空闲的时候,我依然会翻 github,在 B 站学习相关源码,同时也会在《中国大学》学习操作系统,网络原理等等。作为程序员,《中国大学》里资源好又多,不利用真是可惜。
至今学了操作系统,我都觉得控制台输出一句 “hello world” 不简单,上至字节码表现,下至操作系统指令运转,资源调度,妙不可言。这不是卷,而是程序员应该有的知识和素质。
有的人,真的只是停留在输出 “hello world”。
就在今年,大环境就业严峻,大家都有感受。而我还是选择了裸辞,这些内容也有在公众号发表过,建议可以多参考。
就在我国庆回家,结束之后,我选择了去面试深圳和杭州的岗位,其中有几场面试是我非常享受的。
他们不会问你语言语法内容,问的都是计算机网络,面向对象思维,设计模式,数据库优化等等。看吧,最重要的还是计算机知识底子,所以一定要打好基础,不要花里胡哨搞这个那个。
花了10天左右,我就已经拿到了几份 offer,其中有一份是做证券,金融行业的企业,也是.NET Core 技术。
很市侩的我选择了包吃住薪资尚可的车企,目前已经超越了同批次不少的小伙伴了。
是的,我的代码更多还是为了老板而生。
当我进入发现回到了原点,做回了.NET Framework 之后,当然非常痛苦,甚至有逃避的心理。
摆烂的时候,在群里咨询了线下大会认识的那群大佬。大佬们的建议是改成.NET Core 技术就好。
虽然很容易想到的方案,但是本能的痛苦逃避是顾不了那么多。被醍醐灌顶之后我仿佛又多了一项使命,重新建立公司的架构体系。
我也了解同事们大多想做新技术,只是缺乏契机又或者是引领的人。
那么,我已经逐渐开始搭建生产框架了。
开发者们,我们的使命应该如此,将自己的技术赋能所到之处。这就是意义所在。
我的代码也开始为我而生。
我也自发组织架构师群,分析师群组织大家进行学习和考试。
很有意思的是,里面也有大学学生参与,他们对于就业总是充满选择困难,总是会抛出:选 JAVA 好还是前端好,又或者是 .NET ?
当人们看到.net,潜意识里就是没有前途,没有市场,而且还不能跨平台。
也看到有伙伴推从 .NET 开发,直接被怒怼是何居心。
对此,他们对于 .NET 的认知和他们的技术一样,停留在以前。
是很难与其争论的。
我的建议还是前面的建议,勿要在一群不在山顶的人指引你左右。
赋能开发者
到了这里,你或许开始斟酌于自身的定位和方向。
而我此次,将是赋能你做决策的能力,认识更多大佬的机会,同时对于技术的走向和风口更加清晰的认识和实时追踪。
到目前为止,2022 年的 .NET Conf 开发者大会已经是第四届了,里面更有豪华阵容:龙芯团队、张善友、苏震巍、肖伟宇、衣明志、杨舜宇,周国庆等,更有资深架构师,高级开发者,独立开发者,各大领域的佼佼者,以及你的学长学姐们。
那么,在大会上你能 get 到什么?
显然,在大会上,你能和他们近距离互动,吸收他们一路走在领域前沿经验分享以及精湛技术的见解。
也能和他们交友, .NET 开发者们一向友好,且惜才。不仅能解决你的迷惑,更能赋予你做更加有利于自己职业的决策能力。务必要积极加他们的联系方式,更有助于你个人问题和领域的探讨呢。
更有各大企业领导人的参与以及岗位招聘,智能之士思得明企,不是吗?
同时,本次大会的主题更多涵盖低代码、云原生、工业互联网、AI,开源项目等领域。
2022 年了这些热门领域都不会不知道吧?
另外,工业互联网,数字化经济转型也是国家未来着重的方向,我希望想要弯道超车的开发者们做好自身知识储备,抓好风向口。
因此,无论你是学生,职业人, .NET 开发者还是其他语言开发者。在此都希望打开你们的心门,去接触更多精彩的领域,认识各个智慧结晶的产物,同时早做准备,抓好风向口,跟着站在山顶上的人跑。
当然,此次的重点。是举办的2022届 .NET Conf 开发者大会,2022年12月3日~4日,于上海举办。
为回馈读者和开发者们,我将给定限定名额,免费线下参与大会,认识各大佬的机会。
请通过以下链接报名:http://hdxu.cn/Gt5h2
操作步骤为:
1.点开链接,点击【我要报名】
2. 先点击【使用优惠或邀请码】并输入;
3. 兑换成功,参会票价变为0后 ,再进行购买。
备注:【使用优惠或邀请码】需要加作者 WeChat 告知:sangxiaoyuya
这里是桑小榆,不会决定你左右,但是会赋予你做决策的能力,名额有限,速来勿虑!