程序员能力

什么样的程序员才是牛逼的程序员?

故事扮演 提交于 2019-11-28 16:51:08
恰好最近在反省自己的日常生活,感觉每天做些增删改查、枯燥无味的工作, 对于现在的我来讲,学会且能够享受生活就是牛逼,对于其他行业一样。 写代码十年了,现在也还坚持要让自己写写代码。 * 第一层能力,编码能力。用你掌握的语言把描述中的算法编写出来,运行正确。逻辑比较复杂的代码,比如说五层以上的循环,各个层内有判断和处理,能看透能定位问题。或者其他语言写好的核心级别的代码块,能重新编码成另一语言的版本。这一层能力决定了程序员之路能走多顺畅多块。 * 第二层能力,分析推理。从需求文档到对象设计,能有多快多准确。一个问题或者变更,要动哪层哪块代码,动多少,工作量多大。还有,这个需求后续最有可能跟着哪些需求,这个问题后面会隐藏着什么其他缺陷,如何改进,工作量多大。这一层能力决定对技术理解深入到什么级别,对客户业务需求理解有多深入,对软件架构有多了然于胸。 * 第三层能力,销售水平。客户提出的需求,有的是对他重要对你则稍微改动即可,你是免费还是收费,收的话收多少合适。项目管理所谓进度质量成本三角,数据库的速度一致性数据量三角,根本是取舍之道。程序员要生存要发展,人生就是干活,作品的价值,售出的价格三角的平衡。不能只从自己的视角看自己的东西,要从团队客户商业战略角度多审视。所以要提高销售水平,和bug斗也要学会别被人斗,万一斗起来自己能有概率反杀。 * 第四层能力,意志力。这个不用展开

如何理解程序员职业的本质

一曲冷凌霜 提交于 2019-11-28 16:17:01
如何理解程序员职业的本质 程序员这个职业,和其他职业非常不一样。这大概是由软件的本质决定的。 自动化 其他行业的工作,都需要由人来完成;今天做的事情,明天可能还要同样的做一遍。但这是人类工作的方式,不是机器工作的方式。 软件,仔细想想,它不就是一系列可以重复执行的命令么? 为了让机器去做重复的工作,我们才需要编码,通过各种编程语言告诉机器如何去完成一项特定的工作,而在这之后,这项工作就由机器完成了,再也不需要人类来参与。程序员的注意力会转移到下一个还没有被自动化的工作上。对,「自动化」就是软件的本质。 DRY 是程序员的职业信条 所有重复的工作,都应该被抽象和描述成命令,交给机器去做;人类,至少程序员,应该把时间花在创造性的工作上。 《程序员修炼之道》中提出的 DRY 原则( Don’t Repeat Yourself )将这种内在信念表现得更为具体。相对的,我们把违反DRY原则的解决方案通常被称为 WET ( Write Everything Twice )。 仔细想想,为了避免重复,程序员们都做过什么:从函数库到框架再到脚手架、从面向过程的函数级重用到面向对象的继承式重用、从软件分包和管理到SOA和服务发现,我们不断的改良着重用的技巧。 更进一步,为了不重复别人的代码,从古代开始,程序员们就开始通过软盘交换程序;有了互联网以后,更是发起了规模庞大的开源运动

Delphi开发能力自我评测

二次信任 提交于 2019-11-28 15:34:14
Delphi开发能力自我评测 日期:2008年11月23日 作者: 人气:3159 查看:[大字体 中字体 小字体] (注:以下内容都是作者个人的学习经验和体会,仅代表个人观点。针对Win32下的Delphi程序开发而言,部分内容或思想也可适用于其它工具或平台下的软件开发。) 在程序员的求职资料中,用得最泛滥的词可能是“熟悉”和“精通”了。评价一个程序员的综合能力并不容易,下面的文字试图以Delphi程序开发为例定义一种描述程序员开发能力的方法。 一、学习阶段划分。 根据我个人的经验,Delphi程序设计分为以下几个阶段: 1、 熟悉阶段。 这一阶段指从未接触过Delphi的人,刚开始学习到初步掌握Delphi的语法、可视化编程、面向对象编程的概念、Delphi IDE开发环境、基本代码编写、程序结构的过程。 熟悉阶段结束后,学习者应该可以编写简单的程序,同时对整个Delphi开发环境有一定的了解,但还不能从事开发工作。 根据学习者是否有编写其它语言代码的经验、是否接触过面向对象编程等因素,这一过程可能需要数天到数十天的时间。 2、 入门阶段。 在熟悉Delphi后,入门的标志是学习者可以有目的地利用Delphi强大的可视化开发环境、结合一些常规的代码编写技术,编制一些小型的程序,或是完成简单的数据库应用。同时,还应掌握基本的程序调试方法。 入门后,程序员可以从事简单的开发工作

漫画 | 外行对程序员误会有多深!

大城市里の小女人 提交于 2019-11-28 14:32:35
作者:阿波、纯洁的微笑 漫画:宁州枪手 程序员如今已经发展成社会的主流职业,以至于街头的王大妈李大爷都能说出一二来,据说他们认为的程序员是这样子的: 程序员都是秃头,秃的越狠越是高级。 程序员各个都是死宅男,整天在家玩电脑。 甚至外行给程序员们总结了一句话:钱多话少死得早! 那程序员真正的生活是什么样的呢? 老妈曾经总认为,程序员的办公环境就像混乱的网吧,而我的工作基本和网瘾少年打游戏差不多,其实.... 每个程序员似乎都有被叫去修电脑的经历,最有趣的是,很多程序员靠着这个技能找到了女朋友! 但修电脑绝非程序员的本职,代码才是程序员们的核心武器。 当一名程序员面对电脑时,他一定在享受那个 Coding 世界,用代码完成他对这个世界的诉说。 比较尴尬的是,很多 IT 公司老板并不是技术出身,往往认为程序员只是写几行代码而已... 实际上程序员大量的时间都被开会、PK、培训、面试这种无聊的事情所占用。 每当夜深人静的时候,才是程序员最佳的 Coding 时间。 由于各种自媒体的渲染,外行们总以为程序员个个都是四件套,格子衫、黑框眼镜、牛仔裤、运动鞋,为此还给大家解释过为什么是这四件套,耐脏+百搭+随性。 但是其实程序员也有很多潮人,也不是各个都穿格子衫,那些以为程序员都穿格子衫的外行们,肯定没看过 Github 上面那个 女装大佬 的开源项目。 关于发型,这是外行们吐槽最狠的地方了

大神级程序员和普通程序员的区别

会有一股神秘感。 提交于 2019-11-28 12:32:06
  标题说的有点玄乎,在网上看到的一篇文章,提到了一些大牛具备的几种素质(或者说应该养成的习惯),值得反思。   部分原文如下:   为了了解那些大神级程序员和普通程序员的区别,采访了很多世界高端科技公司的软件工程师。发现这些给世界带来巨大影响的的工程师们至少有以下几个共同的思维模式: 勇于去研究自己不懂或不熟悉的代码   一般程序员都不愿意去研究自己不曾接触过的代码,很多人都没有尝试就放弃了。如果你经常去研究你没有接触过的代码,你就会越来越熟悉不同的代码结构和设计模式。现在程序员很容易就接触到优质的开源代码资源,可以很方便的就下载下来做一些改动或者调试,去研究为什么代码可以这么写。   除了代码之外,很多人对于陌生的工作内容也会感到抵触。每次换工作的时候,可能都会遇到新公司的工作内容和以前工作的内容不一样的情况,以至于刚开始的时候,工作效率没有以前那么高。   其实,所有程序员都是在学习的过程中成长的。在一个陌生的领域,没有人可以从一开始就是大神。如果你想在你工作的领域,变得越来越强,无论是写代码,或是与人沟通或者其它的技能,都是需要投入大量时间去学习的。 精通代码调试   很多人在写代码的过程中,经常会有的一个问题就是:为什么写出来的代码不能运行?为什么运行的结果不是我想要看到的?   几乎所有的程序员在写代码娿过程中,都不是一遍就能写好的

有头脑的程序员都不会急于学习编程语言,知道原因吗?

冷暖自知 提交于 2019-11-28 01:36:40
多年来,我一直在学习编程语言,然后用它们来构建更好的投资工具。在建立预测和风险管理模型之余,编程方面的工作堆积如山。 但实际上, 我并没有花太多时间在真正需要解决的问题上。 我把大部分注意力放在了算法和编程语言上。多年来,我每周都要花几个小时学习计算机基础知识,却没有花太多时间应用这些知识来让现实世界变得更美好。 而我的一个朋友却基于微软 Office 开发出了一个完整的产品,它使用 Access 保存数据,使用 Excel 分析数据,然后使用 Word 输出报告。 当他把产品卖给一家大公司时,我为他感到高兴,同时也有些嫉妒。我比他更了解编程,但却没能推出可以解决实际问题的产品。 实际上,为什么要开发产品比如何开发产品更加重要。我花时间学习如何编程,而我的朋友把时间花在解决实际的问题上。 他从使用非常简单的工具开始,一步一步往前走,直到找到一个完整的解决方案。 在这个过程中,他自学了如何将其他工具整合在一起。这仍然需要做大量的工作,但他做到了,尽管资源非常有限。 之前,我加入了一家初创公司,并最终汲取了这个教训。 一个团队能否取得重大突破从来都不取决于如何使用代码完成某些功能,而在于知道要做什么,以及为什么要这样做。 在创造性的旅程中,没有什么比在不必要的东西上投入太多更令人心碎的了。 如果你想要创造出一些有用的东西,首先要知道“为什么”要这样做。从一开始你就要问自己

人海战术与人才流失的迷思

£可爱£侵袭症+ 提交于 2019-11-27 21:09:16
现在在互联网行业流行一种人海战术,具体战术是: 商业模式的创新并不需要很大的技术投入,更多的是脑力资源的投入,而技术只是辅助。召集很多产品经理进行非常多的头脑风暴然后产出可观的基于商业模式的创新想法,然后要求技术人员非常快速的把他制作出来,迅速推向市场,以验证效果。如果想法不行,继续进行头脑风暴,继续开发项目。这就是美国IT与中国IT的本质区别,美国IT是技术的创新,而中国IT是商业的创新。所以中国程序员和美国程序员的地位自然是差别很大了,中国的程序员是辅助,而美国的程序员是主导。 这种模式已经被很多公司验证是行之有效的,比拼的不是技术,比拼的产品人员的脑速和程序员的手速。然而看似完美的方案却也不是完美无缺的。这种模式要求项目的快速迭代,同时每一个项目之间并没有连续的版本关系。同时这种人海战术体现了对技术的蔑视和对人权的不尊重。会导致优质技术人员的流失,导致公司产品的质量很差,想一想 如果公司留下的都是技术不是很硬的人员 即使再推行规章制度 再推行奖惩制度又怎么可能使得产品质量提升呢?在这个时候公司会想到招揽优质技术人员,通过高薪招聘确实可以招来一批有能力的技术人员,但是因为公司之前的优质人员已经流失,公司的养老氛围已经形成。内部关系盘根错节,想要依靠几个优质人员来净化公司环境已经是不可能了。这个时候劣币驱逐良币,优质人员离开,公司继续沉沦。 来源: https://www

程序员创业的情怀和梦想

时光怂恿深爱的人放手 提交于 2019-11-27 17:27:34
众所周知,被乔布斯羡慕嫉妒的天才 Android 之父 ANDY RUBIN 离开 GOOGLE 创立了 Playground Global 公司,专注于打造机器人的安卓平台,他认为现在机器人差不多在十年前智能手机状态下,所以他立志要做一个机器人平台,让更多的人来做机器人的创业,这会是一个改变世界的事情,是一种情怀,也是他的梦想。 这是真正的技术牛人, Andy Rubin 是硅谷极客文化的代表, 他是那种既喜欢电焊枪,也着迷编写程序,并擅长业务战略的奇才 。 因为 Android 他成功了,但依然单纯,仍然有梦想,他立志要通过技术来改变世界实现梦想,这曾经应该是我们很多技术人员的出发点 。做技术的首先当然是为了过上好的生活,薪酬高职位高前途好,其次我们是需要有梦想的,通过技术来创造伟大的产品,改变工作与生活,甚至改变世界。 比尔盖茨、乔布斯、 ANDYRUBIN 等做到了,他们的伟大其实真不是他们有多少钱,人们很快忘记那些历史上的富豪们,但不会忘记他们,因为他们创造的产品一直带来社会价值,人们喜欢他们崇拜他们是因为他们的产品,而不是因为他们多么地富有或者多么地能讲。 当然,我以上讲的技术实际上都是计算机编程相关的技术,往更小的说就是程序员,因为我是干这个的,所以也只能围绕这个吹吹牛逼扯扯淡。中国现在拥有近 200 万名程序员,男生占了 80% 以上,年龄主要集中在精力充沛的 20

“单打独斗”的前端程序员,如何在职场中更占优势

淺唱寂寞╮ 提交于 2019-11-27 12:10:56
有很多关于前端程序员的调侃,比如“智商很高情商却很感人,思维缜密,极客,加班严重,没有对象只能new一个……”,虽然不是所有前端程序员都是这样,但这也说明了前端程序员这个群体中存在这种情况。我身边的前端程序员小伙伴就有不少这种情况,我认为工作特点影响了这种性格标签。 前端程序员的很多工作都是需要“单打独斗”,任务分工之后每个人要独立完成部分功能设计,相互沟通比其他岗位少很多。小编的这篇文章能对于前端程序员避免愈发孤独的状态很有帮助。 在工作之外,前端程序员和其他职位的同事应该有更多沟通,企业也应该为他们创造更多沟通条件。 有些人认为,前端软件开发者只要会写代码会调试,技术能力够强就行了,不用具备太多软技能,比如在公司扩大自己的关系网络。我认为软技能跟技术技能同等重要。 今天给大家分享了4个重要的软技能 第一个技能:推销你的工作 大多数情况下,管理层都不会直接去判断你所做的技术工作的质量,他们对你的印象都是基于对你的观察,比如通过你跟他们的直接沟通、你的演讲、别人背后对你的议论等,“如果我们想要对自己的职业发展负责的话,就得管理好对自己工作的营销”。 怎么推销自己的工作呢?我认为,要把关键信息跟管理层进行沟通,让他们对你出色的工作表现留有精确的印象。他自己的经验是,把自己在项目中扮演的角色、承担的工作,明确地跟管理层沟通清楚,评估绩效的时候,他会要求共事过的同事直接对他进行评估。

“习惯成自然,自然成人生”,习惯对一个程序员的成败极为重要

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 11:02:30
俗话说:“习惯成自然,自然成人生”习惯对一个程序员的成败极为重要,好习惯可以让一个程序员走向成功,坏习惯就会走向失败! 慎于说Yes 在没有搞清楚开发需求、任务工作量、团队期望值之前,有前途的程序员不会轻易答应。特别是对于新人来说,比较急于表现自己,对于同事或者老板的工作安排来者不拒,精神可嘉,方法不可取。承诺太多,会出现自己无法按时完成的情况,即使按时完成,也可能没有达到别人的期望值,长期以往别人对你的失望会越来越多。 敢于说No 看起来和第一条雷同,其实细究起来不一样。第二条执行起来比第一条难得多。当遇到明显不合理的要求时,可以考虑拒绝,前提是准备好了全面充分的理由。不要经常说No,但是一旦说了,就要切中要害。有前途的程序员不会闷头干活,知道自己的定位和团队期望,分清楚哪些是不合理的要求,哪些是合理的要求,然后把明显不合理的要求和领导沟通下,取得支持。 构建自己的知识体系 在信息爆炸的年代,碎片化的知识很多,系统学习的时间越来越少,如果没有自己的知识体系,很容易被淹没在知识的海洋中,而且难以记忆。100分程序员推荐的做法,通过Wiki或者其他知识管理工具构建一个知识框架,大的分类可以包括软技能、架构、语言、前端、后端等,小的分类可以更细化。 培养大局观 程序员比较容易陷入的困境是专注于自己的一亩三分地,不关心团队的进度和业绩,也不关心软件的整体架构和其他模块