为什么程序员?

现在的年轻人都选择当程序员,主要有几方面的原因:1.程序员薪水高,吸引了很多年轻人。2.市场需求旺盛,程序员很好找工作。3.程序员职业发展前景好,受到了很多年轻人青睐。随着科技的不断进步,人们越来越无法离开互联网,虽然程序员工作非常累,但是高额的薪水让很多年轻人心动不已,不少年轻人在选择职业发展方向的时候,都把程序员当成首选。越来越多的年轻人进入了数字世界,成为建设互联网的程序员。一、程序员薪水高,吸引了众多年轻人。很多年轻人进入职场找工作,首先考虑的就是薪水,工作赚的钱要能填饱肚子还要帮助年轻人在城市里面立足,因此高薪的程序员一下子吸引了众多年轻人的目光。当众多大学毕业生的薪水只有几千块钱的时候,程序员的平均月薪已经高达两万,超过了众多其他行业的从业者。二、市场对程序员需求旺盛,程序员很好找工作。随着互联网时代的到来,各行各业都无法离开网络,市场上对程序员的需求非常旺盛,甚至很多岗位打出了高薪聘用程序员的条件。在很多大学生考虑怎么找工作的时候,很多优秀程序员已经被各大公司瓜分,不需要担心自己找不到工作,而且程序员跳槽十分方便,很容易找到适合的工作。三、程序员发展前景更好,受到很多年轻人青睐。随着科技的发展,大数据、人工智能等方面得到了很好的发展空间,程序员也成为了不可或缺的人员,未来科技的发展注定离不开程序员,因此程序员的职场发展空间会越来越大,不需要担心会出现行业萎缩,因此程序员受到了很多年轻人青睐。年轻人选择当程序员是为了高薪,为了自己能够有更好的职场发展。大家对此有什么其他看法,欢迎留言讨论。
从懵懂无知,到步入一名程序员,其实并不是自主选择,而且社会地位使然。我们身处这个社会,底层的人很难有很多选择的。家里父母基本小学学历,他们更不知道有哪些专业,最多的是叫你考编制,进体制,拿个他们认为的铁饭碗。你又是刚刚要进入大学的高中生,又知道什么专业呢,能做的是听一听老师说的最多的好就业的专业。有多少工作是你没见过你没听过的,商业秘密有多,你都无从下手,选个程序员,至少在北上广深能够有个好工资水平。
这是一个挺有意思的话题。码农,甚至码畜这些词,这些年经常看到或听到,但其实更多是程序员这个群体的幽默自嘲,其实从这些自嘲,我们可以窥见这个群体本质上其实是有一颗不甘于现状,想努力摆脱纯粹的码农、码畜身份的美好愿望。但当理想照进现实,我们会看到,国内程序员这个群体的生存环境其实是非常恶劣的,尤其是前些年随着互联网行业的高速发展,带来的是各个互联网公司对产品快速迭代快速上线的极度追求。因此,互联网公司的这些程序员,在这样的环境下,基本都沦为了快速满足产品需求的工具人,首先从工具人这个名称,就可以看出,程序员处于大部分互联网公司的岗位食物链的底端,基本没有啥话语权和自主权(极少数技术驱动的公司除外)。什么叫没话语权和自主权?比如,老板拍脑袋抛出一个想法,随口问技术负责人:这个要多久能够上线?作为技术负责人,基于老板零星的几句话,可能就得随口回答一个脑补的上线时间点,完了老板可能还得来一句:这个要这么久吗?也不复杂啊,提前点可以吗?
再比如,大部分情况下,需求的讨论不需要技术相关leadr或架构师的参与,产品负责人负责需求文档的输出,技术人员的责任就是在规定时间内通过需求评审,并带着巨大的疑问进入开发,是的,你没看错,是进入开发,大部分情况下可能是没有设计阶段的,因为时间太紧,来不及设计,边开发边边讨论边设计吧
还比如,开发时间是在太紧张了,完成功能是第一位的,什么单测、code review、静态代码检测、冒烟测试等,能省则省吧,赶紧提测,我边改bug边完善
如上等等还有很多,不一一列举了。从以上也可以看出,为什么程序员群体要自嘲为码农甚至码畜了吧?因为他们只是机械完成一轮轮需求从开发到上线的新时代农民工而已,这个过程中不需要他们的创意、想法和主动性,更需要的是服从、体力和执行力。说完码农,我们来说说软件工程师.什么是软件工程师?要回答这个问题,我们得先看看什么是工程和软件工程。有人参与、有计划、有步骤地造一件产品,我们通常称为“工程”,比如造房子的建筑工程、造火箭的航天工程。在软件领域,对应的就是“软件工程”当软件的规模越来越大,复杂度不断增加,软件项目开发维护过程中的问题就逐步暴露出来:软件产品质量低劣、软件维护工作量大、成本不断上升、进度不可控、程序人员无限度地增加。所以在 60 年代,“软件危机”的概念被提出来。而软件工程,正是为研究和克服软件危机而生软件工程的几个定义:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则;将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中;这些定义的本质,就是要用工程化方法去规范软件开发,让项目可以按时完成、成本可控、质量有保证对比传统的工程学科,和软件工程最接近的就是建筑工程。建一座房子的过程:首先要先立项、设定预算,然后画设计图,再是施工,施工完成后,由专业人士进行质量检查,质检合格后入住开发软件本质上也是像盖房子一样,是从无到有创造的过程。工程化的方式,就是你分步骤(过程),采用科学的方法,借助工具来做产品参考建筑工程,整个软件开发过程也被分成了几个阶段:需求定义与分析、设计、实现、测试、交付和维护,这也就是我们常说的软件项目生命周期基于以上,所谓软件工程师,我认为就是能遵循并使用软件工程方法来开发软件的程序员:比如,对于软件开发过程,我们通常有两种常用的框架:瀑布和敏捷,这两种框架用来解决软件过程中的混乱,将软件开发过程中的沟通、计划、建模、构建和部署等活动有效地组织起来
再比如,对于软件开发过程中的每个阶段,我们都有规范化的指导方法,比如如何分析用户需求、如何进行系统架构设计、如何保证开发阶段质量、如何对产品进行测试验收、如何保证上线质量等
还比如,在软件工程方法实践的过程中,我们可以用相应的工具把一些手动的工作自动化,从而助我们提升效率,比如自动化测试工具,自动构建部署工具;通过工具,可以帮助把一些流程规范起来,比如 Bug 跟踪、源代码管理;还可以通过工具,帮助提高编码效率,比如各种编辑器 IDE等
好了,说完我理解的软件工程师和码农的区别,我们再来看如何如何成为优秀的软件工程师而不是码农。我觉得,我们需要从如下几个方面来看:首先,是环境问题。不得不说,随着toc的消费互联网红利的消失,很多互联网公司将重兵转移到了tob的产业互联网上,而产业互联网相比消费互联网一个很重要的差异就是慢周期,需要有耐心,才能慢工出细活,相信这个转变对国内互联网公司之前极度浮躁的产品研发氛围能带来一些改变,从而让更多的国内公司能够专心打磨产品和相应的技术组件和基础设施;
其次,环境只是外因,要改变更重要的还得考内因驱动。无论在什么样的环境下,程序员需要对自身以及自己的工作成果有更高的要求,即追求的不仅仅是把需求实现了,而是更高效和更高质量的实现。这个时候,就需要软件工程的方法和工具来帮助我们。因此,要成为一名优秀的软件工程师,我觉大家得一定要重视相应的软件工程方法和工具,并在平时的工作中进行实践落地,并且需要对软件开发的效率、性能和质量始终有着精益求精的态度。比如重视架构设计并能够在后续的业务演进过程中能够持续改进优化;比如持续发现现有研发流程有哪些地方还不够高效并自动化;比如能够抽时间对代码结构进行持续重构,持续提升性能和可扩展性;
最后,作为优秀的软件工程师,我认为最重要的是创造和创新,即通过技术实现用户或商业价值。因此,作为一名优秀的软件工程师,一定不要只关注技术,还需要多关注公司战略和业务。一个懂业务的技术,就像流氓会武术,会对我们日常跟产品、业务部门的沟通有很大的好处,能帮你看得懂各种业务上的变化,这个对自己在技术上的判断和决策有特别大的帮助,特别是在优先级、重要性的判断准确性上。当你能和业务和产品讨论业务,并且能够让他们觉得确实说的有道理的时候,他们对你的态度就会发生改变,你不再是他们眼中的工具人。当你能给出更合理的优先级理由的时候,有些价值不大的业务需求可能就能减少,相应的你就能在开发迭代中插入更多的技术需求,从而帮你完成上诉第二点的技术工作。尤其当你在深度理解业务的基础上,通过技术的优化或创新驱动了业务增长,创造了业务价值,你就不再是那个只会服从、拼体力和执行力的码农,而是真正意义上的软件工程师;
欢迎大家关注我的微信公众号:渝言家,我会不定期跟大家聊聊代码、架构、技术管理、行业和产品等话题。同时我多年来收集了一套极客时间关于编程开发、技术架构、技术管理相关的资料,大家关注后可以发送“geektime”获取,希望能够帮助到大家,点击下方可以直达:

我要回帖

更多关于 程序员好吗 的文章