A. 好程序员:技术分享 有哪些新手程序员不知道的小技巧
我有一个学习的小技巧,就是学习新技术的时候,多看看“官方文档”。
多年来的学习和工作经历,让我比较深刻认识到一点:看“官方文档”非常重要。
我们很多的问题和技术细节,其实,只要我们认真将官方文档过一遍,会发觉大部分的问题和认识模糊的地方都消失了。甚至,你还能发现自己之前通过搜索获得的到一些资料,可能是不准确或者已经过时的。官方文档是真正的好东西,因为编写文档的人群,通常就是这些技术或者软件的开发者,他们才是对这些东西最了解的人,因此,他们写的文档质量是很高的,通常也是最新的。
官方文档的不足的地方,大概是中文版本不多,看起来可能会比较吃力。不过,请相信我,下载一个翻译辅助软件,慢慢看还是可以的。另一方面,就是这些文档编写者,通常是技术界大牛,他们编写文档有时候是基于他们自己的技术认知水平,跳过了很多基础概念,也增加了阅读难度。不过,这个我们也可以通过多查资料,慢慢看来解决,并且通常会带来额外的学习收获。
B. 程序员:请分享你的程序感受和经验
刚做了一年开发我是做cobol语言IBM大机这方面的。
经验:1.善于总结。2.向比自己强的人学习。3.有一个目标。(你不可能做一辈子PG吧,我现在的目标就是尽快考过日语二级然后跳槽到北京IBM或北京CSC公司)。
4.说实话什么语言无所谓只要你掌握的好做的精,不用担心以后没饭吃。
呵呵,楼主一看应该是做过开发的,如果我没猜错的话。
C. 程序员如何自己创业
30岁,对于每一个程序员来说都是尴尬的年龄,仿佛舞台上不知不觉间已经谢幕,而自己仍在独舞;创业,对于每一个程序员来说都是曾经或者正在憧憬的梦想,可是梦想与成功之间难以逾越的距离却也让多少人望而却步……以下是我为大家整理的程序员如何自己创业相关 文章 。
周鸿祎谈程序员创业
很多人都向往着有一天自己创业,程序员更是如此。如果你想创业,那么该怎样创业、需要有哪些准备、自己还有什么不足等等这些问题你考虑过吗?本文就跟大家分享周鸿祎在接受某媒体采访时给程序员上的创业课。
程序员创业的特别之处
关于程序员创业,我之所以愿意谈我的观点,是因为我是程序员出身,也是从小公司做起来的,我自认为对待很多程序员个人包括共享软件作者和一些小网站还是很好的。我希望和他们分享一些 经验 和体会。
首先,我想说的是聪明人不一定能成功,很多程序员很聪明,但我一看就知道他们不会成功。因为我看到了一些问题,而且现在太多程序员存在很多误解。因此,我希望把我的观点告诉程序员。或许有一些程序员能够清醒,某个人可能因为我的某一句话有了感觉,对他以后的成长产生了帮助,这就足够了。
要知道,程序员总是以为自己优秀所以就能成功,其实不是。中国的程序员大部分是盲目的:看看一些论坛就能够感觉到,要么有一群人自我感觉极端的良好,以专家自居,要么就是一群蓝领埋怨公司和社会环境不行,待遇不好。
应该说,中国程序员创业的成功率也是很低的。放眼望去,中国互联网成功的人士有几个是真正写过十年软件的。事实上,现状和我们所能听到的媒体宣传的 故事 很不一样。
很多程序员的最高理想就是写一个共享软件,一年可以挣几百万。但我希望谈的不是告诉程序员如何挣钱,挣钱很容易,而是要告诉程序员如何去创业。比如虽然FlashGet的作者收入很高,衣食无忧,但从创业的角度看,它并没有以商业公司的方式创业成功。
程序员在创业方面的欠缺
首先,我看到中国程序员的合作心态非常缺乏,我认为这是中国程序员最大的问题,当然这是有很多原因的。
大家经常说这句话:态度决定一切。但事实上好程序员基本上都比较傲气,因为程序员往往会觉得自己在做世界上一件十分伟大的事情,这就是驱动机器,修改一行代 码,机器就能够工作,可以产生各种不同的行为。这很容易会让程序员产生一种错觉,认为自己可以Control Everything。程序员的自信在编程上是非常需要的,但不是适合一切场合。如果我们不说这些,可能很多程序员到现在还不知道自己错在哪里,仍然认为 自己是King of the World。
事实上,程序员的能力只是控制了一个机器。但创业仅仅具备了和机器打交道这一种能力是绝 对不够的,他还需要和合作伙伴、竞争对手、投资人、员工甚至整个社会环境打交道。很多程序员因为已经习惯了和机器打交道,不善于也不愿意 其它 的工作。很多程序员会内心认为“营销不是很简单嘛,市场很简单啊,管理也很简单啊,”我认为这种心态是非常害人的。
程序员还是一个很固执的人群,他觉得自己是机器的统帅,因此不会灵活,不会妥协。我当时也喜欢写程序,但我知道如果自己沉迷于写程序,肯定没戏,所以是逼着自己改变角色。
优秀的程序员不要自负
这两天,我收到几封程序员的来信。有一封信中大意说“我是个如此优秀的程序员,为什么我就不能成功呢,请你指点。这里有我的blog地址,看完你就 会了解我了。”我想说的是:如果真的希望别人帮忙,就要把情况真实的说出来,而不是上来就说自己很优秀,这种语言就会让别人觉得很不舒服,不是很好的交流 方式。我还真看了那个blog,但看完之后,觉得这个程序员就是一个空想狂。
可以说,很多程序员实际上是优秀带来了自负,这种自负使得其不要说创业,可能在在公司中工作也会遇到问题。所以,我甚至认为程序员在创业方面遇到的困难比其它类型的人员更大。如果程序员希望主导一个创业,可能首先就要逼自己不是一个程序员。
程序员应持开放心态,寻求团队合作
程序员首先要学会和别人合作。提到这点,很多程序员都会说“我正在带着其他程序员写程序啊,我会合作啊。”但这种合作是片面的,我所谈的不仅仅是程序员和程序员之间的合作,而是包括了程序员和其它各种角色之间的合作。程序员相亲,他们的语言比较能够容易理解。但作为一个程序员,你能不能商业人员、销售人员很好的合作呢。
我这些年还看到很多这样的例子:程序员动不动就把目标定为比尔·盖茨。其实,比尔盖茨不应该成为程序员崇拜的目标对象,这会让程序员迷失方向,因为微软另外一个创始人保罗·艾伦才是真正的程序员。再看其它一些例子,Google的第20名 程序员都可以获得五亿美元。Adobe公司两个创始人也是一个精通技术,一个对商业精通,这样的搭配才能够更好的成功。因此,对于很多程序员来说,一定要找准真正的榜样,不要被外界的故事迷惑了头脑。如果剖开一些故事的外表,你会发现国外很多成功的程序员,背后一定有一个很强大的商业感觉的人或者一个团队。
程序员的商业感觉其实并 不是很好。即便有商业感觉,其实这只是一个灵感,一个创意,但要要做成、做大还需要一系列的管理、市场、运营,这些对于程序员是不可想象的。程序员要明 白,在自己不擅长的领域,找到一个可以弥补自己缺陷的合作团队才是出路。加入一个创业团队,可能个人占10%,但因为更容易成功,而且团队可以做100分 的事情。而如果只是一个人做,很可能就失败了。
这方面,国外的程序员对自己的长短比较清楚。在硅谷,很多程序员技术上都很牛,但他们 都非常知道自己只是在技术这个领域水平比较高,出了这个领域,自己什么都不是。正因为有了这种心态,他们特别懂得与人合作。我认为国外的程序员已经普遍意 识到了这点,他们很愿意成为创业团队中的一员而并非自己创业。
因此,程序员需要调整心态,不要把自己当作精英人物,要承认自己在编程方面是优秀的,但永远有人比自己更优秀,对于其它的领域,很可能自己很无知。要知道,其实程序员的选择其实是最少的,因此抱有开放的心态是最重要的。
程序员与创业要求还有哪些差距
我认为现在的很多程序员经验过于不足,他没有认真踏实做过很多工作就奢谈创业。如果一个程序员没有在编程方面深入过,没有积累,也就是半瓶子醋。这 样的程序员我接触过很多,他们自己也不清楚问题出在哪里,让人感觉又爱又恨。我认为程序员既然要凭借自己的技术,那就一定要踏实,要能够实现任何创意。
但现在一些程序员自己没有商业意识,却又很自负,不相信别人,不理解的事情就不做。我遇到过很多程序员,他们对公司做什么方向都质疑。他 们希望自己先想清楚,可是一想就浪费了很长时间。很多程序员就可悲在这里,积累的不多,看不到方向,但他也不相信自己的公司和老板,这是一个悖论,需要程 序员深刻反省。要知道,每个公司都有懂商业的人。
就这样,一些程序员极端自负,另外有一些程序员碰了很多钉子之后,感觉很自卑,于是便认为国内软件业不行,最后 出国 或者打工,很少有程序员能对自己能做公正的评价。
国内环境是否造成程序员浮躁的因素
我以前没有仔细考虑过这点。但我想,不管怎样,程序员需要先从自身找问题,因为大环境就是这样了。我承认一个现实:程序员生存状态并不是很好,但程序员很多报怨其实是一种不切实际的期望值和自身的缺陷产生的反差。
首先,产品没有大小,只有市场的大小。很多人总是觉得这也小,那也看不上。认为公司做的产品很无聊,要做就要像某些人宣扬的那样:做游戏一定要 做3D引擎,好像只有这样才够牛。这其实就是一种浮躁。很多程序员写软件总是很多bug,基础知识也不牢固,没有参加几个项目,没有写过十万行代码,就奢 谈做大项目,这有价值吗?
而且我还发现有些程序员特别愤青,骂环境,骂老板,其实这只能把自己的心态搞的很坏。很多人刚进公司时做的很差,虽然工资少,但他没有想到给公司增加了很多bug,公司实际上是在给他出学费。论坛上大家都在讨论哪里活干得少钱拿的多。甚至还有人列了一些黑名 单。这种做法的结果就是程序员自己将周围环境搞的乌烟瘴气了。
有的程序员还非常喜欢指点江山,指点公司。我个人觉得这不是不可以,但 指责别的公司对个人没有什么好处,因为存在就是合理的。如果看不到,恰恰证明是自己看不到。我看到很多程序员也写blog,技术交流的我认为非常好,但有 些人是写评论。我是觉得程序员不要做评论家,中国不缺评论家,最缺的是实干家。
总之,程序员一般过于自我。总生活在自我的世界中,就不可能真正了解世界是什么。我很早就意识到了这些问题,也努力的去客服。我的经验就是看别人如何做的好,为什么能够做的好,什么是我所不能理解。程序员要学会慢慢站在别人立场上看问题。
最后给希望创业的程序员一点建议
对程序员来说,现在要做的也很简单,这就是需要大量的实践,要慢慢培养对产品,对商业的感觉。我的建议说出来可能有些忠言逆耳。对绝大多数程序员来 说,自己一个人成功的机率是很小的,所以我认为加入一个创业的团队可能更为合适。现在有很多初期创业的公司,也需要很多优秀的程序员加盟。如果有理想,可 以选择加入一个团队,也有相应的股份,这方面我可以充当一个桥梁。
看看前网络程序员是如何创业的?找合伙人已经OUT了!
“来吧,做我的CTO,给你股份,咱自己当老板。”
因为同学的一句话,前网络研发工程师YK辞职创业。一群毛头小子,技术能力过硬,但毕竟资源不足,经验欠缺,不到半年,项目无疾而终。 互联网创业 盛行的现在,一个好的技术抵得过一支团队,更别说出身BAT了。
但很多人不知道的是,就是这一样一支技术实力超强的团队,最终竟然也输在了人上——过于强调技术,没有头脑足够清醒的团队成员及时制止。这也是为什么要选背景不同、经验不同的一群人一起创业了。曾经和YK聊过很久,项目失败的背后是他对创业更多的思考,特别是对于那些拥有好工作的人来说,抛下一切投身创业需要付出的成本太高,但如果只是给创业者打工,那还不如守着原有的工作,至少更体面、更有保障。
就在我以为他会重新安安稳稳工作的时候,却意外的在创业大街再次见到了他。细聊起来才知道,他并非辞职重新开始创业,而是用自己擅长的技术加入到新的创业团队中,以外部合伙人的身份帮助两个不同方向的项目解决技术开发问题。这次来到大街,是专门和一支团队开技术碰头会的。
他的这个选择意料之外,却又情理之中。意料之外的是他居然理智的没有辞职,情理之中的是他选择了成为外部合伙人,用业余时间一边做顾问、一边写代码,实现了时间、能力价值的最大化。
其实,说到外部合伙人就不得不提智筹平台。去年3月,正是看到了毛大庆宣布 离职 但依旧担任万科外部合伙人的新闻后,智筹将“外部合伙”作为创业者&人才之间对接的一种新的合作关系。现在,创业者来智筹发布任务,除了能与互联网高级人才建立长期顾问、短期兼职、驻场办公、远程协作等合作关系之外,也能通过部分现金+可回购股份的方式,与人才建立外部合伙关系。外部合伙人是一个没有行政职位,但依旧为企业、团队做贡献的人。
对于创业团队来说,外部合伙人解决了以下问题:
1.快速成长,度过难关。
按照原本的思路,YK服务的两支团队还陷在满世界寻找CTO、找程序猿的泥沼中,但有了外部合伙人,更低的参与门槛吸引了更多人才愿意加入,不仅解决了燃眉之急,更推动项目度过难关、快速前行。
2.满足了人才的多样性。
一个合伙人已经很难找了,更不用说基因不同、知识不同、经验不同的一群人。外部合伙人大大降低了对人才的束缚,而这样的一种合作模式,让越来越多的人才愿意加入到创业中来,组建这样一支多样化团队更容易。
3.更快找到,成本更低。
外部合伙人是通过股权激励撮合到一起的一群人,利用可回购股权让人才把创业者的事当做自己的事,目标、利益一致,做事更用心、更高效。股权支付的方式又可以降低初创的资金压力,创业者不用支付很高的现金,也能请到非常NB的人才来解决难题。
外部合伙人极大的缓解了创业找人难的窘境,但当创业者真正去寻找外部合伙人的时候,往往又会担心外部合伙人的时间、效率怎么保证?水平怎么衡量?什么人才适合做外部合伙人?
首先,时间自由是第一标准,至少是时间可控,能够拿出足够精力完成任务。否则,连时间都不能自由支配的外部合伙人也太不称职了,CEO找你开会,你却说你在公司加班,即耽误了创业者的时间,又降低了自己的口碑。
其次,独挡一面的能力绝对必不可少。做得了合伙人的,都是某方面十分擅长的专业人才,那么做的了外部合伙人的,需要更高的水平。从一开始我就强调,外部合伙人一定是高级人才,不然没资格帮助创业者解决问题,甚至指导方向。俗话说,没有金刚钻不揽瓷器活,想做外部合伙人,一定得先有过硬的水平。
第三个标准是认可股权模式。中国基金报曾发表评论称,未来十年,如果你与股权无缘,可能无法实现财务自由。在如今楼市低迷、股市重挫的时候,股权投资却异军突起,特别是在大众创业、万众创新的激励下,全国创业氛围浓厚,涌现了一大批优质有潜力的新兴企业、互联网企业。也许你不是土豪,没有钱参与众筹,而此时外部合伙人模式的出现,让普通人也能参与,只不过是用能力和时间参与创业、解决任务,换取股权。
智筹在帮助创业团队对接外部合伙人合作的过程中,通过实践 总结 出了最适合做外部合伙人的群体:自由职业者、大企业主管级以上在职人才、工作室、外包团队等等。这些人能够站在实战的高度,不只提供经验分享,更能够有针对的解决具体问题,融入到项目和团队中。
对于很多创业小伙伴来讲,找钱、找人是躲不开的两座大山,有钱了当然可以请NB的人才加入,有人了事儿干好了钱自然不愁,先有鸡还是先有蛋的问题永远都在,找到一方的突破口自然事半功倍。这时,外部合伙人就是打破这一死循环的关键钥匙,只是需要创业者用开放的心态接受、尝试,毕竟改变原有习惯肯定难受,甚至懒得尝试。但创业原本就是不破不立的事,只有打破旧有习惯,才能接受新鲜事物,才能有更多新的收获。
从另一个角度来看,参与创业的门槛降低,意味着越来越多的人能够将自己的智力换成股权,帮助推动创业的同时,也是对未来的投资。根据智筹平台的数据显示,当 创业项目 获得融资后,人才所持的可回购股权将会以最少3倍的价值兑现,这对于很多人来讲也是不小的吸引力。外部合伙人模式,降低初创资金成本的同时,也让越来越多的高级人才加入到创业中来,大大激发了创业活力,无论创业还是参与创业,用起来都是极好的。
D. 作为程序员自己的小团队,怎么找私活
很多程序员上班一般都是一个项目做两到三周,如果完成自己的那一块的话,就可能会有相对多的时间,这个时候,很多程序员就会想着多赚一点外块,这个时候就会利用自己多出来的时间来接点私活,也有一些玩得好同事就会私下问到我这个问题,今天就来个大家分享一下我的一些经验吧。
第二个通过这个途径找到我的甲方,叫鹏哥。开发一个网站,总价一万多,吃了上次的亏后,我自己就不想参与了,就找了一个读者(小李)做。结果这个项目烂尾了。小李交付的产物我自己都觉得不好意思,bug 非常多。在我看来,既然项目的订金已经收了,作为开发人员,至少应该交付一个说得过去的产物——负责任吧。
很遗憾,个人品牌招揽来的前两个私活最后都搞砸了。这里有必要总结一下:作为程序员,既然打定主意要接私活,那么接到的时候一定要珍惜。如果一开始觉得价钱低,就趁早拒绝,免得因为需求变动等等原因砸了招牌。
当然了,通过这个途径也做成了四单,每单的价格差不多两万。这里就不再详谈了。
E. 北大青鸟分享初级Java程序员成长的方法
对于初级Java程序员来说,刚开始接触Java工作时,觉得什么都很新鲜,随着工作时间变长了,发现新鲜感慢慢地消失了,如果你觉得你工作几年后,还是愿意跟新入行的Java程序员一样,那么接下来你就不用往下看。今天就跟北大青鸟http://www.kmbdqn.com/一起来看看,初级Java程序员如何成长为高级?
初级Java程序员如何成长为高级?
1.坚持学习
初级Java程序员要想自己快速向高级Java程序员靠拢,唯一的办法就是坚持学习,你的Java技能变得更加强硬,你才能够从初级Java程序员进行升级,怎么学习,你可以经常浏览Java技术博客、Java技术论坛,也可以跟你公司的前辈学习,学习方式很多。
2.累积经验
在Java行业中,工作经验是特别的重要,我们知道刚入行的Java程序员,跟入行1-2年、3-5年拥有真本身的Java程序员的薪资待遇存在天壤之别,你想从初级Java程序员成长为高级Java程序员,那么你必须累积一定的Java工作经验,行业经验、技术经验。
3.保持上进
从一个初级Java程序员到一个高级Java程序员,这不是一个容易的过程,每个人所花的时间也不一样的,得要好几年这是确定的。很多朋友觉得这个过程太漫长了,很多时候都是爱谁谁,完成当下工作就不错了,其实这就是心态出了问题,缺乏了上进的心,所以要保持上进的心。
F. IT培训分享刚入行的程序员小白如何才能快速成长
每个大牛都是从小白成长过来的,对于刚刚步入职场的程序员来讲,面对身份的转变和还未熟悉的工作,都难免会有不适应,对自己未来的成长也会比较迷茫。
No.1
大部分的程序员从小白到大牛都是要经历一个循序渐进的过程,没有一蹴而就的成功,程序员的成长也是分阶段的,而每个阶段的侧重点又都不一样。
很多人总想一口吃成胖子,可往往就是这种急躁的心理,反而使得自己更难静下心来夯实基本功,适得其反。
要知道,成长从来就不是一件简单的事情。那么对于IT小白来说,IT培训http://www.kmbdqn.com/介绍怎样才能在更短的时间内成长为一名优秀的程序员呢?
No.2
首先,要制定详细而明确的阶段性目标。工作时如果有一个目标,会帮助你找到努力的方向,对自己的事业发展也很有帮助。而越详细、越明确的目标,其可实施性就越高,这也能使你找到短期奋斗的动力。
其次,要利用空闲时间多学习。技术实力始终是一个程序员能否往前走的关键,没事的时候多看代码,保持对代码的敏感度。只有看的多了,琢磨的多了,才能培养出好的代码审美感。
除了要保持对代码的敏感度以外,还要让这种敏感度成为你写代码中的利器。因此,你需要勤写代码,多做总结,不断优化自己写的代码。
最重要的是,要注重在项目中去锻炼自己。项目开发是帮助程序员快速成长的一个有效途径。实践出真知,只有多实践,才能发现自己在实际的项目开发中存在的缺点和不足,找出来并及时改正,将为自己积累下十分宝贵的经验。
No.3
不知道大家有没有听说过“空杯心态”?
“空杯心态”简单来说就是:如果你的杯子是空的,新东西就比较容易进去;反之,如果你的杯子已经满了,新东西就进不去。
举例来说,可能会有一小部分自以为是的同学,他们在刚从学校出来时思维较为固化,自己的东西太多,顽固又不肯放弃,新东西自然难以学进去,成长自然就慢。而具有空杯心态的同学,他们会适时清空自己,甚至有意识清除脑中顽固区域,虚心主动学习,渴望更多知识,学到的自然就会多。
因此,要想快速成长为一名优秀的程序员,就要学会保持空杯心态。
随着技术更迭速度的不断加快,IT行业对程序员的学习能力要求也变得更高。只有时刻保持对学习的热忱,保持空杯心态,才能早日成长为一名优秀的程序员。同时,要坚持自律,懂得自我约束。越是在特殊时期,保持学习的自律能力就越重要!
G. 北大青鸟分享程序员提高软件开发效率的5个经验
现在网上常看到很多的文章,是写关于程序员怎样提高工作效率的。有些看看还是有用的,但有些还是不要盲目学的好,事后在想,我也可以写点这方面的内容,以自己的成功经验为案例,希望可以帮到大家,当然,我也不想浪费太多的时间来说和让大家学着做,而且北大青鸟http://www.kmbdqn.com/认为所写的这几个观点对我个人还是有效的,但不一定对大家也一样有效,如果也一样对某些人有效,那么,很高兴就够帮到你。
1.不要犹豫,有时断一下网是很有必要的。
说实话,再也没有比这个更好的了,而且效果非常明显,因为,如果你想要好好的静下心来工作,那么,把网断了,手机最好也静音,要使用的编程语言和编程工具用离线版本的就好了,真要是有什么确实解决不了的难题用手机搜就好了,不过我也知道这时用电脑更快捷些,但对于那些不自觉,只要上网就停不下来人来说,还是不要用电脑搜的好。
2.目标要明确
如果同时有几个项目要完成,你是不是就觉得不知道要从那里入手了,我要说的是,不要自己乱了,先从中做个排序,把几个项目从重到轻例个表出来,然后再一个一个的完成。所以大家不要想着你可以一次都能做完,这样可能会导致于最后一事无成,一定要明确规划好目标。
3.休息和睡眠要充足
不是一定要不停的工作才会出高效率,适当的休息后再工作可能会效率更高,因为长时间的工作可能会出现疲倦感,这样会让你很难集中精力好好工作,这时你可以停下手上的工作做些别的事情,可以闭目养神,也可以听听音乐,站起来望下窗外,随你喜欢,做些什么都是可以的,另一个就是,到了晚上该睡觉的时候是一定要睡觉的,不然你的程序员生涯就不长了。
4.做好提前计划
这个绝对是实践后得到的好结果,我试过在当天的工作都完成后,为第二天的工作做了个计划,结果到了第二天发现效果太棒了,当你坐下来打开电脑就能很快的进入到工作的进程中,因为前一天的计划已经让你的脑子很清楚先做什么后做什么。如果当天有些工作没完成就更应该记录下来,特别是在周五的时候,因为我总是在周一上班时脑袋是蒙的,有一小段时间是不知道自己该做什么,所以提前记录当天没完成的工作是对下次工作很好的交代,做好提前计划也是对第二天工作的一个很好的开展。这样你的工作效率会大大的提高是显而易见的。
5.如果有时间,可以来点下午茶或是咖啡什么的。
有时,不管是来点茶还是咖啡都有可以提高我们的工作效率,不过这也不是绝对的,还是要因人而异,又或者是来些其他的小零食也是不错的选择。
H. 一位 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
I. 程序员该如何做好一次分享
很多人,尤其是程序员肯定都有这种想法:”每次参加技术分享会,看到台上分享者的激情讲解,也想自己哪天能做一场优秀的分享?“
但是技术宅们有多是内向的性格,对于抛头露面总有一丝胆怯,而且技术宅多沉浸在自己的专业领域内,就算做分享也没有很好的效果,久而久之就会越来越抵触分享。
但是分享却又是提升实力最好的方式,工作几年我也做过好多次的分享,也是从刚开始的抵触,到现在的期待。我也总结了一部分自己对分享的感悟和方法,我觉得有必要写出来分享一下给 ”想分享但是不知道怎么分享的技术宅们!"。 今天我们就一起来看一下如何做好一场优秀的分享会。
在正式开始文章之前我也想问大家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方面的一些经验。
J. 现实中程序员是怎样飞快敲代码的
敲代码很快有几个条件
1.对项目代码和结构非常熟悉,知道整个数据流的在代码中的流动过程和变化过程。知道当前新增的代码在整个项目处于哪个位置,对于数据会有产生什么新的变化。这些要心理有数。也就是从架构层面去思考代码的编写。
2.对于需求理解的很透。这样业务逻辑转成代码逻辑就不会有任何不清楚的地方。
3.已经解决了技术难点,也就是说前期测试性代码已经写过了弄清楚了,避免了突然出现的技术性难点
4.新增的代码和新增的数据结构已经仔细思考过了,并设计好。也清楚引入这些新的代码和数据结构对现有代码的整体影响
5.异常点的位置的处理方案已经安排好了。写代码一部分是正常业务流程,算法过程,但是另外一大块就是处理各种异常。当异常出现之后,是代码重试,报错后忽略,还是报错之后停止代码,还是报错后清理代码并重新恢复上一个状态,等等。这些都是要心理有数。
6.对于如何新增源代码文件,命名函数,命名文件名,命名类名,命名变量名有一整套方案。有时候想个函数名或者变量名都要卡好几分钟,就不算飞快了。别笑,想个变量名,网络十来分钟的时候多了去了。
7.外部环境已经准备好了。IDE稳定,数据库结构稳定,数据稳定,网络稳定,访问网页顺畅,准备好免打扰的牌子。准备好刷卡提需求的二维码,准备好板砖和大刀,预防产品经理提需求和改需求。