Ⅰ 18条法则让程序员升职加薪!
好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系。下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强、缺陷更少的程序。
1.不要自我重复
这也许是在编程开发这最最基本的一个信条,就是要告诉你不要出现重复的代码。我们很多的编程结构之所以存在,就是为了帮助我们消除重复(例如,循环语句,函数,类,等等)。一旦程序里开始有重复现象的出现(例如很长的表达式、一大堆的语句,但都是为了表达相同的概念),你就需要对代码进行一次新的提炼,抽象。
2.提炼原则
跟“不要自我重复原则”相关,这一原则是说“程序中任何一段具有功能性的代码在源代码文件中应该唯一的存在。”
3.保持简单
简单化(避免复杂)永远都应该是你的头等目标。简单的程序让你写起来容易,产生的bug更少,更容易维护修改。
4.不要开发你目前用不到的功能
除非你真正需要用到它,否则不要轻易加上那些乱七八糟用不到的功能。
5.用最简单的方法让程序跑起来
在开发时有个非常好的问题你需要问问自己,“怎样才能最简单的让程序跑起来?”这能帮助我们在设计时让程序保持简单。
6.不要让我动脑子
这实际上是SteveKrug
关于web界面操作的一本书的书名,但也适用于编程。主旨是,程序代码应该让人们花最小的努力就能读懂和理解。如果一段程序对于阅读者来说需要花费太多的努力才能理解,那它很可能需要进一步简化。
7.开放/封闭原则
程序里的实体项(类,模块,函数等)应该对扩展行为开放,对修改行为关闭。换句话说,不要写允许别人修改的类,应该写能让人们扩展的类。
8.为维护者写程序
任何值得你编写的程序在将来都是值得你去维护的,也许由你维护,也许由他人。在将来,当你不得不维护这些程序时,你对这些代码的记忆会基本上跟一个陌生人一样,所以,你最好还是当成一直在给别人写程序。一个有助于你记住这个原则的办法是“写程序时时刻记着,这个将来要维护你写的程序的人是一个有严重暴力倾向,并且知道你住在哪里的精神变态者”。
9.最少意外原则
最少意外原则通常是使用在用户界面设计上,但这个原则同样适用于编写程序。程序代码应尽可能的不要让阅读者感到意外。也就是说应该遵循编码规范和常见习惯,按照公认的习惯方式进行组织和命名,不符常规的编程动作应该尽可能的避免。
10.单一职责原则
一个代码组件(例如类或函数)应该只执行单一的预设的任务。
11.最小化耦合关系
一个代码片段(代码块,函数,类等)应该最小化它对其它代码的依赖。这个目标通过尽可能少的使用共享变量来实现。“低耦合是一个计算机系统结构合理、设计优秀的标志,把它与高聚合特征联合起来,会对可读性和可维护性等重要目标的实现具有重要的意义。”
12.最大化内聚性
具有相似功能的代码应该放在同一个代码组件里。
13.隐藏实现细节
隐藏实现细节能最小化你在修改程序组件时产生的对那些使用这个组件的其它程序模块的影响。
14.笛米特法则
程序组件应该只跟它的直系亲属有关系(例如继承类,内包含的对象,通过参数入口传入的对象等。)
15.避免过早优化
只有当你的程序没有其它问题,只是比你预期的要慢时,你才能去考虑优化工作。只有当其它工作都做完后,你才能考虑优化问题,而且你只应该依据经验做法来优化。“对于小幅度的性能改进都不该考虑,要优化就应该是97%的性能提升:过早优化是一切罪恶的根源”—Donald
Knuth。
16.代码复用
这不是非常核心的原则,但它跟其它原则一样非常有价值。代码复用能提高程序的可靠性,节省你的开发时间。
17.职责分离
不同领域的功能应该由完全不同的代码模块来管理,尽量减少这样的模块之间的重叠。
18.拥抱变化
这是Kent
Beck的一本书的副标题,它也是极限编程和敏捷开发方法的基本信条之一。很多的其它原则都基于此观念:面对变化,欢迎变化。事实上,一些经典的软件工程原则,例如最小化耦合,就是为了让程序更容易面对变化。不论你是否采用了极限编程方法,这个原则对你的程序开发都有重要意义。
其实都是一些老生常谈的话,重要的是在于你怎么去落实。你说呢?
Ⅱ 作为IT 程序员 怎么可以升职加薪涨工资
程序员升职加薪当然是靠技术能力了。所以一定要有过硬的本领,将自己的技术强项做到最优。当然也跟你的综合管理能力、所处平台是息息相关的,找一个适合自己的工作环境(感觉到轻松自在,利于成长的),多学习新知识新能力,包括专业知识和管理知识。大多数比较有能力的人要么是技术出色,要么是管理出彩,所以只需要让一项发光,另一项辅助就可以了。
希望可以帮到您,愿您早日升职加薪,谢谢!
Ⅲ 程序员怎么升职
1.大公司:打下手---代码工--- 程序员---项目组长---项目经理
2.小公司:代码工---程序员---项目组长---项目经理
虽然小公司容易成骨干,但项目组长拿的钱也行没有大公司程序员的高
也许很多程序员都碰到过,自己的技术能力已经很棒了,可还是无法升职,其实程序员要晋升到管理层,不仅仅要技术好,沟通、应变力和为人处事也是非常重要的。
1. 大胆的说出自己的想法
大多数程序员都不善言辞,沟通能力不够。而一个正常软件项目开发,都是团队合作模式,同时也是按照用户的需求进行分析梳理。如何很好的获取用户的需求,并与用户及团队内部之间沟通,是工作能力突出的重要的一环。平时,多与周边的同事沟通,周末多参加户外活动,努力的将自己圈子打开。平时多发表自己的看法,不用担心会受到批评,说出去才是关键。
2.要注重细节
公司团队里很缺乏一个项目助理,然后不得已选了一个程序员小伙,让他兼职管管样机、发发通知,这个小伙丝毫没有怨言,除了自己的代码照常写的非常稳妥之外,这些小事也处理的非常好,每天加班加点也要完成。后来没多久他就当上了主管。一个有能力把小事做到极致的人,也必定有潜力把大事做好。
3.听取别人意见,取别人长处
人都会犯错,一般犯错的时候领导会直接指出来,有些人每次听完之后都会去反驳这些理由,而且还觉得这并没有达到自己想要的,然后他交上来的东西依然没有任何改变,而有些人都会说:我以后会注意“、我会按照您的要求去执行、这是我的想法不知道您觉得如何。然后接下来就看到他的改进。
一般领导在明确指出你的错误,不管是耐心的说教还是严厉的批评,你都应该抱着“有则改之无则加勉”的心态,如果你要反驳,就需要准备充分的理由和依据。
面对领导的意见,要弄清楚其准确意图,然后实施针对性的改进措施。这就是团队里的游戏规则和生存之道。即使不是领导,是平级和下属,也应该采用类似的心态和应对方法。
4.不断提高自己的技术
一般程序员都会有自己的职业规划,在什么样的年龄达成什么样的成就或者技术水平的一个整体提升,目前从技术提高的曲线来看,新手的技术提高速度最快,无论从时间还是急迫性两个方面对新手的压力挺大的。而到了成熟阶段,其编程时间也大大缩短了和学习技术的迫切性也降低了,所以技术提高速度就慢下来许多。所以,你需要时刻看看自己的技术发展之路,哪些走的比较踏实,哪些走的比较急促;哪些是自己的技术特长,哪些是自己的技术薄弱环节。反思后一定要抽出时间抓紧学习,把自己的技术上明显不足的地方给补上,这样程序员的技术水平加上丰富经验和工作能力会使得自己更加具有实力,可以应付各种挑战,为今后的发展铺平道路。
Ⅳ 程序员怎么升职
大公司
1,打下手(1-3月)-----代码工(3-8月)----
程序员(1年到?)------项目组长(1年半以上 看机遇)
------项目经理(3年以上 看机遇)
小公司
1,代码工(1-3月)----程序员(3月到8月)------
项目组长(1年左右 优秀的)-----项目经理(2年以上)
虽然小公司容易成骨干 但项目组长拿的钱也行没有大公司程序员的高
-------------------------------------------------------
以上是正常发展顺序
以外:机遇好、跳槽可以打破上面的
PS:如果不是比较大的公司 在30岁还不是项目组长的话 建议转行或做生意
-------------------------------------------------------------------
软件测试师、软件工程师、系统分析师、软件架构师
前两者那个好 目前不好说
后两者级别高点。。。处于CTO级别
Ⅳ 对于女孩子来说,程序员这个工作可以吗
不知道大家在念书的时候,有没有留意到这样一种现象,工科类的院校女生可以说是凤毛麟角,有的专业几乎是清一色的男生,就算是有女生,也只有一两个。
难道女孩子都就读于文科类的院校了吗?其实不是,不少理科类的大学女生也不少的,譬如软件开发的前端开发。
类似这样的问题或许你也遇到过:
作为一名前端开发人员,其实跟性别关系不大,我们要做的就是在保持好奇的同时,努力深入挖掘自身的潜力。
按时交付能力随着前后端的分离,前端开发岗位得到了不少女生的青睐。从事前端开发的女生也越来越多。
对于刚步入职场的前端开发人员,对技术深度要求一般都不高,要求不高并不代表安排给你的任务就可以延迟,还是需要保证按时按质地交付。
这就需要前端人员在团队沟通协作方面,要建立好与对方的充分信任,并打造个人的靠谱标签。可别小看这个标签,这个标签可能会影响你能否升职加薪。
这就是为什么有的人工作很勤奋,暗地里累死累活,加班加点,到头来客户和领导都不满意。之所以出现这种情况,大多数情况下是因为我们忽略了沟通,没有和对方建立好充分的信任。
Ⅵ 程序员晋升攻略
一个成熟的中大型组织中,专业人员会有不同序列技术级别上升通道,比如腾讯及网络的T系列,阿里的P系列等。一些公开介绍的腾讯职级情况如下。
腾讯的职级系统有26个职业通道,如果你是一个一张白纸,没有任何职业能力的毕业生,可以从这个26个通道,比如行政、财务、设计、运维、开发、运营、产品.的任何一个1-1级开始,修炼,打怪升级,直到千万年薪。如同一个完整的人生指引。横轴是26个职业通道,专业技能各不相同,纵轴是4个大层级。
通过职级的设定,大部分员工不需要更换工作,就可以在已有的岗位上通过自己的技术提升及项目贡献获得更高的级别,从而得到薪资的提高、专业能力的肯定及个人的专业声望。大公司的职级通常也得到业界大范围的认可,事实上也可以在多个公司之间平移。因此程序员可以在不改变工作岗位的前提下获得一个长期成长的通道。缺乏明确的成长通道也是大量小公司留不住人的一个困境,在小公司中,由于缺乏透明的、稳定的职级通道以及配套的薪酬体系,造成大量资深员工流失。
在公司有合适上升通道的情况下,工程师每年都有机会从当前职级晋升到更高的职级。在大部分公司里,对于高阶的晋升,会由公司相关权威专家组成的评审小组(通常是公司的技术委员会)来进行;低阶的晋升可以由员工的直接或者跨级上级决定。本文讨论场景主要是需要评审小组审批、候选人需要答辩的晋升,它要求候选人有更高的综合能力、专业影响力、展示能力及逻辑表达能力等。每年的年底也是大部分公司晋升评定的时间,因此本文谈谈对于晋升各种问题的看法。
本文主要是针对程序员的情况进行探讨,但所有技术工种如测试、运维以及其他专业工作岗位的人员如产品经理也大多同理。
Q:晋升的申请材料怎么写?
当你思考晋升材料怎么写的时候,说明你已经获得了晋升的机会,这在很多公司里不是一个容易的机会。管理层通常只从符合条件的人员列表中挑选部分优秀的人员进行晋升提名,因此当上级跟你沟通这次机会的时候,说明你半只脚已经踏入了新的一个职级。
晋升无非是评估候选人的专业能力是否满足高一个等级的技术要求,候选人需要通过自己的参与项目的贡献,比如业务价值、技术成就、技术影响力等,来证明技术能力的提升达到更高级别的要求,项目贡献及技术提升两者缺一不可,因此晋升材料主要围绕这两个中心来展开。中级的晋升主要看岗位的成绩及贡献。高端的岗位可以归纳成公司级专家及行业专家。公司级专家指精通公司业务相关核心技术,在相关领域有较好积累,并且做出独到的贡献。行业专家则需要相关专业能力具有行业的领先能力,并且专业能力最好属于公司的核心技术。
Q:每一级别的评估标准是什么?
在大部分公司一样中,每个技术等级会有相关的要求,比如技术能力、影响能力、协作能力等。在评审阶段,评委会根据要求进行候选人评估。在实践上,也有很多采用标杆人物对比的方法。评委集体选择几名处于相应级别最低能力、中等能力、和较高能力的在职员工,与申请人相对比,如果申请人处于这些标杆之中,正常应该处于中间能力人左右,则认为候选人符合条件,如果候选人处于最低能力以下,则认为候选人不符合申请相应的职级。
评估标准在人力资源领域比较知名的是Hay的评估方法,它对所有岗位的职级都适用,据说华为就是直接引入Hay的职级体系。
互联网公司的级别,最容易理解的程序员职级可以按下列方法来区分(如腾讯、新浪等公司):
Level1:能在他人指导下完成工作;
Level2:能独立完成业务所需常见工作;
Level3:能规划及完成业务所需常见项目,并能指导他人完成;
Level4:公司及行业专家;
在操作层面上,每个级别会进一步继续细分几个子级别。当然这种划分方法只是从某一个维度去划分,实际要考虑的因素更多,大多也会落到Hay的体系上去。
不少公司并没有明文各个等级的详细要求,候选人在不能确定更高职级的明确要求的情况下,可以自己借鉴上面标杆对比的做法,检查自己与更高职级人员差别的方法来准备自己的晋升材料。
Q:晋升有什么好处?
获得薪资及其他福利提升。越是正规的公司,薪酬范围跟职级是严格对应的,每个员工的薪酬会落到所在职级的薪酬范围内。尽管也有个别人员由于岗位的特殊性或稀缺性,出现薪酬与职级范围不匹配的情况。因此大部分人员,提升职级是获得薪酬提升最自然的方法。另外,大部分公司中,股票期权等福利需要员工满足一定职级的门槛才能获得,比如符合上述分类的Level
3的条件。
晋升在公司里面自然可以获得更好的专业能力的肯定及个人的专业声望;一些重要的项目,通常会由高级别的专业人员来带领及指导,高级别的人员通常可以获得更多历练的机会。
晋升还可以获得业界的声望及认可,大公司的职级通常也得到业界大范围的认可,在更换工作时候,至少可以在另外一家公司获得平级的职级。
Q:技术晋升中技术能力与非技术业务能力的比重?
技术能力还是非技术的业务能力是评委以及管理层纠结的问题,有不少案例是候选人能非常好的完成岗位任务,工作积极主动,但是技术方面略逊一筹,而且进展较慢。通常管理层很希望这种人能得到晋升,毕竟这些人员是达成业务任务非常需要的人员。但从另外一个角度去看,技术晋升它不是项目贡献排行,原则上需要候选人在技术上有明显的提升,能够利用对技术更深理解去提升效率或进行技术创新,更好的解决未来面临的问题。而且放到业界,技术人员(非管理岗)也是按技术能力高低来决定薪资及等级的,所以评判是否有技术能力的提升是候选人能否得到晋级的一个刚性条件。
Q:怎么看待某些人员专业能力与业务贡献脱节的问题?
一些团队可能会存在脱离业务研究技术的人,对参与项目漠不关心。纯粹脱离公司环境的业务去研究技术在大部分组织里面是比较有争议的。在这些人员技术能力有明显提高的情况下,如果继续给这种人晋升会不会带来一些负面的问题,比如会诱导其他工程师脱离业务去研究技术。因此比较好的方法是评判候选人是否通过项目贡献体现了技术提升。这样脱离公司环境去打怪的人员自然就没有了生存土壤。另外,管理层从公平性的角度出发,可以设置晋升准入条件,比如绩效需要达到某个优秀分以上。
Q:直接上级是否可以决定下属是否晋升?
在大部分公司中,对于低阶职级的候选人,直接上级及跨级上级能发挥较大影响力,大多可以由直接或者跨级上级来决定。而越高阶的晋升,直接上级发挥的作用越小,通常由公司级别的专家小组来进行评审。因此高职级的同学在日常的工作中,需要更好的平衡上级的要求及合理的技术架构之间的关系,尽可能的多的具备独立思考的能力,更多的利用技术驱动项目带来贡献,并进一步体现自己的技术成绩。
Q:评审时时候评委喜欢提的问题?
项目的难点,评委主要通过这些问题来判断候选人面对复杂问题的应对能力。由于是技术答辩,候选人应该尽量多的将问题放在重大技术问题的解决上。
项目的技术贡献,候选人通常会通过项目进度的方式描述如何参与项目,但评委比较关注候选人的技术输出以及技术含量。
项目中的个人贡献,原理同上,不少候选人参与过一些大的公司明星项目,因此对晋升答辩比较自信,但如果只是在大项目中做一些辅助执行类的工作,通常也不会得到较大的认可,反而会造成材料假大空的印象。
Q:怎样看待评委的刁难问题?
候选人用朴素的方法来介绍自己的项目,尽量客观的方法来描述自己的成绩。当被问及刁难及质疑性问题时候,尽量不要有防卫心态,不要将自己的项目中的不足设法合理化,心平气和的接受评委看到的不足。
Q:评审时候选人容易忽略的问题
指导及影响他人的能力。在一个组织里面,独行侠未必能得到好评,帮助及带领周围技术人员一起成长会更容易得到认可及欢迎。
非岗位要求的贡献。能够按照岗位的要求完成工作只能满足合格的水平,主动思考及完成超出岗位要求的工作更容易得到高分。
Q:我工作很努力,经常加班,是否必定会晋升?
没有直接关系。评审主要看技术能力提升、技术贡献及通过技术获得的成就。与是否努力是否加班没有必然关系。当然,工作努力的人员通常也通过更多时间投入在技术领域获得了比较好的成长,因此有更大的晋升可能。
Q:我在我的team里面公认是技术能力最强的,甚至别的部门一些职级能力高的能力不如我,是否必定会得到晋升?
这种案例失败概率还是不低,关键点还是看候选人近期项目是否能充分体现出高级别所具备的能力,如果候选人近期做了很多零散工作,虽然具备很强的技术能力,也较难得到一个合格的分数。
Q:我刚毕业,怎么才能获得快速的职级晋升?
刚毕业的同学还是更多的学好基础的知识,乐于学习,更多的参与实践,在工作中发挥更大的价值,不要刻意追求晋升与否。晋升更多的是一个能力到达的伴随物而不是追求的目标。如果你具备以上素质及习惯,即使在当前企业未得到认可,可以在一另外一个的环境得到实现,只是一个短暂的时间差问题。
Q:我公众场合的展示及表达能力不强怎么办?
大多评委也是技术背景出身,因此对展示表达能力并不是特别在意,反而过于华丽的展示材料会引起评委反感。但在另外一个方面,展示材料的层次关系、论证问题的因果关系的逻辑需要得到清晰的表达。评委不会特别介意候选人念稿,但是会介意材料结构及逻辑混乱。
Q:应该以什么样的心态去看晋升?
晋升大多时候是个僧多粥少的游戏,而且评审的价值观也存在单一的可能,在有限的评审时间,考虑到准备的充分与否,候选人对于评审重点的理解等,未必每一个候选人都能得到合适的展示。评委也很难在短时间对候选人进行充分了解,因此评审通过与否未必能完全体现候选人的能力。
候选人最重要的是调整好自己心态,“不以物喜,不以己悲”,明白自己核心价值所关注的事情(参看拙作选择学习目标的方法与自然法则),将更多的精力投入到自己关注的事情上去,并产生相应的成果及影响,这个比一个晋升结果意义要大得多。晋升评审可以视为是一个职场游戏,不少得到晋升的人员后面无所成就的案例也是层出不穷。大部分情况下,晋升通过与否仅是薪资的一个损失,只要候选人明确及坚持自己的目标,其他包括个人能力,职业生涯、个人影响力基本没有实质性的影响。
Ⅶ 在公司程序员的升职步奏
大公司
1,打下手(1-3月)-----代码工(3-8月)----
程序员(1年到?)------项目组长(1年半以上 看机遇)
------项目经理(3年以上 看机遇)
小公司
1,代码工(1-3月)----程序员(3月到8月)------
项目组长(1年左右 优秀的)-----项目经理(2年以上)
虽然小公司容易成骨干 但项目组长拿的钱也行没有大公司程序员的高
-------------------------------------------------------
以上是正常发展顺序
以外:机遇好、跳槽可以打破上面的
PS:如果不是比较大的公司 在30岁还不是项目组长的话 建议转行或做生意
-------------------------------------------------------------------
软件测试师、软件工程师、系统分析师、软件架构师
前两者那个好 目前不好说
后两者级别高点。。。处于CTO级别
Ⅷ 做程序员多久能升职
在北京的话,一般坚持住第一年,就能涨点工资,一般3千-5千.工作3年,会涨到5千-一万,5年以上,会到1万到-1.5万.5年以上就很难在上升了.
不过这都要看个人的努力和跟的项目,不是所有程序员都能达到
Ⅸ 程序员如何才能晋升为优秀的高薪架构师
晋升为优秀的高高兴框架是程序员在工作的时候,一定要认真的工作,努力的学习,而且还要进一步的去深造自己,把自己的各项工作做的更好,这样才能够呃,今生为优秀的高兴框架时,我以后的呃学习和工作更加有前途展望。