https://blog.csdn.net/iteye_12448/article/details/82005880前端
不肯定“再见理想”是“再见了,理想”仍是“再次燃起理想”,稀里糊涂地对这句话有感受。做为程序员,总会有本身的技术价值观和技术理想。工做七年多,开始痒了。java
程序员的生活老是喜忧参半,出入体面的写字楼,在小小的cubicle里虐杀脑细胞;偶尔有条件小资一下,常被工做、生活压力逼得点灯熬油;有时候 想,这么辛苦,不论作什么行业都会作的好,是否是入错行了?手放在键盘的时候,又享受投入思考的快感。或许注定是个程序员,限于天赋,或许注定是个庸庸碌 碌的程序员。程序员
前端时间由于跑到乡下,无法上网,网瘾一上来撞墙流鼻涕,百无聊赖开始勾画价值观和技术理想。人总追求快乐,天天清醒的十六个小时中,——程序员可 能有十八个小时,至少有八小时花在工做上,因此,为了过得快乐,工做必定要快乐。若是当前的工做注定无法使你快乐,就赶快结束它。毕竟,多数时候,拼命工做不如拼命找工做来得实在 。程序员固然不算光鲜的职业,但确实挺费脑子,若是你智商低于110,换个软件公司也注定痛苦,仍是直接换个行业吧。web
工做的基本原则是要保持身价,何为身价?不是你如今月薪多少,而是你如今跳槽,能拿多高的offer。这跟不少因素有关,主要因素包括面试
1.你当前薪水——HR每每参考这个给你定薪水;sql
2.你的资历——毕业的学校,工做年限,外企工做年限,你当前的title,在当前公司工做了已经几年…编程
3.你在面试中的表现——能发挥多少技术水平,英语对答如何。设计模式
像我这种身价的原本没资格讨论身价,但谁叫这是个人blog,个人地盘听个人呢.挨个乱喷一下。mvc
1. 关于当前薪水框架
假如你跟我同样笨,没有别的好办法,就只能多投入精力工做。在之前的博客 与神对话 里也提过一个程序员对于产品的价值。天天上班8小时,天天多专一一点,日积月累,作的事情会多不少,对本身的提升也会多不少。加薪或许是水到渠成的事,如 果不顺利,要么跟领导谈谈,或者直接闪人。不管如何,不要抱怨。善于抱怨的人表示他还不够强。你须要尊重权利,包括他人的权利和本身的权利 。
2. 关于资历
若是你毕业于名校,学历又好,一毕业天然就能进大公司。若是你还在江湖三流公司混,就得天天想着早点换工做。工做年限不总算是资历,好公司的工做经历才有用。要记得换工做是有成本的 ,我工做七年多,如今的工做是第五份工做,全部公司都诟病我不stable,这样的资历很难骗取信任,教训啊!聪明的你确定想到简历做假,但好公司都有reference check的,我仍是劝你别冒险。
3. 面试
千万记住,必定要预先作好充分的准备才能参加面试 。对于一个java程序员来讲,面试以前要翻一遍相似于 Thinking in Java的书,背一遍设计模式,复习sql,复习mvc框架,复习Hibernate,复习Spring, 复习Servlet spec。或许还有其余的,web service之类的。你能够想象,真要复习一遍,起码要三个月,这就是我认为换工做以前至少要预留出来的准备时间。机会有限,侥幸心理出去碰运气纯粹是 浪费机会。平时工做总有局限,看书是最有效准备面试的途径。
上面说的都是不登大雅之堂的事情,有热情的程序员总想成长为高手,我固然也有这样的愿望。问题是你认为何样的人算是高手,每一个人内心会有不一样的答案,关键是找出你和理想之间的差距并尽可能缩短它。高手必定不只仅是技术超群的,高手必然有高手的胸怀 。
本身有时候会考虑一些工做和技术上的原则,想到哪儿敲到哪儿吧。
关于工做:
做为程序员,你要关心产品 。这没什么可说的,这是职业道德问题。
做为程序员,你要尊重QA 。工做越久,就越以为QA对产品很是重要,程序员不少时候陷在具体的技术问题中,太多精力被牵扯住了。好的QA让程序员心安,可以有助于控制风险. QA应该有作最后决定的权利,因此QA须要对产品有很好的insight. 并且好QA须要明白,测试不是找bug的游戏 。
关于技术:
effective java 和 Refactor书都是总结各类编程原则的书,那些熟为人知的原则不说,我只说个人理解
static: Joshua在effective java里强调尽可能使用static method。这确定是没错的[这句话说错了,请看下面T.H.E的评论。他说的颇有道理。我是作应用的程序员,不暴露API给其余产品,因此一直都以为 IDE里移动static method没成本。但若是写Service层给未知产品用的话,耦合class的确有危险]。太看重这一点,就容易转到一个误区——多使用static field. 而static field有时表明了封装的问题,须要谨慎。
exception: 包括Thinking in java的Bruce, Martin Fowler等不少人都对checked exception不感冒。本身也思考了一下,你固然能举出checked exception的应用场景。你能够说某个方法它抛出checked exception是为了让caller处理exception.但你说的是让“这个caller”处理它。从重用的角度说,你并不预知全部被调用的情 况,因此不能排除一些状况下这个checked exception并不能获得特别的处理。这个想法更本质的原则是,写底层程序的时候,要装做不知道caller是怎么使用它的,哪怕是你本身调用它。
重复代码:全部程序员都对重复代码表现出深恶痛绝的样子。但我以为,重复代码不是定性问题,而是个定量问题 。能够这样考虑:三行代码反复出如今三个不一样的文件里,甚至在不一样的package里,这算重复代码么?四行代码呢?十行代码呢?曾经听到一个高手说,编程的核心在于重用。我不反对这个说法,但我更倾向于说,编程的核心在于可维护性 。对于重复代码,大段的重复确定要消灭的,三五行的重复不是不能够存在,可是要尽可能把它圈在一个小范围里,好比一个包,或者文件,或者方法里。有时候刻意追求“不重复”,反而让程序变得别扭。
技术存在的价值在于可以解决现实问题。你能够对技术狂热,但不能忘了这个客观事实,技术须要实现商业价值,须要最求投入产出比。最最根本的原则,是pragmatic