A. 程序员年终总结范文
程序员年终总结范文7篇
程序员需要对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。下面我给大家带来程序员年终总结范文,希望大家能够喜欢。
过去的一年,在马总的亲切关怀,伍经理的殷勤管理与认真指导,软件研发部的团结协作,以及在公司这充满奋斗的环境下,我以严肃认真的工作态度和百折不饶的精神,努力的完成了公司的各项工作,在软件研发、团队协作和个人成长上也取得了一定的成绩。在公司一年的工作已经结束,特向公司总结汇报如下:
第一部分工作总结
一、软件研发
根据公司的安排,项目的需要。在自身的努力、伍经理的帮组,团队的合作下,克服重重技术困难,增长了工作经验,收获丰盈:
1、asp.net开发
以前我在其他公司也做过一些开发,但是底层和架构与页面样式我都是没有涉及到的。通过这一年在本公司的的这些项目程序中的锻炼,我成长了,我学会了很多很多。
首先,面向对象语言的收获。对于当前编程的主流思想是对象,任何事物都可以用对象来表示。以前理解这些话很费解都是从表面上理解,没有从深入的体会,通过这次项目的深入,不管是数据还是外部一些条件我们都可以抽象成对象,都可以用对象来表示,具体可以用语言中的类方法等。__如此,C#如此__也同样如此。
其次,具备独立完成vb.net知识方面的能力。以前没有做首巧过vb的东西,加上这次深入的做,这次涉及到的领域也非常广,常用的重要的都有涉及,并且还补充__实际操作中空白的部分。通过这一年的开发,在.net方面我能胜任这方面的工作,能独立完成这方面的工作。
再次,C#方面存在一些不足。通过C#这次软件的开发,也发现自己的不足,如基础知识掌握不牢,缺纯芹备乏编程整体思想。这些都是需要在工作中完善和改进的。
2、数据库开发
数据库是伴随着项目以来用的最多最平凡的技术。以前对数据库只是会一些简单常用的操作,经过这一年项目的实战,对数据库的操作增加了一些丰富的经验。为以后的工作和经验的积累都奠定了坚实的基础。同时在项目中还用到了Oracel与access数据库,这是我的收获·
优点:能熟练的运用数据库技术进行开发。特别是对sql数据库的操作,经过这么长时间的积累,基本上能合理的设计和新建数据库,同时在数据结构上也加强了对数据库的理解。通过项目的实践现在能熟练使用和编写多种Sql语句。还掌握了一些关于数据库优化Sql语句优化的方法,能进行一些简单的优化。
缺点:数据是一门比较先进的技术,并不是你会写一些Sql语句,能建几个数据库你就是数据库工程师。要成为一个好的数据库管理员是要经过长时间的工作积累。针对自己的不足,在以后的工作和学习中多接触,多运用新的知识点。充实自己的经验和知识储备。
二、团队协作
上面的成功与收获,除了自身努力外,以及公司的支持。是这个团队铸造了我。我们这个团队也是因为有了我们这些拼搏协作的队员,使得它成为一个具有务实、拼搏、创新精神的团队。我与软件研发小组是一个整体,这里的团队
总结也就是我在这个团队中的收获。
务实:公司下发的任务,下发的工作,件件都是用心去做的。我们这个团队中没有一个人在工作的时候做了工作以外的事情,都是实实在在的做跟工作相关对公司有益的事情。相信在伍经理的带领下现在是这样,以后同样也是这样。
拼搏:公司给的每一个任务不管它多难,如果工作没有完成我们会晚上加班,也要尽可能的完成当天的工作。如果工作实在忙,为了赶进度我们放弃周末休息时间也要尽可能的使项目提前。
创新:现在我们开始项目的时候都会进行研讨,一般都会进行一个效率和逻辑的分析与讨论,保证程序做毁正确的前提尽可能的提高程序的效率。
互助:我们小组内只要任何一个人出现技术或其它的问题,我们都会彼此都会尽可能的去帮助他。不会因为某一个人而拖住整个项目滞后。
交流:我们在项目中会及时沟通自己的收获,特别是一些针对性的技术问题。这样可以省了很多重复研究的时间,这是一笔很可观的时间。
在交流中只要我会的,我懂的,我不会去吝啬。我会积极的去与你交流,我的团队名言“人强团则强,人弱团则削”。
三、个人成长
通过公司这快一年的锻炼与学习我真的进步了很多,不管从技术上还是做事上,都不像以前那样了。我在公司学到的懂得的使我飞速成长。
技术上:不管从语言上还是做事的逻辑上都得到了很大的提高。现在在软件小组里面自己能独立完成一部分工作,承担自己的责任。
第二部分__年工作设想
通过今年的实践和学习,明年是一个新的开始,立足当前的优缺,肩负起一个软件工程师应有的工作和性质。希望为公司明年的发展尽的努力,也希望自己明年有更大的收获。明年计划在以下几方面有所突破,有所建树:
一、在编程语言掌握方面,达到本公司的编程思想—不被语言所束缚。在这方面伍经理是我的榜样,积极努力的提高自身的技术水平,真正做到不被语言所束缚。
二、数据库方面,在当前已有的基础上提升自己,明年自己给自己定的目标是,能非常合理的去使用数据库各类技术,掌握更多的数据库优化思想和技术点。有时间多向许总交流。
三、加强软件开发的辅助性知识使用和积累。针对当前软件开发中的一些情况,明年更加积极的学 习 Ajax和Flex等技术。能辅助性的把软件做的更好。
四、工作质量上,现在编程我是属于会写会编和局部效率,并不是全局的效率,明年一定要做到,编一个高效率的代码。这就要综合上面的三点,才能使其达到全局的高效。
记得去年写总结的时候心情很差,抱怨了很多当时的工作以及领导花生,那个时候的愿望是找一份新工作。没想到刚进入12月我就找到了。
不得不说这一次求职我是认真的把它当作一个工程去做,客观得对自己进行了定位,而且非常重要的是明确我想要的工作到底是什么样的。我需要的是让我每天的8小时能够享受工作的快乐。
投简历面试的过程非常折磨人,尤其是我的处境(每天很大压力,完全是自我打磨的阶段)。
我清楚地记得面试现在这份工作那天是某个周六,我的经理娃娃和技术主管T同意我周末面试。一共4个小时,那绝对是一个互相争取的过程。他们对于工作的热情打动了我,觉得和这样的团队合作一定可以有火花。
真是幸运,当我正视错误,用行动做出改变的时候,找到了一份我要的工作。入职三周已经和团队磨合得很好了,用同事的话说就是觉得我已经加入很久了。
这里不得不说一句我们的团队,一个老中青结合富有战斗力的集体,而且还不乏八卦调节生活。每个人都特别,合作也会有摩擦,但是整体运作非常协调,开发速度和效率都高。从他们身上我看到不同的工作态度,生活态度。这些对我的职业规划都有着潜移默化的影响。领导“娃娃”也非常合适我目前阶段对于领导的需求。如果说几年前我初出茅庐需要的是一个有时间且肯耐心带我的领导的话,现在的我需要的是一个可以给予我充分信任的上司。“娃娃”信任我,从刚进入公司就如此。在熟悉产品阶段我提出的问题和建议他都认真的听了,而且给我时间让我按照自己的想法作出修改。后来我也喜欢把新想法跟他说,当我们带着创意去和老板谈的时候他是我坚强的后盾。
这一年下来我在纯技术上的提高并不多,我们所面向的客户并不要求尖端的技术。经验主要体现在理解需求上面,如果说前两年我还需要领导把需求说得很明白,还会为马后炮而耿耿于怀。那么今年应该算是个分水岭。现在的我不需要领导花很久时间来讲需求,也不用每一步都需要认可再做接下来的工作。总的来说就是技术和业务之间的距离越来越近,而且还可以想到客户将来会需要什么(我曾经的领导应该很欣慰,他培养的人终于达到他说的bigpicture了)。
马上到年末了,自己也对今年做了一下总结,自己有哪些优点,有哪些还需要加强。每当我想到今年比较满意的地方,对比之前,就会有这样一个思考:如果以前的我要是知道这些该多。在这里给大家分享一下经验,让新人少走一些弯路。
做事要积极主动,态度决定一切
说这些,可能有人会觉得,这些都明白,都是大道理,只是怎么样执行的问题,下面我举一个真实的例子。
我曾经带过的两位新人,A君上班,交代给他负责的东西,是永远没有结果的,我交代给A做一个数据展现的部分,A君告诉我他不会JSP的技术,我给他推荐了一些书籍以及我曾经写过的demo,并告知不能光学,要有成果展示,可以通过这个数据展现来学习jsp技术,但是最后的结果是他下班就走,走之前没有跟我汇报任何进度,我最后只能换人做这个东西。这里我并不是推荐职场新人要加班,但是做事的态度要认真负责,新人可以对技术不懂,但是要有负责的态度,起码应该汇报一下今天的进度。
再来对比一下另一位B君,也是同样接到这个任务,首先B君懂jsp,但是他不懂JSTL,我给了他时间学习,结果B君在很短的时间内,学了JSTL并将总结发给了我,我相信这么短的时间内,他毕竟掌握的有限,但是学习了,又有总结,这种态度令我非常满意。在第二天,B君就把数据展示做出来了,而且确实是我想要的样子!不得不说,同样的事,同一水平线,不同人做的时候,态度和积极性就决定着一切,所以一个人只要工作态度好,我相信这个人的工作绝对不会差。
提问的技巧
作为一个新人来说,不懂就要问!这里我要说两点:
1、如果是单纯技术上的问题,如果可以google到的,我认为就可以自己消化掉!问的问题一定要先google,然后带着自己的想法,去问一些有经验的人,收获会更大!
举个例子:曾经的我,埋头写代码,那时候很怕上司知道自己不会这,不会那!所以拼命的掩盖自己不会的东西,自己查资料,下班了问同学,上论坛发问。但是由于逻辑和现实需求不一样,所以结果并不理想!如果那个时候,我把自己不理解的地方和上司谈,也许会很快的就能完成这个任务,而不是返工。
2、如何提问?问谁?
很多新人不知道如何提问,也不知道问谁。我的建议是,先把你要问的问题梳理好,可以有电子版或者打印版的整理,方便其他同事查看和解答。然后就是提出的问题,要让回答的人感兴趣,这样他不但会给你解答问题,还有可能将问题延伸,让你学到更多的知识。对于如何让回答的人感兴趣,就是仁者见仁,智者见智了!看个人发挥了!
对于问谁,我觉得你不了解其他同事的时候,要先问你的上司,当你了解了你的同事每个人擅长的领域之后,就应该把自己的问题归类,然后问最擅长的人。这样会事半功倍!
任务分解
不知道大家做事都是怎样一个逻辑,当年的我做事就是一团糟。当我拿到一个日志分析的任务的时候,就想着做,埋头苦干,但是自己越做,脑子越浑,完全找不到头绪。后来,上司找到我,给我做出了任务分解,我按照任务分解来做,清晰了很多。直到现在,我还保持着做任务分解的习惯。
其实做任务分解可以帮助你更深入的了解你要做的事情,任务分解包括一个事情,你需要分几个步骤去做,每个步骤要做到什么样子,什么程度,多长时间做完。几个步骤为一个里程碑。如果具体做的时候发现一个步骤的事情做起来超过了一个星期,我觉得这属于任务分解的不够细,需要将这个任务再次分解,让你的工作更透明,更有效率。可以使用一些任务分解工作,将自己的工作路线和步骤明确,要善用工具。
主动汇报+主动沟通
曾经的我就是埋头苦干,但是从不汇报进度,其实这样是不好的。后来我的领导找到我,问我的进度,才发现意见有所分歧,理解有差距。索性只能重新来过。
新人一定要注意这个事情,有情况,有成果,有可展示的东西就一定要及时的主动汇报这个事情的进度,做成果展示,在对事情有不理解的时候也需要主动的沟通,使之和所有参与人员的意见一致再去做,保证你做的事情的正确性和有效性。
记住一句话:当领导找到你问进度的时候,你是被动的!
上面几点,看似简单,做起来很难!到现在任务分解和提问很多职场新人是不具备的,需要慢慢磨练,但是我们相信,只要有良好的态度,良好的习惯,工作一定会慢慢越来越好!相信自己的明年会越来越好!
20__年即将过去,新的一年即将来临。为了在新的一年里不断的提高自己的工作效率,现将这一年的工作总结如下:
一、思想方面
严格按照一个程序员应有的素养来约束自己,爱岗敬业,具有强烈的责任岗和事业心,积极主动认真的学习专业知识,工作态度端正,听从公司的安排,积极配合客户完善数字化校园系统。
二、工作方面
热爱自己的本职工作,能够正确认真的对待每一项工作,工作投入,热心为大家服务,认真遵守劳动纪律,按时上下班,有效利用工作时间,坚守岗位,需要加班完成工作的要按时加班加点,保证工作能够按时完成。在这一年多的时间里面,我本着把工作做的更好这样一个目标,主动了解公司的开发项目流程,请教他们开发技术上的问题。
三、工作心得
1.在这一年多的时间里面,我参与的都是团队合作的项目,无论是自己还是同事,我们都将就团队精神。在信任自己和他人的基础上,思想统一,行动一致,这样的团队一定会攻无不克战无不胜。我们的很多工作是一起完成的,在这个过程中,大家互相提醒和补充,大大提高了工作效率,所有的工作中沟通是最重要的,一定要把信息处理的及时,有效和清晰。
2.每一个项目在开始着手的第一步,一定要和客户把需求沟通清除,只要了解项目的需求,才有可能真正做好一个项目。我们需要向客户提出,要求客户提供所有涉及该项目的资料,每次与客户见面都需要熟悉业务与程序的程序员随时记录需求。
3.工作中,将任务详细化,详细到每个页面,甚至是一个页面中的图片什么时候做好,做好到什么程度,这样把工作进度有计划有方向的定下来,做事很有效率。
4.每天的工作小结真的很重要,这让我们每天都有计划的知道自己干了什么,不是漫无目的的工作,所以我们应该养成,日记、周记、月记、年记的工作习惯。
5.工作并不是一成不变的,也许有一天你要去其他岗位帮忙,所以同事之间的技术要相互学习,也许有一天,公司需要你发挥其他的技能帮忙,所以相互学习也是很重要的。
四、工作教训
在公司工作的期间,我也发现了自己离一个符合公司要求的程序员还有很多差距,主要体现在工作技能与工作经验的不够,也是我以后要在工作中不断磨练和提高自己的地方。仔细总结一下,自己在工作中主要有以下方面做的不够好:
1.工作的条理性不够清晰,要分清主次和轻重缓急。
在开发时间很仓促的情况下,事情多了,就一定要有详细而主次分明的计划,哪需要立即完成,哪些可以缓缓加班完成,在这方面还有很大的优化空间。
2.对流程、业务需求不够熟悉。
在工作中,发现因为流程或业务需求的问题而不知道如何下手的情况有点多,包括错误与缺漏还有当时设计考虑不到位的地方,对于这块的控制力度显然不够,平时总是在开发,但说到底对业务很熟悉才是项目很好完成的前提。
3.缺乏工作经验。
4.学习的知识不够广泛。
一个项目中,涉及的技术往往有很多种,知识多了,就会灵活变通,以后我也会加强这方面的学习。
五、工作计划
要提高工作主动性,做事干脆果断,不拖泥带水。工作要注重实效、注重结果,一切工作围绕着目标完成。要提高大局观,是否能让其他人的工作更顺畅作为衡量工作的标尺。把握一切机会提高专业能力,加强平时知识总结工作。精细化工作方式的思考和实践。虚心请教比我做的优秀的其他同事,向他们学习技术或经验。
其实作为一名员工,所有的地方都是需要学习的,多听、多看、多想、多做、多沟通,向每一个员工学习他们身上的优秀工作习惯,丰富的专业技能,配合着实际工作不断的进步,不论在什么环境下,我都相信付出总会有回报的。
来公司担任程序员一职已一年多时间,在这一年时间里,我学到了很多东西。每个人都是在不断的总结中成长,在不断的审视中完善自己。在这半年里自己也是在总结、审视中脚踏实地地完成好本职工作,现将这一年的工作总结如下:
一、思想方面:
严格按照一个程序员应有的素养要约束自已,爱岗敬业,具有强烈的责任感和事业心,积极主动认真的学习专业知识,工作态度端正,认真负责,听从公司的安排,积极配合全友家私完善ERP系统,任劳任怨。
二、工作方面:
热爱自己的本职工作,能够正确认真的对待每一项工作,工作投入,热心为大家服务,认真遵守劳动纪律,按时上下班,有效利用工作时间,坚守岗位,需要加班完成工作按时加班加点,保证工作能按时完成。在这半年里,我本着把工作做的更好这样一个目标,开拓创新意识,积极圆满的完成了以下本职工作:
配合全友家私开发并完善SRM系统
独自开发全友家私SAP日志维护系统
三、存在不足:
公司领导以及部门领导同事的帮助和指教,使我的工作有了很大提高,当然我还存在着很多不足之处,处理问题思路简单,不够成熟,工作中容易产生急躁情绪,需要更加学习专业知识,提高自己的工作水平。
记得去年写总结的时候心情很差,抱怨了很多当时的工作以及领导花生,那个时候的愿望是找一份新工作。没想到刚进入12月我就找到了。
不得不说这一次求职我是认真的把它当作一个工程去做,客观得对自己进行了定位,而且非常重要的是明确我想要的工作到底是什么样的。我需要的是让我每天的8小时能够享受工作的快乐。
投简历面试的过程非常折磨人,尤其是我的处境(每天很大压力,完全是自我打磨的阶段)。
我清楚地记得面试现在这份工作那天是某个周六,我的经理娃娃和技术主管T同意我周末面试。一共4个小时,那绝对是一个互相争取的过程。他们对于工作的热情打动了我,觉得和这样的团队合作一定可以有火花。
真是幸运,当我正视错误,用行动做出改变的时候,找到了一份我要的工作。入职三周已经和团队磨合得很好了,用同事的话说就是觉得我已经加入很久了。
这里不得不说一句我们的团队,一个老中青结合富有战斗力的集体,而且还不乏八卦调节生活。每个人都特别,合作也会有摩擦,但是整体运作非常协调,开发速度和效率都高。从他们身上我看到不同的工作态度,生活态度。这些对我的职业规划都有着潜移默化的影响。
领导“娃娃”也非常合适我目前阶段对于领导的需求。如果说几年前我初出茅庐需要的是一个有时间且肯耐心带我的领导的话,现在的我需要的是一个可以给予我充分信任的上司。“娃娃”信任我,从刚进入公司就如此。在熟悉产品阶段我提出的问题和建议他都认真的听了,而且给我时间让我按照自己的想法作出修改。后来我也喜欢把新想法跟他说,当我们带着创意去和老板谈的时候他是我坚强的后盾。
这一年下来我在纯技术上的提高并不多,我们所面向的客户并不要求尖端的技术。经验主要体现在理解需求上面,如果说前两年我还需要领导把需求说得很明白,还会为马后炮而耿耿于怀。那么今年应该算是个分水岭。现在的我不需要领导花很久时间来讲需求,也不用每一步都需要认可再做接下来的工作。
在过去的一年中,我担任公司开发部的一名软件工程师,主要从事着JA项目的开发工作,这一年来我低调努力工作着,不求闪亮显眼和光芒四射,只为平静和淡定;这一年中所做的成绩如下:
一、财政局项目,本人独立负责开发会计处的三个子系统:
1、会计人员信用查询系统。
2、代理记账机构信用查询系统。
3、会计人员网上报备系统。
以上三个子系统上线后,方便了社会各界查验会计人员的真实信息、方便了查询合法的代理记账机构信息,以及方便了各单位对会计人员的报备。
二、餐饮行业项目,在团队开发项目中直接参与了豪享来餐饮有限公司总部的信息综合管理平台项目,主要负责的系统有:
1、房屋租赁合同管理系统。
2、短信收发管理系统。
3、会员管理系统。
4、基础信息管理系统和人事管理系统的部分功能模块。
系统应用后,豪享来在管理全国各门店房屋租赁合同上,一定程度上提高了管理效率,并且及时有效提供了相应预警信息;短信收发系统方便了总部及时传递各项信息;会员系统更好的管理全国各门店的会员信息;人事系统在管理中减少工作量等。
三、金融行业项目,我参与了中国银行厦门分行,企业转账管理系统中的部分模块开发。
本系统方便了企业快速实现大量和复杂的转账工作。工作总结
四、国土资源与房产管理局项目,正在负责和开发的是住房货币化补贴网上申报审核系统。
本项目采用了新技术,使界面更加大方美观,很大程度上改善人机交互平台的效果。
总结不足:驻豪享来总部做项目时,由于团队内部某些原因,加之外面的其他因素,一定程度上影响了工作效率、影响开发进度和影响最终软件质量;这是包括我在内项目组中的每个成员都必须检讨的地方。
通过总结一年来的工作,尽管有了一定的进步和成绩,但在一些方面还存在不足,个别工作做得还不够完善。在今后的工作中,我将努力找出工作中的不足,以便在日后的工作中加以克服。自我不断的学习吸收新技术,认真学习好规范规程及有关文件资料,并且及时的把新技术应用在实际的项目中,进一步提高项目的技术含量。
B. java课程分享成为优秀Java程序员的10大技巧
Java程序员有许多应遵循的守则或最佳实践方式。本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们,将会导致灾难性后果。
1.为代码添加注释(Addcommentstoyourcode)._每个人都知道这一点,但不是每个人都会这么做。你有多少次“忘记”添加注释了?确实,注释不会为你的程序增加任何函数功能。但是,有多少次,看到2周前写的代码,你都记不起它是干什么的?你很幸运,那些未注释的代码是你自己写的,你脑海中还会有残存的印象。非常不幸,大多时候,代码是别人写的,并且那个人很可能已经离开公司了。有句谚语说的好:“有来有往,互惠互利”,因此程序员应该体谅彼此(还有你自己),给你的代码加上注释。
2.不要把简单事情复杂化(Donotcomplicatethings)._我曾经这么做过,我相信你也一样。开发者都倾向于采用复杂方式解决简单问题。我们在一个只有5个用户的系统中引入EJB,为一个并不需要框架的应用实现一套框架,采用属性文件、采用面向对象解决让闷方案、使用线程,而这些根本用不着。为什么会这么做?一些人可能不知道有更好的解决方案,但另一些人可能故意这样做来学习新知识,或仅仅是因为有趣。对那些不知道更好解决方案的人,要多听有经验程序员的建议。对于那些纯粹出于个人目的而将设计复杂化的人,我建议你要更加专业一点。
3.记住-“越少越好”并非总是如此(KeepinMind_“Lessismore”isnotalwaysbetter)._高效率的代码是件好事,但很多情况下,并非代码行数越少效率就越高。
4.不要“硬编码”(Nohardcodingplease)._由举正于时间紧迫,开发者总是会忘记或故意忽略这一条。然而另一种可能是,遵循这条戒律,我们就不会陷入“时间紧迫”的困境。定义一个staticfinal变量,增加一行代码,又能花多长时间呢?
5.不要发明你自己的框架(Donotinventyourownframeworks)._不夸张地讲,已经有几千个框架存在了,大多数还是开源的。很多框架都是极完美的解决方案,并已被用到成千的系统中。我们只要关注正滑悔最新的流行的框架,至少表面上要熟悉一下。一个最成功的、也是被广泛使用的例子是Struts框架,这个开源的web框架是建立web系统的极佳选择,不要试图构造你自己的Struts版本,会累死的。但你必须记住第2条(译注:原文是“第3条”,显然不对)戒律——不要把简单事情复杂化。如果你要开发的系统只有3个界面,就不要用Struts.对于这样一个系统,没有足够的需要被“控制”的东西(译注:Struts将界面做MVC划分,C即controller,所以作者说thereisn’tmuch“controlling”required)。
6.对Print行或字符串说不()._我知道为了调试方便,程序员喜欢到处用System.out.println,然后对自己说过一会就删掉。但我们常常忘记删掉这些行或不愿删掉,我们用System.out.println做测试,为什么测完后还要去改代码?java课程认为这很可能导致误删一行我们需要的代码。不要低估System.out.println的危害。
C. 一位 20 年老程序员分享的 20 条编程经验火了:不要与工具作斗争等
转载自it之家同名文章
一位 20 年老程序员分享的编程经验突然火了,在 Hacker News 上,一天之内就收获了 467 热度。
其实这篇帖子所包含的观点大都是编程圈子里较常见的概念,但是这些年来有的话题一直很具备争议性。对他的大多数经验,网友很赞同。比如:代码终究还是给人写的,注释是为了让未来的自己和其他同事能看懂
20 年浓缩成 20 条经验
1. 不要与工具作斗争
所谓工具,包括库、语言、平台等。尽可能多地使用原生的开发方式。这样可以保证程序或软件的数据都存在于本地,能够及时检索,保证程序或软件的合作速度和流畅度。不要被技术捆绑,也不要被问题捆绑。应该为工作选择合适的工具,而不是为了工具寻找合适的工作。
举个例子:编程实现在一个文件中找到给定单词出现的位置并统计出现次数。如果用 C++ 写的话需要 92 行代码,而使用 Python 的话只用 26 行代码就可以完成了。
由此可见,对于同一个问题,换一个工具也许可以简化编程,提高效率。
2. 写让人可以看懂的代码
程序员们不是为机器编写代码,而是为了同行们和未来的自己编写代码。写代码的终极目标往往是完成一个项目或给后来者作为参考。
3. 善于合作
任何重要且有价值的软件都是协作的结果,有效沟通和公开合作很重要。能用众智,则无畏于圣人矣。
4. 对各模块分而治之
编写相互联系却又彼此保持独立的单个模块。先分别测试每个部分,然后一起集成测试。既要保证测试接近实际,也要测试边缘实例。
6. 安全是分层的
分层安全是一种应用多种安全措施的实践,每一层都与前一层和下一层重叠,以创建一个安全控制网络,这些网络可以一起工作以保护技术系统。每一层都需要单独评估,但也需要与整体相关。
7. 代码也有生死
要认识到,每段代码都有一个生命周期,并且会最终失效。有时,一段代码甚至还没上线发布就被废弃了。程序员要学会放手,弄明白 4 类特征的区别,然后想清楚应该在哪些方面投入时间和精力:
核心:就像 汽车 的引擎。没有它,产品就没有意义。
必要之处:就像 汽车 的备用轮子。它很少被使用,但当需要时,它的功能决定了系统的成功。
附加值:就像 汽车 的杯座。有它很好,但产品没有它也完全可用。
独特卖点:人们应该购买你的产品而不是你的竞争对手的主要原因。
8. 保护好个人信息
程序员不要将个人身份信息附加到代码中,也不要把其他人的身份附加到他们的代码上。人是独立于他们的工作产出物之外的。不要把别对代码的批评当成是针对个人的,当然也在批评他人的代码时也要谨慎。
9. 尽量规避技术债务
技术债务是开发团队在设计或架构选型时,为了快速地解决问题,而采取的不规范的方案。偶尔的技术债务是可以接受的,但如果长期负债往往会快速地扼杀产品。
10. 可参考以下优先级
为解决方案做决定时,假设其他条件都是一样的,可以按照这个优先级:
安全性 > 可用性 (可访问性和用户体验) > 可维护性 > 简单性(开发人员体验 / DX)> 简短性(代码长度) > 性能
但是也不要盲目地遵循这个规则,还要考虑到产品的性质。例如,在设计 游戏 引擎时,性能是最重要的;但在创建银行应用程序时,安全性是最重要的因素。
11. 复制粘贴会带来 Bug
有时复制粘贴后,会出现 Bug,这个几乎无法避免。为了检查是否有问题,每次都需要搞明白复制过来的内容,并审核导入的内容。
12. 不要只为乐观场景写代码
还要写出好的错误提示,回答其为什么会发生,如何检测到它,以及如何解决它。
13. 尽量不要使用依赖库
若调用一个动态库 A 时,A 需要调用动态库 B,则 B 是 A 的依赖库。
尽量不要使用依赖库,除非导入、维护、处理边界情况时出现 Bug,或者当代码不满足需求时,重构的成本远远低于你拥有的代码。
14. 不要盲目跟风
可以去了解热炒的新技术,但不要被拽着走,要坚持自己对技术的品位。
15. 坚持学习
16. 最好的代码都有良好的注释
一些人认为,代码写的够好,就不用写注释了。但最优秀的的代码中往往都包含着良好的注释。这样,即使是没有经历过这段代码的调试、测验过程,且暂时不具备写出此代码能力的人都可以使用它。
可以说,未文档化的功能是不存在的功能,不存在的功能不该有代码。
17. 尽量避免重写、继承和隐藏信息
写纯函数 (Pure Function)。对于纯函数,相同输入总是会返回相同的输出,执行过程中不产生副作用,且不依赖于外部状态。它们更容易测试和推理。
在执行一个非纯函数时,除了得到函数的返回值以外,还在函数调用时产生了附加的影响,如:修改了全局变量的状态,修改了传入的参数等。
任何非纯函数都应该是类,任何具有不同函数的代码构造都应该具有不同的名称。
18. 弄清楚问题后再开始编程
面对一个问题,首先要弄清解决思路,再开始编程。在编程过程中还需要逐步经历“编码-测试-改进”周期,并不断深入 探索 ,直到完成。
19. 不要去解决不存在的问题
不要进行投机性编程。只有在确定代码将来会被扩展时,才去花功夫提高代码的扩展性。
因为当代码要被扩展时,有很大的可能性问题定义已经与代码初次编写时不同了。
20. 巧用社区、积极探讨
参考链接
[1]. https://alexewerlof.medium.com/my-guiding-principles-after-20-years-of-programming-a087dc55596c
[2]. https://blog.daftcode.pl/hype-driven-development-3469fc2e9b22
D. 程序员该如何做好一次分享
很多人,尤其是程序员肯定都有这种想法:”每次参加技术分享会,看到台上分享者的激情讲解,也想自己哪天能做一场优秀的分享?“
但是技术宅们有多是内向的性格,对于抛头露面总有一丝胆怯,而且技术宅多沉浸在自己的专业领域内,就算做分享也没有很好的效果,久而久之就会越来越抵触分享。
但是分享却又是提升实力最好的方式,工作几年我也做过好多次的分享,也是从刚开始的抵触,到现在的期待。我也总结了一部分自己对分享的感悟和方法,我觉得有必要写出来分享一下给 ”想分享但是不知道怎么分享的技术宅们!"。 今天我们就一起来看一下如何做好一场优秀的分享会。
在正式开始文章之前我也想问大家4个问题,希望大家可以带着问题去看文章,也希望大家在评论区给出自己的答案。
下面正文开启:
要做好分享,首先要有一个分享的心态。
通常我们很少会去主动把知识传递给大家。背后的原因可能比较复杂,不够自信,或者有压力等等。而往往分享来自于工作任务。如果应付了事,那只能是浪费时间。一定要有做有价值的分享的心态。
作为分享者,一定要分析听众需要什么,这样才能带给听众更有价值的分享。
听众分析的思路很简单,无论是分享给熟识的听众:同学、同事,还是分享给陌生人,我们都可以从职业特性入手。
如果分享对象是学生,就以所学专业为主要参考指标,如果分享对象是职场人士,那就以所在岗位作为主要参考指标。
如果分享对象是学生,就以所学专业为主要参考指标,如果分享对象是职场人士,那就以所在岗位作为主要参考指标。
总之,分享首要考虑的是听众的需求。
没有金刚钻别揽瓷器活,如果没有干货,再好的技巧都是空有其表。
作为分享者,除了要了解听众的需求外,也要分析自身的特长。不要轻易挑战自己的弱项,也尽量不要把还没有实践过的知识分享给听众,不然容易现场翻车(⊙o⊙)。
一定要结合自己的知识储备以及听众的知识储备来进行分享准备
另外,知识的传播一定是衰减的。这个衰减的过程是 储备知识->传播介质->听众。
传播介质可以是图文博客,也可以是PPT,也可以是音频、视频等等
粗略的打个比方,如果满分是100分,假设你储备了90分,按照15%的衰减来说那就是 : 储备知识(90)->分享介质(76)->听众(65+(-30))。 这里的-30的意思是,如果听众没有相关知识储备,那听众接收到的可能最多就是35分。
列提纲
吹牛要打草稿,提纲是为了帮助分享者梳理分享的思路。
填内容
分享前,你需要对分享内容尽可能的掌握全面,尽可能多的去查阅资料,书籍。
例如:我想分享 Http 的三次握手四次分手,那我至少要去查阅5篇相关的文章,并且提取他们里面的相同点和不同点,然后用自己的语言去整理合并。
当然,仅仅准备你要分享的内容是不够的,你还要对你分享的内容深入了解20% ~ 30%,因为你你要应付现场听众的提问。
举例子
善用例子,通过类比让听众更加形象的去接受内容。
不同的听众要有不同的开场,但是核心都是抓住听众的注意力
熟悉的听众
如果是熟识的人:同事、同学,那就非常简单了。 说清楚自己是谁就行了,为了活跃气氛,可以稍微加点幽默。
范例1:我是来自A团队研发成员,我的名字是张海洋。我可能是最痴情的男人,因为“最痴情的男人像海洋”。今天我带来的主题是:XXX。希望经过本次分享,大家能对这个主题痴情起来。
陌生的听众
如果是陌生的听众,那意味着他们对你还不够了解,还需要建立基础的信任,总之就是吹好牛皮,赢得基础的信任。
范例1:我是来自X集团X事业部的资深研发专家,我叫张海洋。弓长张、海洋的海洋。我主要负责X业务,我所负责的系统每天的访问量大约30亿PV,峰值QPS在1W左右。平均每天成交额约2亿RMB。今天我带来的主题是XXX,主要是跟大家分享我在XXX方面的一些经验。