2013-2014年间,全世界吹起一阵写代码的风潮,各大媒体疯狂报导,鼓吹年轻人不管所学为何,一定要学写程序。时不时就会看到「程序员是最有钱途的工作之一!」或者「连奥巴马都开始写代码,你能不开始吗?」这类的文章,不管金钱诱惑、名人带头,仿佛全世界都在疯狂的做程序。就算到了2015年底,不时仍有这类文章出现。相对之下,许多人认为自己目前工作很糟糕,包括老板高压统治、工作内容乏味、薪水仅能糊口等等,看到文章里头那些「高薪」、「出国工作」、「热门职缺」的字眼,是不是都想转行呢?今天就整理一些建议给大家。
第一件事,程序员都在做什么?
首先,程序员的领域有许多种,我以前被电影骗了,以为程序员就是电影里头的黑客,只要几秒就可以把非常大的系统架构给完成,凡提到入侵、破解、渗透等字眼,黑客都可以轻松处理。但说实在,「黑客」只不过是程序领域其中的一个范畴,举凡手机软件、网站、数据库维护、服务器、大数据等等,每一个领域都是一门专业,不光只是我们平常看到「Google工程师」、「Apple工程师」那样简单的分类法。
所以,当各大媒体都在鼓吹转职成程序员的时候,大部分谈的都是软件工程师(software engineer),最主要还是因为软件是我们日常生活最常接触到的,包括桌机软件、手机软件、网站,都是这几年如火如荼在发展的项目。
以下说到的程序员,指的都是软件工程师。所以工程师到底都在做什么?就工作来说,不超脱以下五件事情:
1,跟其他工程师讨论
2,编写代码
3,解决bug
4,和用户沟通
5,和产品撕逼以及被老板骂
对于水平比较初级的程序员,改BUG这个步骤会占掉绝大部分的时间,而且过程是非常无聊且漫长的。找一位工程师问他处理过最愚蠢的错误,一定回答是「为了找一个错字耗了一整天」,听起来有没有很浪费时间?没错,就是这么浪费时间!甚至,各种错误都是「屋漏偏逢连夜雨」,每当你最需要专心做其他事的时候,错误就出现了,然后手边原本规划要做的事情就这样搁置了,进度来不及,最后就被老板骂。这绝对是刚学程序开发的常态。当然,在这些错误当中,我们去学着如何写出更好的程序,避开那些给自己埋下的地雷,减少错误发生的机率。随着时间推进,我们就很少再犯这样愚蠢的错误。
但难道高手程序员就不用改BUG吗?很遗憾,资深的工程师不只要处理自己的错误,还要处理别人的错误,越资深遇到的问题越棘手。相信大家都知道不少企业会捧着大笔钞票去找资深工程师,而这之中除了要写新软件以外,许多软件开发都是要请人来擦屁股的。就像创业家面对各种经济、心理、社会的压力一样,工程师就是在面对各种程序上的问题,有可能是针对复杂程序当中产生的一个bug,也可能是公司服务采用的技术发生了问题。
例如很有名的GitHub攻击事件,当大家都认为Ruby on Rails技术很安全时,突然被人抓出严重的安全漏洞,这时如果我们在公司中恰巧使用了相同版本的Ruby on Rails,是否也因此要为公司解决这个问题?
因此,在工程师生活中,其中一大要务就是要解决问题。如果每天都在面对这些情况,自己是否还能乐在其中?
第二件事,不要被媒体的宣传蒙蔽了双眼
程序员薪水超高?
行行出状元,所有领域都有办法赚取高薪,但对程序员来说,情况比较符合「80/20法则」,就像许多人说的:
工程师饿不死,但也存不了什么钱。
不管是能力普通、只会听命行事的程序员,或是遇人不淑、老板吝啬的程序员,大概都无法取得高薪。若是半路出家的程序员,刚开始必然无法期待有超高的薪水,也很难找到商机立即创业,尤其转职的筹码较少,不像其他工种的学生许多有底子、有作品,找工作较为容易。
要谈高薪,还是得拿实力来谈,若是无法针对中型的软件项目设计出良好的构架、或是对自己擅长的技术还不完全了解,那对于薪水还是不要有太高的期待,而这些都是需要经验累积的。刚起步的程序员,对媒体报道分分钟年薪百万这类天花乱坠的形容词别想太多。
根据程序员客栈www.proginn.com这么多程序员的经历,刚起步的程序员只要有耐心,绝对能找到一份工作薪资可供生活,外加存点小钱。身为程序员,希望大家对普遍薪资较低的情况能有所抵制,对于过低的薪资要勇敢拒绝,接受的话只会放任无良企业继续用相同薪资雇用其他程序员,加上自己生活质量和士气也会跟薪资一样低落。
转行成为程序员后是否美好?
真正转行成为程序员了以后,问题才是接踵而来,很多事情等着探索。例如学历就是一大难关,程序员这个行业是看重学历的,当然这边讲的不是说一定要名校毕业,而是「本科系」这件事情是相对重要。我相信很多人都吃过这个亏,转行前一度以为可以靠一股热情打天下,殊不知在面试许多公司时,老板听到并非本科系都会眉头一皱。有一位好心的老板在通知面试未录取的时候,也同时说:
“工资是和学历挂钩的,这是全世界通用的法则,未来你想成为资深开发者,这更是每位老板都会看的。如果没办法再修一个学位,至少要能提出证明你对这些机器、算法等硬底子的学问都有点基本认识。”
虽然感到震撼,但这确实点醒了我,程序员并不是单单会一项技能而已,而是要对整个领域略知一二。
另一个难关就是要保持热忱,程序开发技术推陈出新的速度超越其他领域许多,在工作压力下,许多人会选择不去学习,导致进步的速度跟不上整个世界翻新的速度。可能有在接触的人有听过近几年Web前端技术的战国时代,从Java延伸出来的框架多如繁星,从目前最热门的React Native,到前一两年窜起的Angular.js、Ember.js,外加之前打得火热的Node.js和io.js战争,每一年都有爆炸性的改变。
假如我今天是专精Web前端的工程师,在这些技术出现时,势必要了解他们要解决的问题、优点、缺点等等,并决定有没有需要使用这些技术来改变现有的构架。例如公司现有构架是直接用纯Java实作变数即时更新,如果改用Angular.js,可以大幅减少代码的数量,直接交给该函式库来处理。今天假如我们没有特别探究这些技术,未来在寻找其他工作时,技术主管也会期望你稍微了解这些技术。简单来说,你不前进,别人也会推着你前进。
这只是其中一个例子,程序开发领域在小地方都有无限多的变化,必须不断学习、接受改变。转职前,很多事情我们想的很美好,但在转职后,才知道这个领域有他自己的法则,在这边无法一一列举,但不管怎样,如果有决心、有热情,这些难关对你来说只会是长远路上的一块小石头。
第三件事,你对写代码真的那么热爱吗?
对于热情这件事,不得不再次提到二八法则,因为有80%的热门技术是由20%的人所构架出来。不管你未来所钻研的是哪种技术,总会在领域中有一些神人,他们可以1个人就超越10个的产值,对该技术有非常完整且深奥的了解,并且针对难懂的问题有非常优雅的解法。这些人决定了未来技术的走向,例如目前市面上的大型商业软件,许多都是由少数人将构架完成,后续才是由许多工程师进行维护、更新。
你想成为那些「大神」吗?虽然许多程序员做了一辈子也没办法,但仍然要保有那「想要成为大神」的热情,才能得到担任程序员的快乐。在生活中程序员不只会遇到系统错误,更常会遇到使用者给予的意见,包括常在Google Play或App Store上看到的评论:「这软件超烂」、「一分都嫌太高」等等,没有重点却严重打击士气,也是生活中的一部分。反之,尤其在大型项目上线,陆续收到使用者说回馈说:「使用上变得更方便了,谢谢你们!」这类温馨的评论让人非常有成就感。抑或是在钻研特别技术,而成功让项目有大幅成长的时候,例如用Go语言将部分Ruby on Rails的API服务重写,让整体速度提升20倍以上,这些数据都会让程序员非常有成就感,也是工作上很大的满足。
反之,当我们只想着要每天安安稳稳的写代码、维护项目,以上那些情况就绝对不会发生,我们整天只会自怨自艾,对现况感到不满却不改善,把所有的错都推给使用者、推给主管、推给别人。那不如不要转行了,不妨待在自己目前的位子上,好好过生活即可。一定要充满热情,想要成为「二八法则」中的领导者,跳进程序员这个圈子才有意义。
小结
当你决定成为一名程序员的的时候,你要对自己做的事情有热情、想要不断学习、发掘新知、研究新技术,否则转行一点意义都没有,如果想安稳过生活,不如就找一个无聊的工作,专心研究股市吧,这样的生活质量会比程序员好多了!
相关推荐
2. **程序员35岁之前成功12条法则** 这些法则可能涵盖了职业生涯规划、个人成长和专业发展的关键要素,例如: - 持续学习:不断更新知识,适应技术变化。 - 项目经验:积累不同类型的项目经验,增强适应性。 - ...
如果程序员转行去做销售。在我上一篇随笔中,发表了一些感慨,放着好好的程序员不做,转行做了销售,没想到,有好几个朋友给我留言,讨论怎么转行做销售。这里还是谈谈我自己的想法,也想向一些做的比较成功的前辈...
### Java程序员 上班那点事儿 #### 知识点概览 1. **技术全面性与实际需求的差异** - 应聘者的技能全面但缺乏针对性。 - 企业需求更加具体化。 2. **求职者的自我认知与定位** - 如何明确自己的职业定位。 - ...
10. 编写养生书籍的动机:作者有中医背景,后转行做程序员,希望用自己的经验编写一本适合程序员阅读的养生书籍。 通过这些内容,可以看出程序员的养生不仅关系到个人的身体健康,也影响到他们的工作状态和生活质量...
和那些职场鸡汤不同,本书从价值论开始,引入职业画布,从九大方面为你讲解;有分析数据、有简历模板、有书写工具、有技能树图,堪称一本公司老板和HR最害怕你看到的跳槽百科。 作者@Easy为互联网人才拍卖网站...
事后问问他们是不是对你个人有所意见。 3. 把编程大招当做最高机密 这种编程大招你知道得越多,那么在同行中你的地位就越高。多多使用自己的魔法大招,但是要记得千万不可黔驴技穷。还有一点:不要偷学别人的招数,...
第一章“大学四年应这样度过”着重讲述了在大学期间如何为成为一名优秀的程序员做准备。它可能涵盖了基础课程的学习,如计算机科学、数据结构、算法等,以及如何通过实践项目提升编程技能。此外,这一章可能还强调了...
本书《程序员十层楼》通过对程序员技术能力的细致划分,提出了一个包含十个层次的程序员技能体系,以帮助读者更清晰地了解和定位自己的技术水平。在这一体系中,作者周伟明从自身丰富的软件开发经验和对程序员职业的...
11. 复试失败与转行:程序员可能经历了多次尝试和转型,反映了软件行业的竞争激烈。 12. 程序员版《桃花庵》,将程序员的生活状态与古代诗作相结合,体现程序员的生活艰辛。 13. 电子秤与精度:程序员对于精确度的...
标题和描述均提到了“程序员的十层楼”,这一概念主要探讨了程序员在技术能力上的层次划分,旨在通过分析不同层级所需的技术水平,比较中国与西方程序员的能力差异。文章由多核编程专家周伟明撰写,他基于自身丰富的...
4.学习计算机原理和数据结构:如果你不是科班出身,想要转行而不知该怎么开始的话,建议你先看两类书:计算机原理和数据结构。 5.努力不晚:什么时候努力都不晚,关键是你明白要努力了,大器晚成总比一事无成要好的...
程序员转行做运营,曾被逼得每天想离职,最后.... 资源摘要信息中包括以下知识点: 1. 运营的基础工作:运营的基础工作是指运营岗位的基本职责和责任,如用户运营、市场运营、新媒体运营等。 2. 运营的岗位分类:...
此外,考虑到未来可能出现的工作调动或转行等情况,考取驾照也是一个不错的选择。 #### 四、情感与人际关系管理 - **慎重选择伴侣**:恋爱关系的建立和发展需要投入大量的时间和精力,尤其对于工作繁忙的程序员来...
【标题】"程序员免费视频大全"所涵盖的知识点主要集中在几个关键领域,包括但不限于Java、Android开发、iOS、JavaWeb以及.NET技术栈。这些视频教程是为那些希望提升编程技能或者初入IT行业的程序员们精心准备的,由...
在这个阶段,是继续深耕技术,成为技术专家,还是转向管理岗位,或者考虑转行甚至创业,都需要深思熟虑。技术专家的角色能让你在某一技术领域拥有深厚的积累,而管理岗位则需要良好的团队协作和领导能力。创业则意味...
大学生应该利用在校时间,通过实习、项目参与等方式,了解行业动态,明确自己的职业目标和发展路径。 ### 3. 学术成绩与实际能力 候捷指出,大学成绩与社会上的实际表现并不总是成正比。在IT行业,实践经验往往比...
这个“JAVA基础入门全套视频合集”显然是为了帮助那些希望进入编程领域,特别是想成为程序员的人设计的。在这个合集中,你将能够系统地学习Java的基础知识,为后续的深入学习和实际开发打下坚实的基础。 首先,Java...
适用人群:转行程序员、应届程序员以及其他技术岗位招聘, Template适用于Python、Java、C++、Web前端、Android等多个技术领域简历。 使用场景及目标: 1) 个人简历撰写参考:可直接套用模板内容,根据自身情况稍作...
7. 制造力和纪律:没有标准和规范,无法形成统一,假如程序员都各做各的,各自发浑自已的创新性,那就不叫团队开发了。 职业规划 程序员-软件设计师-项目经理-系统架构师-技术总监 程序员-项目经理-行业高层领导 ...