致所有.Net者和有梦想的朋友们 - 共勉
这篇文章很早就想写的了,主要是人到了一定的年纪,就想唠叨一些看法,认不认可不重要,重要的是生活给予你的酸甜苦辣,你都想一吐为快。 这里主要基于多年来自己的一个行业感受和以及生活感想,唠叨一下工作以及生活。
行业
现状
最近几年一直萦绕在我耳边和正在身边发生的事情,就是很多.Net的朋友们都纷纷往Java方向转。
首先申明的是,本文并不是引战。作为社会的普通工作者,我们关心的大多数都是自己的生存利益问题,而这样最现实的的问题体现在市场中的行为是:同等级(title)水平的Java和.Net开发,Java的市面薪水是比.Net高的,而且尴尬的是,.Net的职位需求相对Java来说,可以说是少的可怜,而且非常大部分的高级职位(附带管理职能)都没有提到.Net背景,换言之,.Net在中国目前是没被多少公司认可的。
这是一个非常可怕的循环,任何的东西的进化,都需要新鲜的血液和可持续的发展,没有市场和认可,导致新的血液少了,现存的资源还会流失殆尽,人少更会导致想招人都招不到,公司招人都是想尽快到职的,发放个职位几个月都没招到合适的,这种不可控的风险,会导致招人的公司会考虑转换语言来降低招人的风险。
最尴尬的是,已经在微软的浸淫下有了点行业积累的中年人,是要怎么才能逃过市场的淘汰呢?毕竟这个行业是日新月异的一个发展速度,我们不但要面对目前市场的一个暗流现象,还可能要面对后续职业发展的一个断流风险。这并不是通过转换语言就能避免的,因为这是这个行业的特性,是所有中年人必须面对的一个魔障。
客观原因
一直有注意到一些培训机构的动向,现在的培训方向都是Java,PHP,GO以及大数据方向,遥想好些年前,好多培训机构都没有对语言有过多挑剔,各种C#,Java,PHP,Python等语言真是百花齐放,给社会提供大量的初级人才(其实可以说是人力)。随着市场近十年的沉淀(其实可以说是各种语言的一个社区环境发展以及本身在适应互联网发展的一个进化),更多的公司都愿意使用成本更小的语言了,例如Java。
这其实是无可厚非的,大部分的公司的生存之道本来就是靠快速出产品来占领市场份额。一个项目的开发周期是有限的,预算也是有限的,公司不可能花很多时间和金钱在造轮子上,也不想再次冒险摸着石头过河,别人已经踩过的坑,我们绕过去就是了,没必要引入重新踩坑和造轮子的风险,这恰恰是目前.Net这个生态环境暂时所不能给予的。这是很多.Net人都能看到的事实,没得辩解,这确实是Java具备的非常大的优势。
微软没有稳稳抓住移动互联网的高速发展黄金期,这样的结果直接导致了.NET在手机端的应用基本上无市场,而这些移动应用的兴起使Java及Object C大热,此消彼长,进一步降低了.NET的市场占有度。
根本原因
我承认有时候选择确实是比努力重要,毕竟方向对了,事半功倍,然而我觉得造成这样思想流传的一个根本原因是:我们还不够优秀! 是的,我们还不够优秀,或者说很多人还没有找到通往优秀的一个途径。试想如果你是最好的或者是在最好的路上,你会为以上的这些问题烦恼吗?优秀的人会把关注点放在更好的提高自己,而不是一些客观的因素上。
举个不太恰当的例子,现在网上很多人都给个美女图,然后问可以的话选当中的哪个,我知道很多人都会回答:小孩才选,当然全部都要!是的,当我们真的非常富有的话,这些都不是问题了。那么问题来了,我们足够优秀去做这些吗?
我觉得我们所有的技术人员的重心应该是放在如何提高自己能力上面,毕竟打铁还需自身硬,特别是我们这个技术日新月异的行业状况,然而我们的一个实际情况是:大多数工作多年的程序员,大多数时间都在做重复的、没有提升性的工作。
很多时候工作了许久年限的人的能力会比不上年限比不上自己的人的人,我相信很多人都注意到这种情况,究其原因,我个人总结一下主要有几点:
- 上面黑色粗体字。这是职业规划中最亟需改变的东西,尽量避免那些无法提升自己,也不能让你学到任何东西(包括软硬技能)的重复任务:因为它不会为你的职业增值,其他人也不会关心你所付出的努力。三年之后,如果你拿不出什么成绩,你只是一个熟练的操作工。
- 没找到学习方向。学习是需要目的和方向的,当工作中已经不能给予你更多的知识增长了,多关注一下社会的招聘和论坛中的大佬动向,多关注一下各种职位要求的软硬技能以及薪水对比,我相信你会找到自己想要努力的方向。
- 已经自我放弃或者根本没意识到需要提高。是的,人生中比较悲哀的两件事都说了,自我放弃和没发现自己需要变更的地方,一个是心已死,一个是自我满足,这时你需要的是身边的朋友的帮助了,让别人指出你的不足吧。
- 没有碰到刺激自己的事。人的这个惰性真的非常奇妙,不刺激自己,那你永远是不知道自己的潜能多大。举个例子,部门里所有你认为重要的人都涨薪了,就你没涨,而你自己觉得付出了很多却没被认可,然后主管给了些非常牵强的理由来安慰你,你能接受吗?我相信你会非常努力学习离开这样的公司,而且这个学习是非常有成效。再举个例子,你看到市面上招聘的职位,同样的要求能力水平开出的薪资比你目前高很多,你会不会受到刺激进而让自己去改变一些东西?
说一句一直以来我觉得很对的话:真正的不失业是,今天你离开了这家公司,明天还能找到更好的公司。大家好好理解一下背后的含义吧。
.Net Core的崛起
潮水退了,我们才看得到究竟是谁在裸泳。在光腚了这么久之后,微软决定要扳回一城。
说起来让人难以置信,.Net已有将近18年的历史了。第一版.Net 框架于2002年2月发布。多年来,.Net已成为Windows开发的基础,而且随着2014年.Net Core的发布和.Net 基金会的成立,.Net开始转向开源开发模型,旨在成为所有.Net开发的基础,Once Coding, Run Everywhere.
微软和社区已经做了大量的工作,使.Net Core成为市场上具有竞争力的框架,帮助开发人员快速开发强大的应用程序。我们看一下下面的图片,看看.Net Core能做些什么。
用于现代微服务应用程序
.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的话,还是跟着社会的主流走吧,毕竟对很多人来说,生存才是第一位。
生活
这部分篇幅本来不应该在技术社区出现的,但想到工作生活不分家,不吐不快了 。生活这个词的意境太宽广了,很多人都以为自己在过着生活,其实他们只是按自己的方式活着而已。
有多少人想过自己每天忙忙碌碌的是为了什么吗?为了金钱和名声?为了自己和家庭?还是为了所谓的理想?我们走的太快,以致于都忘了审视自己的灵魂。随波逐流,以致我们看不清自己真正想要的是什么。
生活?活着?
我个人对现在的一个社会现状非常有感触,不知大家有没发现,很多从农村出来的孩子,都会怀念小时候那种很纯真的年代。各种各样的童年乐趣,已经被现代的电子设备所代替。
小时候,快乐很简单,长大后才发现,简单才能快乐。
有多少人记得自己在近一年内,有多少次能够放空自己然后轻松入睡的?有多少人能够脱离电子产品,把自己交付在人与人的自然交流中?有多少人,能够感受到真正的幸福感?这一切的一切,有没有人问过自己为什么?
对于我们非常大部分的年轻人来说,越长大,我们担心的越多,我们焦虑的越多,开始担心生计,开始抓紧赚钱,开始为了面子活着,于是乎,年轻的时候就在一股脑没日没夜的忙碌中过去了,很多人都已经分不清生活以及工作的各自意义所在了。
工作的目的是为了更好的生活,生活的目的却不是为了工作。然而我们为了活着,却忘了生活原来的样子。
我不定义生活的含义,但生活不应该是如此。
活着的人
以前跟很多朋友聚餐时,新的朋友都会问到行业,都会感叹说IT行业薪水高,我淡淡的笑着,那是拿健康在换哦。你看不见清晨才下班的IT人,看不见凌晨打不着车回去的IT人,看不见早早挤着公交带着黑眼圈的IT人,看不见年少却已经白/秃了头的IT人,只看到被平均下来的所谓高薪水。
记得刚工作的时候,碰到加班许久,同事就会用996,ICU来调侃一下。可悲的是,但是到了现在,这个调侃,已经是逃避不了的社会现状了,更让人痛心的是,时不时有猝死的案例发生,然而还是没有让社会有太多警戒。
我发现不单是我们这个行业,好多的行业都是,忙碌的工作以及让我们忘了生活原本应该是一个什么的样子,让我们已经忘了生活和工作是一个什么样的关系。我们只是活着的人,疲于拼命,疲于去追求纸迷金醉的东西,但是这个代价是如此之大, 因为我们已经没法真切地感受生活的美好了。
获得与自己对话的机会
我的经验是:静坐和暗示。
当一个人在静坐时(或者躺着)不受打扰时,是最容易进入冥想状态的,这时暗示自己把全身的肌肉放松下来,一旦真正放松下来,人的心情就会很愉悦,这时你就能暗示自己感受生活的美好,暗示自己努力之后获得的回报,暗示自己要懂得变得睿智,积极的一切,都可以赋予此时的自己。
每天给一点这样的时间给自己喘息,你会发现,生活就在你身边!愿每个人都找到生活,要知道每一天都是美好的一天。
如果本文引起了您的共鸣或是对生活的感叹,那么请您轻轻点个赞鼓励下。
致所有.Net者和有梦想的朋友们 - 共勉的更多相关文章
- 关于ACM,关于CSU
原文地址:http://tieba.baidu.com/p/2432943599 前言: 即将进入研二,ACM的事情也渐渐远去,记忆终将模糊,但那段奋斗永远让人热血沸腾.开个贴讲讲ACM与中南的故事, ...
- 物联网操作系统HelloX V1.79发布公告
经过HelloX开发团队近半年的努力,在HelloX V1.78版本基础上,增加许多功能特性,并对V1.78版本的一些特性进行了进一步优化之后,正式形成HelloX V1.79测试版本.经相对充分的测 ...
- 【Life】 Never Too Late, Just Do it Better!
开这个博客: 一来是认为自己记忆力不好,对所学的东西做个记录: 二来是希望找到很多其它志同道合的人.一起交流进步: 不论什么时候開始努力都不晚! 希望平淡的工作生活不要磨灭我们心中的梦想,与君共勉~
- shoppping collection
personal shopping collections shop Table of Contents 1. phone network 2. band share 3. Motorcycle He ...
- 剑指阿里P6,25岁小伙怒斩三面,喜提offer(Java研发岗)
本文提供者:洎扰の庸人 微信公众号:慕容千语的架构笔记.欢迎关注一起进步. 进阿里一直都是身为程序员的我,最初的梦想,经过去年面试蚂蚁金服失败的挫折后,今年再次鼓起勇气投简历,经过一位前辈的内推省了很 ...
- “但行好事 莫问前程 只问耕耘 不问收获 成功不必在我 而功力必不唐捐” 科技袁人·年终盛典——5G是科技时代非常重要的基础设施
中国的科技实力:用数据对比展示当前中国整体科技实力在国际中的发展水平和未来的发展趋势. 主要分为基础研究和应用研究.其中基础研究通过论文数据进行对比展示,应用研究通过发明专利数据. 又分别结合当今中国 ...
- 《Python机器学习及实践:从零开始通往Kaggle竞赛之路》
<Python 机器学习及实践–从零开始通往kaggle竞赛之路>很基础 主要介绍了Scikit-learn,顺带介绍了pandas.numpy.matplotlib.scipy. 本书代 ...
- php程序员经验
PHP 学习计划流程2008-10-22 17:23PHP 学习计划流程1.看教程 (2-3月)大概1天1个章节,比如<PHP圣经>有32章,1个多月就看完了,当然后面的章节每章1天肯定看 ...
- 成 功 的 背 后 !( 致给所有IT人员)
转载了这篇文章,希望能对自己和看到这篇博客的人有所激励. 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走向成功的普通人. ------------------- ...
随机推荐
- 为什么你应该学习Go语言?
终于等到你!Go语言--让你用写Python代码的开发效率编写C语言代码. 为什么互联网世界需要Go语言 世界上已经有太多太多的编程语言了,为什么又出来一个Go语言? 硬件限制:摩尔定律已然失效 摩尔 ...
- Hive bucket表
Hive 桶 对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是 针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余 ...
- Python网络爬虫实战(四)模拟登录
对于一个网站的首页来说,它可能需要你进行登录,比如知乎,同一个URL下,你登录与未登录当然在右上角个人信息那里是不一样的. (登录过) (未登录) 那么你在用爬虫爬取的时候获得的页面究竟是哪个呢? 肯 ...
- Fragment的创建与通信
由于这里涉及到接口回调的问题,所以先来看一看什么是接口回调: 这就好比老板和员工的微妙关系,老板需要员工去工作,员工挣钱了以后还要告诉老板自己挣了多少钱,然后由老板来处理这些钱. 首先创建一个接口: ...
- django配置静态文件的两种方法
方法一:按照django配置静态文件的方法,可以在APP应用目录下创建一个static的文件夹,然后在static文件夹下创建一个和APP同名的文件夹,如我有一个blog的django项目,在下面有一 ...
- spring中基于注解使用ehcache
继续上篇,这篇介绍服务层缓存,基于注解的方式使用ehcache 注解的标签主要有4个:@Cacheable.@CacheEvict.@CachePut.@Caching,他们的用法是: @Cachea ...
- java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200.
报错信息 java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please ...
- Eclipse中Spring Boot响应jsp的简单demo
首先在Eclipse里新建一个maven工程,这里的打包类型和父包如果后续再去pom中添加也可以 此时的工程路径是这样的 接下来去到pom中添加相关的依赖,如果有报错maven update一下即可 ...
- vscode Springboot 启动debug报错:Build failed, do you want to continue?
一,前言 vscode我感觉是一个特别好用的开发工具,我根据文章https://www.cnblogs.com/WangBoBlog/p/9464281.html去搭建一个简单的springboot工 ...
- 给idea设置默认使用的maven配置
一,前言 大家都知道,java开发中最经常使用的开发工具是Maven,最近看新同事在使用idea,我也下载了一个,准备尝试一下. 而maven是非诚方便进行工程管理的,至少管理jar包,是非常方便的, ...