Ⅰ 程序员转行做什么工作
我对技术转行深有体会,我也是程序员转行的,之前做java开发,对程序员转行而言,理由有且只有一条,太TM累了,没前途!加班严重的损耗精力,头发早秃,三十几岁全身只剩腰部以下毛发完整了。中年油腻男,谈对象都嫌你长得丑。知友们说我说的对不!尤其是上了三十岁,哪有这么大精力还在耗着,有些人说:你们是坐办公室的啊,我说,你来试试啊。不要听别人不让程序员转行,他们没有切身体会!只有做技术的才能体会到什么是真正的累!无论前端,后端、无论写什么语言,这种累是从骨头里出来的累!累死人的累,你不懂就不要阻止技术转岗!每年技术都有很多过劳死的,累死的不是你,是我们做技术的!成功学大师、鸡汤大师一边呆着去!听我说技术靠谱的转岗方法。
技术赚钱多,那也是加班夹出来的。技术就是互联网行业最苦逼的码农,知道什么叫码农吗?不懂的去网络!别给我们做技术说大道理,我们的道理只有一条,就是不想干了,就想转行。但凡能说出来不想做技术的朋友,都是已经下定决心要去转行的了。
许多技术宁愿降低薪资也不要这么的累,而且技术的累也看不到前途,想成为技术专家?那你想的也太简单了。这职位看似很高技术含量,其实多数都是重复的高压力工作而已,而且就算你成为专家,也是每天都在写代码,而且写的更多,与不是专家有何区别?那你会说,你们技术不会做管理啊?那我只能呵呵了,技术做管理,管理啥?给你个小组长当还不照样接着写代码。你问我咋知道,我曾经做过小组长的。那做到项目经理?呵呵,哪有这么多的项目经理给你做,技术这一层级做管理非常的难!它是互联网职位中最底层的职位,同时也是互联网公司里面人数最多的!这么多的人谁给你转岗位,那也太难了!
我之前的公司技术转岗的很多,我一个同事30多岁了,也不想做技术,成为我们公司第一个吃螃蟹的人,他选择的方向是做工程一类,因为他们亲戚有做这一块的。他走时撂下一句话,告诉你们,如果我再做技术,我就去吃屎。过了没两个月,我们联系他,他又做技术了,问他何故,甲醛中毒,实在受不了那气味!还不如吃屎哈哈哈。哪一个行业都很难做啊。隔行如隔山!如果你要去转,需要慎重。
还有的同事转行做金融去了,没过几天,辛辛苦苦做技术赚的几十万块钱都赔进去了。想买房的首付也没了,转行没转成,倒是赔的裤衩都没了。无一例外,都失败了。因为对外界行业一窍不通!理想很丰满,现实很骨感啊!
我这两年认识的只有一个做技术的朋友转行成功了,那是我几年前在甲方公司认识的,头脑很灵活,今年直接回家合伙养猪去了,这同事厉害了,很有远见,他只做投资,就在今年猪肉价格暴涨时候狠狠地赚了一笔。这是我见过唯一一个从技术转行实现人生价值的。不怕苦,不怕累是成功不了的,成功真是验证了那句话,站在风口上,猪都能飞起来。但这样的人已经不能用转行来形容了。普通人真的很难做到,需要有机遇,还有胆识。
如果按照行业来看,行业有千万个。但根据我的经验来看,想要跨行转,难度是极大的。如果没有人带一把,事实证明很难成功,要想真正转行成功,只有提前做准备,如果没有准备好贸然转行,那是不理智的。多数人都是失败告终。赔了夫人又折兵,这是现实!
网上说什么要会根据自己的性格选职业,要根据自己的能力选职业,要了解自己,要根据自己的爱好转行,这些教条理论,听起来很有道理。但说真的,没有行业的经验和充分的准备,毛都不是!跳进去就淹死了。就算你对自己再了解,也根本不了解这个行业!就不要听这些心灵鸡汤的大道理了!
那就不能转了吗?那就得听一些告诫良言了吗?当然可以转,需要掌握住方法,没有方法是不行的!只听别人危言更不行,那些都是无用的,只有转行方法才有用,正确的方法一定能够转行成功。
我回想很多朋友内转居然成功了不少,做技术内转还是很有机会的,不是互联网中所有职位都像技术那样的加班,其实我经过多年工作发现一个职位适合技术内转,就是技术的死对头产品经理。这职位可以说和技术关系最大了。也是做技术不喜欢的职位,但是这职位有一个最大的好处,真比技术可轻松多了。居然互联网工作中还隐藏这么样的一个轻松的岗位,我们可没有改变世界的梦想,但我们有工作轻松的梦想啊,而且相关性也很大,要是能转这个岗位那就好了。
我考虑过要不要转运营,不过运营的工资太低了点,而且也不好做,拉新留存促活,最主要运营没什么前途。基本也和技术一样,做几年就转其他岗位了。销售这职位也不太适合我转,做技术出身的干销售存在很大的问题,不太善于忽悠人,比较直。而且风吹日晒,也不太适合我这样喜欢安静的人做。
我多年的经验告诉我,内转是唯一一条靠谱的路!但内转得看准方向,不要再转到让自己痛苦的岗位了。
经我慎重研究,我发现互联网公司中工作有两种职位,一种属于综合性职位,一种属于专业性职位,专业性职位像我们做技术的就是这一类,每天都在和电脑打交道,每天沉默寡言,编写一行行的代码,修改一个又一个的BUG。这类工作很消耗精力,加班很严重。如果你要转行转到专业性职位上,无论是不是互联网职业,都不会轻松的。因为职业的属性就决定了这个行业的难点。就像你去刷墙,那也得反复的修复,一面墙也得刷好几遍,修复刷的不好的地方。这是专业性职位必然具备的属性:重复性、耗精力。所以从技术无论转到哪个专业性职位上去,无论在哪一个行业,结果都只有一条,从狼窝又入虎穴。转了等于白转,到头来还是那么消耗精力而感到疲惫。
还有一种职位属于综合性的职位,比如死对头产品经理,CEO。CEO就不要去想了,技术是转不成功的。但是产品经理是可以转的。综合性的职位为什么比专业性的职位很轻松。君不见,产品经理也每天都在加班啊。不!他们只是陪着技术加班而已!他们画完原型,写完文档,很长时间就不干什么事情了。虽然拿到的薪资比技术要低,但是这职位也太轻松了点,虽然评审会上也会被怼,但是过了评审会这职位就没什么事情做了。我也发现这职位真的是不错了。在辗转反侧多年后,我发现我可以尝试去转这个职位。但是在转之前,我也得认真看这个职位到底做什么,虽然每天和产品撕逼,却真不太了解具体要做哪一块。
大体上,他们每天要画原型写文档,这和技术做的差不多的。原型也不是那么简单,粗糙的画一画,然后交给UI设计出保真图,交给技术。这工作比较像技术,但比起技术来那简单多了。他们使用的工具是AXURE。我看了一下也不难,很简单的,网上也有很多视频和教程。都是比较容易的,比起学代码来可容易多了。
可是他们还会写PRD文档,就是给我们技术的那些文档,还有BRD一类的文档。这些对我来说都是小意思。我要写肯定比他们写的还好些。逻辑方面是我们做技术的优势,产品经理在这方面还不如我们。文档和原型是他们主要做的,我尝试学了一下还是比较简单的。
还有技术做需求分析。这一块好像不怎么简单了。与技术的相关性就不是太大,但也比技术轻松点,因为也没有什么特别的分析。倒是有一个方法论,之前我们公司那个产品经理告诉我他是从产品手记培训出来的,貌似还是很厉害的。至于怎么培训,我就不清楚,我问他的时候他说这一块想学习的话其实还有像人人都是产品经理这类的网址,我都一块附上给你参考了。里面有很多产品经理分享,类似于一些技术论坛,讨论做产品的方法和分享一些文章。貌似我看了之后对我价值并不大,其实主要是因为这个网址知识太零散了。什么都有,适合在职的还可以。但像我想转行就不适合看这类文章,可以做参考我觉得还是可以的。
产品手记据说是专做产品经理培训的,业内知名度很高,我看了一下,的确是很有名气。在我看来,要想转行那一定要经历培训的。毕竟隔行如隔山,转行本身就不容易,根据我之前朋友的经历来看,没有专业的体系是不行的。尤其是这块需求分析,也只是产品经理一部分。
还有技术要做用户体验,用户体验其实也是产品经理的技能之一,这个也得需要学习,相比较技术而言,用户体验也很有意思,其实更接近研究人,这比技术研究代码要有趣的多,还要懂一些心理学。用户体验在产品经理上有五个层次,战略层,范围层,框架层、结构层、表现层。具体上我就不说了,它是研究用户体验必不可缺的五步,其实都很系统化。网络上找找资料也能找得到,主要是没有实操经验是很难得,仅靠资料也转行成功不了。
竞品分析也是产品经理需要做的,竞品分析来说并没有那么难,其实只要学会用户体验就基本上就可以做竞品分析了。实操来说需要写份竞品分析报告的。主要是研究竞品,简单来说就是如何去抄袭竞品功能,为什么要去抄袭。但是这个专业度也不低。因为得结合具体需求来做的。
前后台都需要会的,这也是产品经理的必备能力,因为他不只和前端沟通,还要和后端沟通的,这个肯定都需要掌握的。不过我们之前那个产品经理前后端都会,原型画的也很好,薪资比我的要高,我也是和他经常沟通,我们之间也是很好的朋友,也是他介绍我去参加下培训就很容易转产品经理的。
用研这一块也需要做,用户研究是产品经理必做的一项,其实就技术而言,转产品至少得有50%是相通的,还有50%是不通的,像用户研究这一块就是需要学习的一部分了。用户研究也很有意思的,和市场研究一样,不过这种职位其实做做市场,用户对于以后独立创业好处还是很多的。
综合性的职位有素质要求的,转行的小伙伴需要注意的。一般对沟通的要求很高,这是做技术的弱点,但是也是好处,因为产品经理平时主要和技术沟通的。所以基本上需要掌握一定的技术术语,在这方面,技术是有绝对统治力的。这方面我倒不担心,沟通方面只要正常沟通就可以了。这方面一般培训都会专门训练,像是公司化培训为主的机构,就像我之前提到的产品手记也是比较看中这方面的。
还有逻辑能力,这也是技术转产品最大的优势了,很多产品经理连代码都看不懂,更不要说逻辑了,而且现在很多公司也都需要有技术背景的产品经理,便于和技术沟通,这也是技术转产品最大的优势了。所以不用担心这方面。
学习能力,产品经理需要这方面的能力,就学习能力而言,技术的学习能力不比产品经理差的。产品经理学习能力主要是针对于业务方面的学习能力,并不需要很深,基本上能够满足于画原型,写文档就可以了。毕竟互联网工作都需要学习的,这个职业发展变化是很快的。这方面倒不用担心。真正在工作中随时都需要学习的。如果学习的话我是建议参加些培训的。转行速度比较快,毕竟在大城市一天成本很高的。
我今年十月份也转行了,也是通过的培训,当然你要觉得自学可以的话也可以自学,不过我觉得太浪费时间了。自学一年也不一定有用。今年抢了产品经理的饭碗,对不住了!我觉得其实转产品是最容易的一条路。也是最正确的一条路,也是方向最正确的一条路。像是转产品而言,技术做到3年多就可以转了,而且产品的职业周期要比技术长很多,像产品经理做到四十几岁照样很多人的,综合性的职业比较训练综合能力,其实,年龄越大,综合能力要求的就越高,即使你将来开一家店,也需要处理综合性的事情,这些在产品经理这个岗位上反而能得到很好的历练。产品经理很多也在创业,我觉得反而比技术创业成功率更高。因为创业这件事就是综合性的,等到你三十几岁时,你就知道综合性的职业是最适合做的,专业性的职业是最苦逼的。转岗也是必须的!
我总结出的转岗需要遵守的原则:
第一:不要转不熟悉的岗位
不熟悉的岗位再好的也不合适,你在一个行业想要不痛苦,起码需要三年实际工作经验,冒险去转这类的岗位,不管你出于爱好、兴趣、还是自身定位,都是不靠谱的转行。任何一个职业都没有那么容易做的。哪个职业都不会给你带来快乐,你不讨厌就很好了。像技术而言,有多少其他职位看着技术很好呢。实际上呢,只有自己真实做一下才知道不容易。
第二:选择本行业内的岗位转
这是一个优势,互联网是一个非常大的行业,越是相关性的职业越容易转,越容易上手,互联网职业是很多的,也不只有技术,也不只有产品经理,但是从技术转产品是一条非常近也是现实的一条路。
第三:不要相信别人说的
转行如同小马过河一样,松鼠说水很深,老牛说水很浅,你不能拿别人的成功或失败的经验而定位自己,这样极大的错误,千万不能找案例,案例是最害人的,别人的案例适合自己的很少。必须和他相似性越高你越容易转。
转行这件事,对每个技术而言都是最终要面对的事情,年龄越大,越来越疲劳,越来越看不到前景,越来越消耗精力,而自己却无法成长,越来越多能加班的新兵进入,而自己越来越不能加班,这是最痛苦的一件事情。早转行没有错。这是我转行过来的经验,说句实话,我转行也是之前公司那个产品经理介绍我去参加培训,起先我比较抵触,但是要是想转行就一定要去付出些。一点不付出是不行的。至少现在我对工作还是很满意的,工作上没有之前做技术那么累了。这个压力来说,要比做技术简单多了,基本上也不用天天敲代码,思考各种复杂的问题了。相比较,产品经理更像是一个管理者,不管怎么样,我觉得比做技术要好很多了。
Ⅱ 理科程序员怎么用语言打败整天说‘心灵鸡汤’
不懂你的意思,是说要打败整体给你灌‘心灵鸡汤’的人么?
什么仇什么怨,那你下次他在你旁边说的时候,你就写个循环输出字符串到屏幕上“不想听\r\n”“不想听\r\n”“不想听\r\n”.........无限刷屏 然后你闭幕养神呗
Ⅲ 程序员周末该怎么度过
没对象的的程序员
作为经常加班的程序员,肯定会一脸懵逼得说,啥叫周末,我们周末都是在办公室和电脑过的,除了写代码还能搞啥?
程序员也是人,也需要休息,周末如果有时间还是要多安排一些有意义的活动。奶爸的建议如下:
1、做好身体建设
好好补补觉,平常天天熬夜,到了周末一定要睡到自然醒,不到太阳晒屁股,绝对不起来,如果阴天可能要睡到第二天了。
睡好觉,体力回复了,就要想办法多锻炼,不然身体会越来越臃肿,我们团队几个程序员都是90后,年纪轻轻,可肚子却越来越大了,就是因为久坐,不运动导致的,所以还是要坚持锻炼,不一定非要去健身房,自己跑跑步,或者骑着共享单车锻炼一下都会有不错的效果。如果不想出门的话,在屋子里做做俯卧撑和仰卧起坐,只要坚持也能起到塑身的效果。
2、好好陪家人
结了婚的程序员,多陪陪老婆孩子,平常太忙了忽略了他们。其实工作和生活是没办法平衡的,陪家人的时候,就要高质量陪伴,哪怕是只有半天的时间,也要专注的陪家人,不能三心二意。
没有女朋友的抓紧时间new一个出来,结了婚没孩子的抓紧时间造人,毕竟平常那么累,也没什么兴趣。
3、继续精进技术
很多程序员似乎除了编程,就没啥爱好了,不过趁着年轻,特别是单身狗,没啥活动,多钻研一下技术,也是个不错的选择。
没准靠着周末的时间,自己也能精进一个技术大牛呢,哎程序员的技术水平都是通过周末差出来的。
4、心里疗伤
平常上班编程,调BUG,和产品经理吵架,心里累啊,一定学会心里建设,实时的把心里的负面的情绪都排解干净,这样才能有一个正能量的自己,迎接新的一周。
看看最新上映的大片,追追热剧,打打游戏,没心没肺的开怀大笑一下,和糟糕的情绪说拜拜。
实在不行看看励志的文章,喝点鸡汤、打点鸡血,让自己满血复活,没办法,程序员都心累,不做好心里建设,疗好伤,很难坚持下去。
5、培养一个骨灰级的爱好
除了编程,一定要培养一个骨灰级的爱好,一方面是为了陶冶情操,另一方面这个爱好将来也可能变成自己的一技之长。
程序员年纪大了很可能会转行,如果这个爱好能成为自己的赚钱技能,也算是未雨绸缪,增强自己的斜杠力了。
6、混圈子
多参加一些社交圈子,比如读书社、摄影圈,一方面是为了多结交些志同道合的人脉,另外一方面也可以让自己的价值得到最大的发挥,毕竟有价值,没人感受到也是个挺悲哀的事。
Ⅳ 如何成为一名优秀的java程序员
牛逼的人总是让人羡慕,但如何才能让自己成为牛逼的人对我们来说更重要,本文分享的是如何才能成为java高级程序员,你和java高级程序员只差这一篇鸡汤!干了这碗鸡汤,未来不可限量!
1、离开舒适区,提高个人代码能力
不安于现状,高级程序员一般都具有丰富的项目经验,经验是能力最好的试金石,即使在碰到未知的问题,丰富的项目经验也不会让你觉得就束手无策。程序员是一个技术跨度很大的工种,对某种既定环境语言的依赖性太强,知识和技能都无法很好的迁移。
2、将复杂的问题简单化处理
乔布斯曾经说过,简单便能移动一座大山。一个高级程序员之所以让人觉得牛逼,不仅仅能用写出优雅简洁的代码,更重要的是他们还能将这种化复杂为简单、化繁为简的功力内化至各项工作,不管是面对多复杂的项目、多棘手的 bug 都能面不改色、心不跳,步步拆解问题,逐一各个击破。
3、自我总结,提升学习和解决问题能力
代码能力、工作状态只是一个高级程序员区别于普通程序员的外在表现,王者和青铜的核心区别在于思考方式和解决问题能力的区别。高级程序员可能每天会花半个小时总结当天的项目经历,反思自己的不足,思考问题解决或优化的方案。区别于初级程序员,高级程序员总结问题的往往能从本质出发,不会只停留在表面,弄清问题内在联系,抓住问题关键。这也就解释了为什么拿到一个项目需求,很多高级程序员不会首先去想代码实现,而是去想需求与架构的行为。
4、责任心和需求理解能力
高级程序员对自己的要求不仅限制于完成项目、解决问题本身,往往还会去思考并权衡需求涉及的一切,比如如何去支持设计模式、库、框架、重构和流程等,从内核到外层界面,既重视功能需求,还会注意到拓展性能、稳定性等需求,甚至还需要评估设计模块对整个项目中的影响及潜在的威胁。
总结:如何才能成为高级程序员,关键还是思想,学习的思想、总结的思想、创新的思想!
Ⅳ 有哪些关于程序员的心灵鸡汤
1. 在你责怪别人之前,先检查自己的代码
先想一想自己的假设和其他人的假设。来自不同供应商的工具可能内置不同的假设,即便是相同的供应商对于不同的工具,其假设也可能不同。
当其他人正在报告一个你不能重复的问题的时候,去看看他们在做什么。他们可能会做一些你从来没有想到过的事情,或者他们的做事顺序与你的截然不同。
我个人的原则是,如果我有一个不能确定的错误,那么我会先考虑是不是编译器的问题,然后再去检查堆栈是否损坏。特别是当添加跟踪代码会使得问题移动的话就更要这么做了。多线程问题是 bug 的另一个来源,有时候令人焦躁得简直想拔光头发,或者直接想摔电脑。当系统是多线程的时候,最好倾向于简单的代码。我们不能依赖调试和单元测试来发现任何一致性的 bug,所以设计的简单性是最重要的。
所以,在你不分青红皂白地去责怪编译器之前,先想一想福尔摩斯的这条建议,“一旦你排除了种种不可能,剩下的不管有多么难以置信,一定就是真相”。
2. 不断学习
我们生活在一个有趣的时代。随着软件开发逐渐遍布全球各地,你会发现有很多人都可以干你的工作。所以你需要不断学习以保持竞争力。否则,你就会落伍,停滞不前,直到有一天,这份工作不再需要你,或外包给一些更廉价的劳动力。
那么我们能做些什么?有些雇主很慷慨,会提供培训以拓宽你的技能。也有的人会说我没时间或者没这个资金去接受任何培训。所以,关键是要摆正心态,学习是对自己的负责。
这里有一些学习的方法。而且许多资源都可以在互联网上免费获取:
•阅读书籍、杂志、博客、Twitter feeds 和网站。如果你想更深入地了解对象,可以考虑添加到邮件列表或新闻组。点击这里通过邮件订阅《快乐码农》杂志
•如果你真的很想学习某一种技术,那么就亲自动手写代码。
•尽量与导师一起工作。虽然你从任何人身上都可以学到一些东西,但是从那些比你更聪明或更有经验的人身上,你能学到的更多。如果你实在找不到这样的良师益友,那么请继续往下看。
•使用虚拟导师。在网络上找你真正喜欢的作者和开发人员,阅读他们写的内容。订阅他们的博客。
•了解你使用的框架和库。知道事物的工作原理,有助于你更好地应用它们。如果你使用的是开源资源,那么你真的很幸运。使用调试器单步执行代码,以查看内部究竟是怎么回事。你也可以去看看那些确实比你聪明的人是如何编写和审查代码的。
•当你犯了错误,修复 bug,或者遇到问题的时候,试着去真正理解发生了什么事情。很有可能其他人已经遇到过同样的问题,并且发布在了网上。谷歌搜索真的很有用。
•学习东西还有一个好方法就是所谓的“教学相长”。当别人在倾听你的言语,并问你问题的同时,你也会学到东西。可以建立用户组或本地会议。
•为自己感兴趣语言和技术加入或启动一个研究小组(模式社区),也可以创建本地的用户组。
•参加会议。如果去不了的话,也可以在网上看,许多会议会将其谈话免费发布到网上。
•收听播客。
•曾经对代码库运行过静态分析工具,又或者查看下你的 IDE 警告?了解它们报告了什么,以及其原因。
当然如果你有《黑客帝国》中 Neo 那样的超能力,自然这一切对你而言不过是小菜一碟。但很可惜,我们都是普通人,我们需要时间和精力,以及不断的努力才能促使自己不断的学习。不过,你不必成天学习。只要你能有意识地花点时间去学习就可以了,哪怕每天一小时,有总比没有好。人活着不是为了工作,你还应该有自己的生活。
3. 不要害怕破坏东西
每个具备行业经验的程序员肯定参与过代码库岌岌可危的项目。系统很糟糕,并且改变这边总是会破坏另一边不相关的功能。每次添加模块,程序员只能想着尽可能少地改变代码,每次发布都胆战心惊。这座软件的摩天大楼随时有坍塌的可能。之所以改动代码会如此伤脑筋是因为系统太糟糕了。但是即使你知道系统出了问题,却又因为投鼠忌器,而不得不听之任之。任何一个外科医生都懂得,伤口要想愈合就必须得切除腐肉。虽然手术会带来痛苦,但绝对比任伤口发炎溃烂要好。
不要害怕你的代码。没有人会在乎当你捣鼓代码的时候有没有暂时破坏了什么东西。只要你做的改变不会让项目重新回到开始状态,就不会令人崩溃。投入时间重构,能让你受益于项目整个生命周期。这样做还有一个额外的好处是,由于你有过这种处理病危系统的经验,所以你对它应该如何工作非常内行。要善于应用这些知识,千万不要反感这些宝贵的财富。重新定义内部接口,重构模块,重构复制粘贴代码,并通过减少依赖来简化设计。你可以通过消除特殊情况显着降低代码的复杂性,因为特殊情况往往是因为错误的耦合特点导致的。慢慢地从旧结构过渡到新结构,测试一路同行。如果你想要一下子完成一个大的重构,那么往往会因为各种频出的问题而考虑中途放弃。
4. 专业程序员
专业程序员的一个最重要的特点是有责任心。专业程序员会为他们的职业生涯、预算、日程安排承诺、错误、技能技巧负责。一个专业的程序员不会将责任推卸给别人。
如果你是专业的,那么你就需要为自己的职业生涯负责。你有责任去阅读和学习。你有责任去时刻关注最新的产业和技术。但是许多程序员觉得这应该是他们雇主的工作。NO,大错特错。想一想医生?想一想律师?他们都是靠自己来培养和训练自己的。他们的下班时间多用在了阅读杂志报刊上。他们时刻关注着最新的资讯动态。所以,我们也应该如此。你和你雇主之间的关系,已经在雇用合同上作了详细的说明,简而言之就是:你的雇主承诺支付你薪酬,而你承诺做好工作。
专业程序员会为他们编写的代码负责。除非他们知道这些代码是有效的,否则就不会发布代码。现在,好好思考这个问题:如果是你,你会不会在不透彻了解代码的情况下就直接发布代码?专业程序员不希望 QA 找到任何 bug,因为这些代码都是经过他测试之后才发布的。当然,QA 依然会发现一些问题,因为没有一个人是完美的。但作为专业程序员,我们的态度应该是让 QA 找不到任何缺陷。
专业程序员也是好的团队成员。他们负责地对待整个团队的输出,而不是只顾自己的工作。他们乐于助人,善于向彼此学习,在需要的时候甚至会鼎力相助,为了项目前仆后继。
5. 充分利用代码分析工具
测试的价值是编程早期阶段就灌输给软件开发者的一个理念。近年来,单元测试,测试驱动开发和敏捷方法的兴起,证实了我们开始注重于在开发周期的各个阶段进行测试。但是,测试只是你可以用来提高代码质量的许多工具之一。
回过头去看,当C语言还是一个新事物的时候,CPU 时间和任何类型的存储都是非常宝贵的。第一个C语言编译器注意到了这一点,所以选择了通过去掉一些语义分析,来减少代码之间的传递次数。这意味着,在编译时,编译器检查到的可能只是可被检测到的 bug 中的一小部分。为了弥补这个缺陷,Stephen Johnson 写了一个名为 lint 的工具——它将从你的代码中删除一些没有价值的东西——从而实现一些已被它的兄弟C语言编译器撤掉的静态分析功能。然而,静态分析工具却因为可以给出大范围的误报警告和一些没有必要遵循的静态文体惯例的警告而倍受赞誉。
现在的语言、编译器和静态分析工具的设计和以前已经大不相同。由于内存和 CPU 时间变得相对比较便宜,因此负担得起编译器检查更多的错误。几乎每一种语言都拥有至少一个工具,用来检查风格指南的违规行为、常见问题以及一些狡猾的有时候可能很难捕捉到的错误,如潜在取消引用空指针。更高级的工具,如C的 Splint,以及 Python 的 pylint,是可配置的,这意味着你可以通过命令行开关或在 IDE 中,使用配置文件来让工具选择放过其中的哪些错误和警告。Splint 甚至还能让你在注释中注解你的代码,以便于更好地提示你的程序是如何工作的。
6. 关心代码
优秀程序员能写出好代码,这是毋庸置疑的。坏程序员……则不能(他们能写出好代码,就不是坏程序员了,哈哈)。他们总是在生产其他人不得不消灭的怪兽。你的目标是写出好代码,对不?那么你应该成为好程序员。
好的代码并不是凭空而来的,也不能靠运气然后恰巧让你瞎猫碰到死老鼠。为了获得良好的代码,你必须努力的改进。过程是艰难的。但是如果你确实关心代码的话,那么你一定能收获好代码。
仅靠技术并不能成就好的编程。我碰到过一些非常聪明的程序员,他们能够产出令人印象深刻的算法,能够熟记语言标准,但却写出了最可怕的代码。这种代码,阅读起来很痛苦,使用起来很痛苦,修改起来更是令人痛不欲生。我也碰到过一些非常谦逊的程序员,因为坚持简单的代码,所以写出来的程序更优雅,更易于表达他的意思,和他们工作非常愉快。
基于我多年的软件生产经验,我得出的结论是,差强人意的程序员和伟大的程序员之间的真正区别是:态度。好的编程在于专业的方法,以及一种竭尽全力希望写出最好软件的期望。
要成为一个优秀的程序员,你必须对自己的代码负责,真正关心代码——养成积极向上的心态。伟大的代码是由大师精心雕琢的,而不是由那些马虎的程序员胡乱写出来的。
Ⅵ 作为刚入职的java程序员,一年时间内如何提升自己的实力,更有竞争力
刚入职,就意味着你有基础,但是还没有到精通,那以下这几点你要好好看看
1.用好互联网
在你入行的第一年,肯定会遇到各种各样的问题,但不用担心,这些问题其他人肯定也遇到过。
这是一个开源的时代!人们习惯将解决办法记录在网上。
越早的学会使用goole寻求帮助,问题就会越早得到解决。(但是在看别的代码或解决bug的时候,不能直接Ctrl+C,Ctrl+V,要弄明白其中的原理)
2.养成良好的编译习惯
你是公司的一员,是团队协作来完成整个项目的,也就是说你的代码不仅要你自己看得懂,更要让团队中的小伙伴和你的领导看得懂。
所以起名称规范一些,保持代码结构清晰,多写一点注释!
3.基础理论很重要
如果你只想成为一个普通的码农,基础理论知识的确没那么重要;
但当你想往上走,想成为一名专业的架构师,数据结构、操作系统原理、数据库原理等基础知识是必不可少的,这些基础知识决定了你能在技术这条路上走多久,走多远!
4.不断学习
这不是什么鸡汤,而是程序员界一个残酷的现实。就拿游戏开发者来说 一个引擎unity3D,几个月就要更新换代一次,是想,你如果不学新技术根本就无法继续操作,如果技术一年不跟进,你和unity3D就会形同陌路。任何课程、资料都该看要看。
5.你是一个开发者,而不是一个码农
很多新人在入行前几年一直以一个流水线员工的心态做业务,这样是不行的。
于自身发展来说,长期重复的工作使你接触不到核心业务,限制你能力的拓深和发展;于企业而言,企业需要的不是只会搬砖的码农,而是一个开发者。
6.多读优秀的代码
山外有山,人外有人。
世界上比你优秀的程序员太多了,想要跟着大神学习进阶,还得感谢这个开源的时代。不错的平台有很多,里面有很多优秀的程序员们的代码,只要你需要就可以阅读。
希望这些建议对你有用,有所收获。
Ⅶ 有哪些关于程序员的心灵鸡汤
仅靠技术并不能成就好的编程。我碰到过一些非常聪明的程序员,他们能够产出令人印象深刻的算法,能够熟记语言标准,但却写出了最可怕的代码。这种代码,阅读起来很痛苦,使用起来很痛苦,修改起来更是令人痛不欲生。我也碰到过一些非常谦逊的程序员,因为坚持简单的代码,所以写出来的程序更优雅,更易于表达他的意思,和他们工作非常愉快。
Ⅷ 刚踏入职场的程序员,如何快速踏实地提升自己的能力
程序员提升主要靠实践,跟一个完整的项目能最大限度的提升项目能力,以后找工作不用愁啊,现实工作中很难达成,你可以去找找培养这方面人才的,提升一下自己,你看看愿码ChainDesk,有你需要的
Ⅸ 怎么成为一个优秀的Java程序员 而不是一个
入门-中级-高级一、JavaSE基础1.1、J2SEJAVA开发基础知识|Eclipse开发环境|J2SE5.0API|J2SE8.0新特性|多线程技术|Socket网络技术|RegularExpression|Java反射技术|Properties技术|各种实战设计模式|JavaDebug技术|面向对象设计原则详解|实例解决面向对象设计|面试题内部详解|面试答题技巧详解|AWT/SWING技术1.2、实战数据结构数据结构实战训练|数组、链表等常用数据结构实战1.3、正则表达式正则表达式基本语法。预搜索、断言、分组。JAVA操作正则表达式Matcher/Pattern1.4、反射机制JAVA的动态性、Reflection技术、JVM类加载器、Class对象、Method等。1.5、CHAT项目Chat项目通过完成一个模拟的在线聊天系统,主要锻炼大家对于TCP/IP、Socket编程、C/S模式的编程、线程的运用等方面的能力。1.6、坦克大战单机版/图片版/网络版这三个项目通过大家喜闻乐见的小游戏的形式来锻炼大家对于JavaSE综合运用的能力,并且能够初步运用面向对象的编程理念,锻炼初步的设计能力,并基本掌握多线程的编程。二、JavaWeb开发2.1、数据库技术Oracle基础管理;SQL语言PL/SQL语言;触发器、存储过程;MySQL,SQLServer简介;业界常见问题设计;数据库表的设计范式;数据备份与移植;多表连接难题详解;嵌入式数据库应用;2.2、JDBC技术JDBC基础;连接池技术;使用设计模式开发连接池;详细扩展与测试池效率;2.3、HTML4&CSS&JavaScriptHTML语言;CSS语言;JavaScript语言;JS常用模版;后台管理模版;DOM;JS操作CSS;JS操作DOM;ECMAScript;JS操作DIV;protoype;js基于对象编程;;Firefox和firebug调试技术;2.4、Bootstrap前端css框架,让我们的学生不会美工也能做出漂亮的页面;2.5、JqueryJquery基本技术;Jquery使用插件;2.6、Http协议深入使用HttpWatcher深入理解协议内部机制;2.7、JSTL标签库JSTL核心标签库,JSTL函数标签库、JSTL格式化标签库,JSTL之XML解析标签库、自定义标签技术;2.8、JSP&ServletServlet技术;JSP技术;JSTLTagLibrary技术;Filter&Listener技术;报表系统;FileUploading;Tomcat服务器技术;servlet过滤器和AOP编程;servlet监听器;2.9、SCM技术CVS初步;SVN简介;2.10、JavaWeb实战演练综合运用所学知识;HTML+CSS+JS;JSP+Servlet+JavaBean;FileUploading;分页技术;数据校验;MVC初步;Filter;Listener;2.11、XML技术XML+XSL+DTD/Schema;XML数据解析;XML应用详解;XQUERY技术;CAST技术(XML数据和对象互转);2.12、AJAX技术AJAX技术基础;AJAX技术框架;AJAX技术调试技巧;2.13、项目实战《基于servlet/JSP技术的电子商务网站》、《基于AJax和Jquery的BBS论坛系统》、《基于ApacheCommonsFileUpload的网络硬盘系统》三、主流框架技术及项目实战3.1、流行Web框架简介Struts2/spring4.x/hibernate4.x/springmvc/WebWork/mybatis等简介3.2、MVC模式ModelViewController模式深入3.3、SpringMVCspringmvc概述;springmvc的开发流程;springmvc基本配置;springmvc的注解开发;常用注解;service,control,reposity,reques+mapping,responseboby等3.4、Struts2.xStruts2的基本开发流程;action类的三种实现方法;XML配置的几种方法;Struts2国际化支持;Struts2异常处理;Struts2的验证框架;Struts2的多模块配置;拦截器;3.5、Hibernate4.xHibernate基本开发流程;ORM简介;模拟SQL语句的自动生成;hibernate的检索;性能优化一级缓存二级缓存查询缓存事务与并发悲观锁、乐观锁3.6、Spring4.x简单工厂模式;抽象工厂;工厂方法模式;Spring3简介;Spring的基本开发流程;IOC、DI;Bean的配置;SSH框架的整合;Spring的注解开发;SpringAOP开发代理模式静态代理、动态代理、CGLIB;3.7、MybatisMybatis简介;Mybatis的开发流程;配置文件;映射文件;面向接口的Mybatis开发;3.8、手工编写实战开发struts2.x框架亲自动手开发struts2.x框架,融入设计模式,让大家的对struts的核心机制烂熟于胸!3.9、手工编写实战开发Hibernate4.x框架芯学苑名师亲自带领你开发hibernate框架,让你真正将ORM框架理解透彻!3.10、手工编写实战开发mybatis框架完成另一个ORM框架mybatis的开发工作!3.11、手工编写实战开发Spring4.x框架Spring是最着名的框架之一!也是业界应用范围非常广泛的框架!是否对其核心机制有透彻了解,往往是高薪的关键!因此,芯学苑名师带领你完成spring框架核心机制的开发。当别人还在探讨如何使用spring时,你已经更上层楼!3.12、项目实战《基于struts2+spring+mybatis的电子政务系统》、《基于springMVC+hibernate的在线考试系统》