致所有.Net者和有梦想的朋友们 - 共勉

  这篇文章很早就想写的了,主要是人到了一定的年纪,就想唠叨一些看法,认不认可不重要,重要的是生活给予你的酸甜苦辣,你都想一吐为快。 这里主要基于多年来自己的一个行业感受和以及生活感想,唠叨一下工作以及生活。

  行业

  现状

  最近几年一直萦绕在我耳边和正在身边发生的事情,就是很多.Net的朋友们都纷纷往Java方向转。

  首先申明的是,本文并不是引战。作为社会的普通工作者,我们关心的大多数都是自己的生存利益问题,而这样最现实的的问题体现在市场中的行为是:同等级(title)水平的Java和.Net开发,Java的市面薪水是比.Net高的,而且尴尬的是,.Net的职位需求相对Java来说,可以说是少的可怜,而且非常大部分的高级职位(附带管理职能)都没有提到.Net背景,换言之,.Net在中国目前是没被多少公司认可的。

  这是一个非常可怕的循环,任何的东西的进化,都需要新鲜的血液和可持续的发展,没有市场和认可,导致新的血液少了,现存的资源还会流失殆尽,人少更会导致想招人都招不到,公司招人都是想尽快到职的,发放个职位几个月都没招到合适的,这种不可控的风险,会导致招人的公司会考虑转换语言来降低招人的风险。  

640?wx_fmt=png

    最尴尬的是,已经在微软的浸淫下有了点行业积累的中年人,是要怎么才能逃过市场的淘汰呢?毕竟这个行业是日新月异的一个发展速度,我们不但要面对目前市场的一个暗流现象,还可能要面对后续职业发展的一个断流风险。这并不是通过转换语言就能避免的,因为这是这个行业的特性,是所有中年人必须面对的一个魔障。各位朋友可以留言探讨一下这个中年人问题:)

  客观原因

  一直有注意到一些培训机构的动向,现在的培训方向都是Java,PHP,GO以及大数据方向,遥想好些年前,好多培训机构都没有对语言有过多挑剔,各种C#,Java,PHP,Python等语言真是百花齐放,给社会提供大量的初级人才(其实可以说是人力)。随着市场近十年的沉淀(其实可以说是各种语言的一个社区环境发展以及本身在适应互联网发展的一个进化),更多的公司都愿意使用成本更小的语言了,例如Java。 

  640?wx_fmt=jpeg

  这其实是无可厚非的,大部分的公司的生存之道本来就是靠快速出产品来占领市场份额。一个项目的开发周期是有限的,预算也是有限的,公司不可能花很多时间和金钱在造轮子上,也不想再次冒险摸着石头过河,别人已经踩过的坑,我们绕过去就是了,没必要引入重新踩坑和造轮子的风险,这恰恰是目前.Net这个生态环境暂时所不能给予的。这是很多.Net人都能看到的事实,没得辩解,这确实是Java具备的非常大的优势。

  微软没有稳稳抓住移动互联网的高速发展黄金期,这样的结果直接导致了.NET在手机端的应用基本上无市场,而这些移动应用的兴起使Java及Object C大热,此消彼长,进一步降低了.NET的市场占有度。  

  根本原因

  我承认有时候选择确实是比努力重要,毕竟方向对了,事半功倍,然而我觉得造成这样思想流传的一个根本原因是:我们还不够优秀!是的,我们还不够优秀,或者说很多人还没有找到通往优秀的一个途径。试想如果你是最好的或者是在最好的路上,你会为以上的这些问题烦恼吗?优秀的人会把关注点放在更好的提高自己,而不是一些客观的因素上。

  举个不太恰当的例子,现在网上很多人都给个美女图,然后问可以的话选当中的哪个,我知道很多人都会回答:小孩才选,当然全部都要!是的,当我们真的非常富有的话,这些都不是问题了。那么问题来了,我们足够优秀去做这些吗?

640?wx_fmt=jpeg

  我觉得我们所有的技术人员的重心应该是放在如何提高自己能力上面,毕竟打铁还需自身硬,特别是我们这个技术日新月异的行业状况,然而我们的一个实际情况是:大多数工作多年的程序员,大多数时间都在做重复的、没有提升性的工作。

  很多时候工作了许久年限的人的能力会比不上年限比不上自己的人的人,我相信很多人都注意到这种情况,究其原因,我个人总结一下主要有几点:

  1.  上面黑色粗体字。这是职业规划中最亟需改变的东西,尽量避免那些无法提升自己,也不能让你学到任何东西(包括软硬技能)的重复任务:因为它不会为你的职业增值,其他人也不会关心你所付出的努力。三年之后,如果你拿不出什么成绩,你只是一个熟练的操作工。

  2.  没找到学习方向。学习是需要目的和方向的,当工作中已经不能给予你更多的知识增长了,多关注一下社会的招聘和论坛中的大佬动向,多关注一下各种职位要求的软硬技能以及薪水对比,我相信你会找到自己想要努力的方向。

  3.  已经自我放弃或者根本没意识到需要提高。是的,人生中比较悲哀的两件事都说了,自我放弃和没发现自己需要变更的地方,一个是心已死,一个是自我满足,这时你需要的是身边的朋友的帮助了,让别人指出你的不足吧。

  4.  没有碰到刺激自己的事。人的这个惰性真的非常奇妙,不刺激自己,那你永远是不知道自己的潜能多大。举个例子,部门里所有你认为重要的人都涨薪了,就你没涨,而你自己觉得付出了很多却没被认可,然后主管给了些非常牵强的理由来安慰你,你能接受吗?我相信你会非常努力学习离开这样的公司,而且这个学习是非常有成效。再举个例子,你看到市面上招聘的职位,同样的要求能力水平开出的薪资比你目前高很多,你会不会受到刺激进而让自己去改变一些东西?

  说一句一直以来我觉得很对的话:真正的不失业是,今天你离开了这家公司,明天还能找到更好的公司。大家好好理解一下背后的含义吧。

  .Net Core的崛起

  潮水退了,我们才看得到究竟是谁在裸泳。在光腚了这么久之后,微软决定要扳回一城。

  说起来让人难以置信,.Net已有将近18年的历史了。第一版.Net 框架于2002年2月发布。多年来,.Net已成为Windows开发的基础,而且随着2014年.Net Core的发布和.Net 基金会的成立,.Net开始转向开源开发模型,旨在成为所有.Net开发的基础,Once Coding, Run Everywhere.

  微软和社区已经做了大量的工作,使.Net Core成为市场上具有竞争力的框架,帮助开发人员快速开发强大的应用程序。我们看一下下面的图片,看看.Net Core能做些什么。

640?wx_fmt=png

  用于现代微服务应用程序 

  .Net Core的设计本身就考虑了微服务,因此建立快速、低内存的JSON工具已完全可行。你无需依赖第三方库,因为你可以使用内置的JSON reader来构建自己的解析器。你还可以利用对UTF-8字符的支持,使用更紧凑的JSON编码器,与流行的库相比,它在速度上提高了30%-80%。

  有关微服务开发的另一个重大更新是对HTTP/2的支持。利用HTTP/2处理REST API可以提高客户端和服务器的安全性,还可以在开发过程中关闭加密功能,以简化使用Fiddler等底层工具的调试。TLS 1.3版本拥有更好的安全性,尽管在Windows和MacOS等客户端操作系统开始支持之前,还无法在桌面应用中享受到这些好处。如果在Linux上使用.Net Core 3.0微服务,并使用Cloudflare等服务来预防DDOS,那么就可以感受到其中的好处。

  个人态度   

  作为一个.Net、Java、C++、VB等语言都进行过项目开发的人来说,我对任何一门语言都没有宗教式狂热崇拜。那为什么我还是会一直告诉自己不要轻易转语言呢?

  虽然我上面承认语言是没有优劣性的,但不代表我会让自己的职业生涯轻易引入不确定性。首要的就是术业要有专攻,其次就如同做架构一样,不要轻易引入复杂度和不确定性,因为几个不确定性就可以让系统的风险成系数级别上升。我的经验告诉我:

  • Java最大的优点在于它的一个生态环境,然而.Net的生态环境正在改进,现在可以说是.Net最好的发展时期,随着NET Core开源时代和Java收费时代到来,.Net后续的发展还是值得期待的。

  • 转Java意味着放弃.Net的行业积累,意味着我们需要花更多的时间从Java的开源框架一步一步深入学习,这里面的学习成本如果花在.Net上,是否会更好呢?

  • 除非在内部转,而且要确保自己能待到足够长的年限把Java的开源框架补起来和应用起来,不然跳槽出去你面试的是.Net还是Java?两边都是半桶水,很尴尬。

   但是如果你是刚毕业或者工作不久的程序员,我还是会推荐你如果有机会从事Java的话,还是跟着社会的主流走吧,毕竟对很多人来说,生存才是第一位。

  生活

  这部分篇幅本来不应该在技术社区出现的,但想到工作生活不分家,不吐不快了 。生活这个词的意境太宽广了,很多人都以为自己在过着生活,其实他们只是按自己的方式活着而已。

  有多少人想过自己每天忙忙碌碌的是为了什么吗?为了金钱和名声?为了自己和家庭?还是为了所谓的理想?我们走的太快,以致于都忘了审视自己的灵魂。随波逐流,以致我们看不清自己真正想要的是什么。

640?wx_fmt=png

  生活?活着?

  我个人对现在的一个社会现状非常有感触,不知大家有没发现,很多从农村出来的孩子,都会怀念小时候那种很纯真的年代。各种各样的童年乐趣,已经被现代的电子设备所代替。

  小时候,快乐很简单,长大后才发现,简单才能快乐。

  有多少人记得自己在近一年内,有多少次能够放空自己然后轻松入睡的?有多少人能够脱离电子产品,把自己交付在人与人的自然交流中?有多少人,能够感受到真正的幸福感?这一切的一切,有没有人问过自己为什么?

  对于我们非常大部分的年轻人来说,越长大,我们担心的越多,我们焦虑的越多,开始担心生计,开始抓紧赚钱,开始为了面子活着,于是乎,年轻的时候就在一股脑没日没夜的忙碌中过去了,很多人都已经分不清生活以及工作的各自意义所在了。

  工作的目的是为了更好的生活,生活的目的却不是为了工作。然而我们为了活着,却忘了生活原来的样子。 

  我不定义生活的含义,但生活不应该是如此。

  活着的人

  以前跟很多朋友聚餐时,新的朋友都会问到行业,都会感叹说IT行业薪水高,我淡淡的笑着,那是拿健康在换哦。你看不见清晨才下班的IT人,看不见凌晨打不着车回去的IT人,看不见早早挤着公交带着黑眼圈的IT人,看不见年少却已经白/秃了头的IT人,只看到被平均下来的所谓高薪水。  

  记得刚工作的时候,碰到加班许久,同事就会用996,ICU来调侃一下。可悲的是,但是到了现在,这个调侃,已经是逃避不了的社会现状了,更让人痛心的是,时不时有猝死的案例发生,然而还是没有让社会有太多警戒。

  我发现不单是我们这个行业,好多的行业都是,忙碌的工作以及让我们忘了生活原本应该是一个什么的样子,让我们已经忘了生活和工作是一个什么样的关系。我们只是活着的人,疲于拼命,疲于去追求纸迷金醉的东西,但是这个代价是如此之大, 因为我们已经没法真切地感受生活的美好了。

640?wx_fmt=png

  获得与自己对话的机会

  我的经验是:静坐和暗示。

  当一个人在静坐时(或者躺着)不受打扰时,是最容易进入冥想状态的,这时暗示自己把全身的肌肉放松下来,一旦真正放松下来,人的心情就会很愉悦,这时你就能暗示自己感受生活的美好,暗示自己努力之后获得的回报,暗示自己要懂得变得睿智,积极的一切,都可以赋予此时的自己。

  每天给一点这样的时间给自己喘息,你会发现,生活就在你身边!愿每个人都找到生活,要知道每一天都是美好的一天。

640?wx_fmt=png

 

  如果本文引起了您的共鸣或是对生活的感叹,那么请您轻轻点个赞鼓励下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ReLU的起源

论文参考:Deep Sparse Rectifier Neural Networks 网页参考:http://www.mamicode.com/info-detail-873243.html 起源:传统激活函数、脑神经元激活频率研究、稀疏激活性 传统Sigmoid系激活函数 传统神经网络中最常用的两个激活函数&…

Asp.NET Core 轻松学-项目目录和文件作用介绍

前言上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令、Asp.Net Core MVC 项目文件目录等信息,通过对命令的学习和操作,对项目结构的认识,进一步理…

Dubbo 常见服务治理策略

1、Dubbo体系结构 2、Dubbo容错机制 Dubbo集群容错架构图 各节点关系: 这里的Invoker是Provider的一个可调用Service的抽象,Invoker封装了Provider地址及Service接口信息。Directory代表多个Invoker,可以把它看成List,但与Lis…

IT技术人员的35个特点,你占几个?

作者:zollty,资深程序员和架构师,私底下是个爱折腾的技术极客,架构师社区合伙人!1、价值观对生活的一般看法:追求简单,安定,可控制的生活,但对家庭生活的责任持消极态度草…

asp.net core 腾讯验证码的接入

asp.net core 腾讯验证码的接入Intro之前使用的验证码服务是用的极验验证,而且是比较旧的,好久之前接入的,而且验证码服务依赖 Session,有点不太灵活,后来发现腾讯也有验证码服务,而且支持小程序&#xff0…

ffmpeg加环境变量

转自:http://blog.csdn.net/leixiaohua1020/article/details/19016469 FFMPEG是命令行工具,因此使用起来多少还是会有些不方便。在这记录两点方便使用FFMPEG的方法: 1.任何目录下都可以使用FFMPEG 问题描述:需要转码(播…

.NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?

前言获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性。官方的解释:如果开发者拥有多个移动应用、网站应用、和公…

.NET LINQ分析AWS ELB日志避免996

前言小明是个单纯的 .NET开发,一天大哥叫住他,安排了一项任务:“小明,分析一下我们 超牛逼网站上个月的所有 AWS ELB流量日志,这些日志保存在 AWS S3上,你分析下,看哪个 API的响应时间中位数最长…

网络摄像头实时获取信息

转自&#xff1a;http://blog.csdn.net/yong_hen/article/details/42460387#quote 转自&#xff1a;http://blog.csdn.net/leo2007608/article/details/9885219 代码&#xff1a; openCV版本&#xff1a;2.4.10. 平台&#xff1a;win7 [cpp] view plaincopy #include <op…

[ASP.NET Core 3框架揭秘] 依赖注入:依赖注入模式

IoC主要体现了这样一种设计思想&#xff1a;通过将一组通用流程的控制权从应用转移到框架之中以实现对流程的复用&#xff0c;并按照“好莱坞法则”实现应用程序的代码与框架之间的交互。我们可以采用若干设计模式以不同的方式实现IoC&#xff0c;比如我们在前面介绍的模板方法…

微软100题第5题

转载自&#xff1a;http://blog.csdn.net/littlestream9527/article/details/8104731 http://blog.csdn.net/v_july_v/article/details/6370650 http://blog.csdn.net/insistgogo/article/details/7689297 下面&#xff0c;我试图用最清晰易懂&#xff0c;最易令人理解的思维…

北京Dotnet分享会 || 精英论坛第三期

编者按&#xff1a;没有一成不变的定律&#xff0c;没有长久不衰的流行&#xff0c;更没有一劳永逸的侥幸&#xff0c;只有自己刻苦努力、脚踏实地、兢兢业业的学习和工作&#xff0c;才会成为这个社会永远不会被淘汰的中流砥柱。一、昨夜西风凋碧树昨夜西风凋碧树&#xff0c;…

微软开源微服务运行时Dapr,赋能云原生应用开发

Dapr 是一个可移植的、由事件驱动的 Serverless 运行时&#xff0c;用于跨云和边缘构建分布式应用程序。10月9日&#xff0c;正式以 MIT 协议开源。Dapr 使开发人员能够轻松地构建弹性、无状态和有状态的微服务&#xff0c;让它们在云和边缘位置上运行&#xff0c;并包含了开发…

最大堆和最小堆

堆和栈的区别&#xff1a;一、堆栈空间分配区别&#xff1a;1、栈&#xff08;操作系统&#xff09;&#xff1a;由操作系统自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其操作方式类似于数据结构中的栈&#xff1b;2、堆&#xff08;操作系统&…

认知的高度 = 人生的高度

大家好&#xff0c;我是Z哥。我们每个人&#xff0c;每天要和很多不同的人打交道。我相信下面的场景每个程序员都有遇到过&#xff0c;业务方在某个模块下新提出了一个功能&#xff0c;但是你希望做新功能之前先把这个模块的低质量代码重构一下。但是&#xff0c;不管你怎么摆事…

VSCode开发.NETCore项目入门(1)设置中文语言环境

安装VSCode最新地址&#xff1a;https://code.visualstudio.com/&#xff0c;下载后安装即可配置语言环境打开安装好的VSCode软件&#xff0c;可以看到刚刚安装的VSCode软件默认使用的是英文语言环境&#xff0c;如下图&#xff1a;使用快捷键【CtrlShiftP】来配置&#xff0c;…

微软100题第11题

参照&#xff1a;http://blog.csdn.net/caryaliu/article/details/8107089 参照&#xff1a;http://blog.csdn.net/lalor/article/details/7626678 把二叉树看成一个图&#xff0c;父子节点之间的连线看成是双向的&#xff0c;我们姑且定义"距离"为两个节点之间的个…

.NET Core 3.0】框架之十三 || 部署攻略

本文有配套视频&#xff1a;https://www.bilibili.com/video/av58096866/?p9一、部署1、WIN_独立部署感谢群里&#xff08;白云&#xff09;小伙伴&#xff0c;博主 小淋科技 提出的方案(需要 netcore2.1 )&#xff0c;我竟然忽略了&#xff0c;该打该打&#xff0c;官档都读…

Python import以及os模块

转自&#xff1a;http://jianpx.iteye.com/blog/486466 http://blog.chinaunix.net/uid-27838438-id-4087978.html Import: 1. import 实际上是python虚拟机把当前的globals()和locals()传进__builtins__.__import__内置函数了&#xff0c;所以实际上干活的是那个__import__函…

.Net Core3.0 配置Configuration

准备.NET core和.NET项目配置上有了很大的改变&#xff0c;支持的也更加丰富了比如命令行&#xff0c;环境变量&#xff0c;内存中.NET对象&#xff0c;设置文件等等。.NET项目我们常常把配置信息放到webConfig 或者appConfig中。配置相关的源码https://github.com/aspnet/Exte…