导航:首页 > 程序命令 > 程序员编码定律

程序员编码定律

发布时间:2025-05-22 12:39:54

1. 程序员也难逃的二八定律,成为顶级程序员真的有那么难吗

程序员也是分为等级的,因为每个人的实力水平不同,成为顶级的程序员肯定是要付出很多努力的,有时候写程序就可以看得出来,有的程序员写出来的程序经常会有漏洞,导致系统运行不稳定,但是有的程序员人家写的程序不但占用的内存少,没有漏洞,而且也运行流畅,这就是顶级程序员的最基本工作,因为大部分的程序员根本就没有自己写的程序,都是复制粘贴别人的,所以说现在的程序员就是搬运工而已。

生活中的程序员看着很辛苦,实际那是他们把他当作挣钱的工具,当你的内心太急功近利的时候就会感到疲惫,也做不出太大成果的事情,因为你的心思没有在开发程序上下功夫,总是漂浮不定的,所以说二八定律永远的存在。

2. 电脑怎么编程序程序员如何在电脑上编程的

❶ 电脑程序编制怎么弄啊

编写程序需要用软件,一般的软件有VB,还有C语言等很多类型。如果你只是编写一些简单的启动程序,你可以打开记事本输入代码,然后保存,再修改一下文件的格式就可以了,可以改成BAT等。不如说移动磁盘里的autorun.inf
文件就是一个简单的程序文件,你可以用记事本
打卡
里面的文件看看

❷ 电脑怎么写程序

以在 Windows 操作系统下,编写一个 C 语言源程序为例,首先必须要在电脑上安装一个 C语言编译器(例如:Microsoft Visual Studio C++),然后进入该编译环境,在该环境中编写 C 语言源程序、编译 C 语言源程序、调试该程序、直到最后生成可执行的二进制文件(*.EXE)。

❸ 电脑怎么编写简单程序

这是最简单的了~~

❹ 程序员如何在电脑上编程的

说到如何在电脑上编程。首先需要知道下面这个问题的答案:“程序到底是什么?”计算机程序是指令集,它告诉计算机如何执行特殊的任务。VB~VC~VF~C~C#~C++~java~.NET~这些都是编程 ASP~CGI~PHP~JSP这些是WEB编程。。 虽然都是编程,但编出来的程序可是不一样的。 目标是什么?开发?创业?还是去公司上班?还是业余爱好? 如果想业余编小程序,推荐VB~VC~容易上手。简单。也蛮强大。 如果想学好了去企业上班,推荐C++~~~.net~~~JAVA之类的大型项目开发。 如果想做网站,就学ASP~CGI~PHP~JSP,这4个就JSP最最最难,先学ASP。现在是人工智能时代,国家出台了很多政策鼓励人工智能发展,无人超市、无人驾驶、无人银行、AI人脸识别层出不穷,我觉得以后人工智能渗透的领域肯定也会越来越多,所以我推荐让孩子学习python语言,python语言适合做人工智能的开发。简单容易上手,学好了以后对学习、出国留学、就业什么的也会有好处。首先,工程师根据你的需求给你一个合适的方案,这个方案包括硬件搭建、软件架构。 然后,在你满意的方案下为你选用设备 最后,程序员按照你的要求编写软件 各种设备有自己的命令解释器,程序员写出来的软件是可以按照机器能解读的编码编写的,这些不需要用户知道,用户只要知道怎么使用,怎么维护就可以了,如果知道的更多,那就可以成了开发者

❺ 电脑怎么打开编程

编辑程序让电脑执行的过程就叫编程。
编程语言很多,具有代表性的计算机语言有Java,BASICC,C++,VB,VF,SQL,网页编程JSP,ASP,PHP。Java是目前应用最广泛的编程语言之一,大学中则常常以C语言作为编程的入门语言。
很多软件都可以编程,主要有eclipse,MicrosoftVisualStudio,MicrosoftVisualBasic,MicrosoftSQLServer等等。

❻ 怎么去报电脑编程序

题主是想问怎么去编写电脑程序吧?编写程序简单步骤如下:
1、桌面空白处右击2,新建3,文本文档,4,新建文本文档的图标。
2、修改txt文件的扩展名,右键-重命名。将.txt改为.vbs,修改成.vbs后看到图标变了,这就说明你的系统能够识别他成一个vbs脚本程序。
3、根据需要在里面写代码了,右键-编辑文件,直接就可以像编写文本文件一样在里面写代码了。
4、然后在里面输入一句弹出简单对话框的代码。
5、之后关闭文件并且保存,可以在编辑的时候直接按CTRL+S保存再关闭,然后去直接双击刚才新建的文件,就会弹出一个对话框来了。这只是系统自带的一个脚本语言。
6、这只是系统只带的一个脚本语言,如果要编一些其他的程序就需要装对应的代码编辑器了。例如C#就得装visualstudio,java的、、eclipse等等。

❼ 笔记本电脑如何编程

笔记本电脑要想编程,首先要先选择编程语言,然后安装上编程语言工具软件就可以了,如果没有学过编程,可以用中文的"易语言"。

❽ 如何在电脑编写一个小程序,输出字符串

在电脑编写一个小程序,输出字符串,就找相应的软件开发工具。
例如:在这里我们借助的软件是Visual C++6、0。打开软件,先新建一个工程,在新建一个C++源文件,这些你听起来可能有点陌生,不要担心,你只需要按照下面操作就好。在建好文件之后,在源文件处,输入下列代码#includeusing namespace std;voidmaincout<<"我的第一个程序!"<<endl;然后编译这个程序,点击右上角有红色边框的按钮。最后运行这个程序,点击右上角的红色框里的按钮,看看运行结果。

❾ 你怎么在电脑上编程,而不用任何软件

40267">

我从编程写软件学到的 7 件事,其实学习编程不难,写软件也不你那,就看我们如何看待了!

我正在一点一点的从一个工程师转型为管理者。别弄错了,虽然我在转管理,但我仍然在每天写代码。不过我发现自己在会议和电话中会花越来越多的时间去分析讨论,试着去组织团队,并且为全局部署而不是具体战术而烦恼。

当然这不是一件坏事。高层次的决策往往比单个的类和函数的细节更有影响。让一个团队更有效率,比仅仅让自己更有生产力有更高的杠杆作用。但我想我已经从我多年来的编程中吸取到了一些经验。我希望大部分经验可以应用于管理方面。

1、没有规定(rules),只有公案(koans)

译注:公案(Koan)有五种重要的涵义: 作悟禅的工具; 作考验的方法; 作权威的法范; 作印证的符信; 作究竟的指点。)

举个例子:DRY,意思是“不要重复你自己”。作为软件的基本规则这很好理解,因为很多话可以证明:“我做 X 是因为它没有重复。”这说得通,不是吗?如果你有两个或者两个以上部分的代码在做相同的事情,说明你正在浪费。而且如果当你需要改变它们其中一个的时候,你可能也需要改变其他的,并且你很可能会忘记这么做。当它们不同步时,你会得到一个怪异的 bug。因此很显然你不能重复你自己。

然而,在使用了几年之后,人们开始怀疑它的普遍适用性。假如你的两个方法中包含相同的代码块,所以你将其拿出来形成一个单独的函数。通常那些方法会开始朝不同的方向发展…接着你发现自己要在函数中加入更多的参数,很可能为结果立了更多 flags……然后下一个接手的程序员会因为分离出来的函数以及它所带的特定的参数和结果,而出现认知负载。你会意识到如果当初允许自己重复,并让两块代码自然的发展为不同的个体,你生成的代码将会更简单直观。

这意味着 DRY 不好吗?当然不是!通常在合适的环境下使用 DRY 是正确的…好吧,也许。我个人的经验是:“重复一次是可以的,超过一次就不太好了…当然这取决于所处的环境。”因为所有事都取决于环境。DRY 的目的并不是为了 DRY。如果你迷信于此,小孩儿,那你还有太多要学。DRY 的目的为了让你了解 DRY。那当然不是规定,仅仅是公案。

(让我重申一遍:我在讨论的是软件。在我的经验中,硬件规定的确更倾向于是我们所理解中的规定。这就是我为什么要从电气工程转到软件的原因)

细想我最喜欢的两个计算机科学“定律”。第一:“计算机科学中没有一个问题是不能通过添加另一层抽象来解决的!”这句话完全正确吗?当然不。这在现象学上是正确的吗?实际上,的确是。这是否意味着抽象是解决任何问题的正确途径?不,不是。它是一个公案,可以启发思想。

还有我历来最喜欢的:“第一优化定律:不要这样做。第二优化定律(对专家而言):不要又这样做。”这显然是一个公案,却称自己为法规。是时候让你的代码运行的更快吗?不。是时候让你的代码运行的更快吗?还不是。什么意思?意思是要考虑到时间,复杂性,认知负载,具体结果,生活意义,人类存在的意义。并且三思而后行,小孩儿。但不要花太长时间,我们还有工作要做。

2、要想得到他人的信任,先信任他人

这不仅仅针对于管理者。虽然它对管理者尤其重要。信任是你真正拥有的唯一价值。如果你的公正、判断、理解、诚实不被信任。接下来你组织的成员将把你视为祸害并绕着你走。然而,如果你是个有能力但不被信赖的开发者,你可能还有一些价值。虽然你在每个决定上做的努力都会被大大消减。

不过更重要的一点是:一个团队的成员需要互相信任。当 Natascia 说:“我来解决那个问题单(ticket)”,你必须相信她会去做。当你说:“Peter 能在截止时间前完成的。”,你必须相信那会实现。当某人说,“我有一个疯狂的点子”,他们必须信任他们会被尊重和认真对待,尽管那点子的确很疯狂。

你是如何建立和得到信任的?答案很简单:你去信任他人。你相信那个说他可以学会这个新库并且在周一前会整合完的人。你相信那个说他需要提前离开,因为家里有事而会错过明天工作的人。你相信那些想在截止日期前一个月休假的人,因为他们觉得自己已经开始筋疲力尽了。你相信说想要解决难题的初级程序员。

但你不总是正确的。有些时候人在工作上存了坏心。你需要揭露这些人的真面目,让他们尽早离开。有时候你要信任那些真心想成功的人,虽然他们会失败。但违反常识的是,长远来看这通常是个胜利。因为那些人会记住你的信任,他们会尽一切努力来报答你。

3、简单比优雅重要的多

我也喜欢紧凑优雅的代码。我喜欢灵活的框架,有如此多抽象层次随时待命,无论抛出什么改变的需求都能解决。我喜欢使用位向量、位位移、略微复杂的数据结构和不太流行且古怪的小语言特性,但在特定环境下十分实用。

然而你并不只是为了你自己写代码。即使它只是个“原型”。(我已经记不清我有多少“原型”在多次对层操作和润色的过程中出现问题。)而且你不仅仅是为了解决当前的问题编写它。你正在为了下一个接手的开发者可以使用它来解决下一个问题而编写。把你写到那五行代码扩充为十行可以增强其可读性,你知道吗,也许扩展为十五行效果会更好。

你可以提前尝试并用灵活且充满抽象的框架解决它们。但是也许预言不是你的强项,也许你关于下一个问题的概念的想法完全是错误的。也许仅仅编写足够简单的代码才是最佳选择。有一个命名约定和一个编码风格,让它读起来像英语一样。也许不是添加一个类,而是下一个开发者在试图跟随你的控制流程时必须保持另一个文件的开放。你应该用愚蠢的方式,不雅的方式,简单的方式。

4、动力比大多数事都重要

我们都曾见过这种情况。一周里每个人都在检查代码,构建显而易见的雏形,每天不断增加特性,测试覆盖率越来越高。疏忽也随着生产的想法和解决方案而出现。不知怎么的下一周所有事都变得缓慢起来。关于 A 的决定,会影响到 B、C和 D。当人们可以运行D、E 和 F 时,它们不是逻辑序列发展上的一部分。于是需要做更多的假设,认知负载加重,你不得不模拟出一堆东西来写出非模仿代码。一些人需要做这个决定。

或许不是决定会瘫痪,是你上周所做的一切都在错误的基础上,是一个“地震多发区”的技术负债。你需要停止所有事返回并重构它。而且你必须马上开始,因为等的时间越长,事情会变得越糟糕。没人想看到这种事发生 。但他们宁愿现在面对也比下个月知道的好。让暴风雨来的更猛烈些吧。

也许上周每个人都拼劲全力,现在实在撑不住了。你知道该怎样吗?得让他们休息一下,每个人,休息一整天。我保证,这会给你接下来的“长跑”节省时间。

I我们很难定义、衡量以及说明动力。但它在软件开发中是真实存在的东西。而且它的缺失会成为造成首要影响,导致我们需要去解决很多根本问题。别忽略它,也别期望或假装它会神奇地回来。察觉警报并迅速采取行动。

5、与和你互补而不是像你一样的人一起工作

每当我看到人们根据“文化契合度”来找人的时候,我就会拼命翻白眼。你知道大多单一栽培会发生什么吗?他们遭遇了他们不知如何解决的病原体,然后嗝屁死翘翘了。

你不会希望你的所有开发者、设计者、 QA人员、产品人员、销售人员和执行官是彼此的克隆人。你肯定不想。每个人都有自己的长处和短处、优点和缺点。你想要雇佣的是他们的长处,让其他人的长处弥补他们的短处。

比如说我,写代码非常快,擅于沟通,读写文章都奇快。我在任何时候都能熟悉很多编程语言和框架。我理解东西透彻且迅速,有丰富的经验。然而我还是一个在特定领域、框架和语言缺乏深刻专研、精通掌握的全才。我是一个真正从别人身上获益的建筑师,跟踪所有需要,在骨骼构建好之后添加肉体和润色。我还是个 UX 盲(等一下,你说那些还没对齐?),这一直被当作同事之间的玩笑。

像我这样的人非常难找到也是及其被需要的。但一个由我和九个像我一样的克隆人组成的公司是从一开始就注定要失败的。唔,我们会把很多事情做好,但只需要一个集中的盲点,一个灾难性的空隙就足以毁灭公司。大多数人承认有些事情他们做不好,另一些人可能需要照应。这些人往往是寻找“文化契合度”的人,并试图雇佣和他们一样的人。真令人哭笑不得。

6、任何决定都比没决定强

别犹豫,当你拿不准主意时,去做就好了。当然,这可能不适用在生产代码的时候。但它可以应用于除此之外在软件开发里的任何方面。我们在历史上发展最快的行业里工作。我们生活在以指数形式发展的世界里。时间不等人,别浪费它。

这与低级决策的高级讨论一样真实。在高水平的讨论里,比如“我们应该实现特性 A 还会说 B?我们要用哪种方式实现呢,X 还是 Y?“,常常会产生这样的对话,”让我们先跳过这个…下周再对它进行讨论…“,或者更阴险的,”让我们先研究一下其他人做了什么再来讨论一次。“这样的问题极少情况下会有正确答案。大多时候,像这么说才是正确的,”我会在今天之前决定尝试哪一个,这样我们就可以明天开始行动了。

甚至 A 选项基本上是错误选择,开始进行 A 大概也比啥都不做强。这和直觉是相悖的,但它通常也是正确的。以实际上手的方式去理解 A 的本质是一个更好的办法,这个道理始终是正确的。这样的理解可能会引导你做出更好的决定。

对于低级决策,那就更应该如此了。“规范没有说明我们应该如何处理错误条件 X,或者错误信息应该是什么。”(规范似乎是为一个有抱负的乌托邦写的,在这种乌托邦中,错误条件和独角兽一样罕见。)“我知道,我只是想插一句,回去问问他们在这种情况下想做什么!”

这非常诱人。如果你这么做,没人能指责你哪里做错了。但这么做是错误的。宁愿继续自己做决定,尽管有些鲁莽,也不要什么都不做等着问别人。让它们在你做已经写好的程序和你学到的教训里迭代,虽然你知道这并不完美,也好过从头开始错误认知。它们和项目将会变得更好。快速尝试,快速改变方向。

7、保持谦虚,但要自信

你不需要所有的答案。甚至是我也不得不勉强承认我不会有全部的答案。可恶,我甚至连它们的大多数也没有,不过我有自信,只要给我足够的时间和精力,我能弄清楚大部分。并且你也可以。

我们无法都成为 Jeff Dean(谷歌大牛)、中本聪(比特币创始人) 或是 Margaret Hamilton(登月计划中的女程序员)。我们在一个充斥着真正的天才和自称天才的地方工作。没人知道所有的事情,每个人都敏锐地意识到他们所不知道的一切。幸运的是,大多数情况下,我们不是科学家。我们的工作不是去寻找新突破。我们的工作是实践他人的发现,使东西运转,希望服务于人们真正想要的东西。也许你永远不会发明任何东西,像是布隆过滤器或默克尔树。不过大多与你共事的人们也不会。而且这不是重点,重点是使用布隆过滤器和默克尔树,亦或是在它们之上建个抽象层,来实际的完成它们。

所以假设你懂的会比在座的人都多是错误的,就算你觉得他们违背直觉的想法很疯狂,他们的语言选择很糟糕。假设人家比你懂的多也是错误的,即使真是那样,也没关系。世界上多的是聪明人因为一些不可思议的原因什么实际东西也没做出来。(开个廉价的玩笑╮(╯▽╰)╭:这就是为什么我们有学术界的原因。)

如果你真的做出了一些东西,在面对那些令人眼花缭乱的理论知识,或是和你相似甚至比你做的更糟糕的人时大可不必谦虚。在一天结束之时,正是那些在战壕中的开发者——构建、测试和开发了代码的人,真正做了事情。话说那些发现自己远离战壕的人,那些没有和你一起并肩作战的逃兵,你有权利鄙视他们。并且向你的伙伴致敬,而不是上司。


原文标题:做好这7件事 让你学编程写软件不在难

原文链接:http://www.epx365.cn/peixun/software/201840267.html

3. 如何成为一个程序员

想要从零开始成为程序员,先不要着急的去学习,而是先要去了解程序员。

1.随便在招聘网站搜索就会发现程序员会分有很多类型,那你就需要确定自己将来想要发展的方向,自己的职业规划是什么?

2.通过搜索可以看到,刚刚起步的程序员工资并不是很高而且学习阶段也会比较忙,那这个时候你是不是靠考虑一下如何兼顾生活和工作?工资如何支配合理等问题(没有经验限制的工作相对较低)

PHP程序员岗位要求

关于学习建议你这样试试看:

学习的方式基本可分为两个类型,一个是碎片化的学习,一个是系统进修

  1. 你可以从网络上各机构大量的视频或者书籍得到相关的学习资料。从大量的资料中,发现真正的干货,从而不断学习,这属于碎片化的自习。由于自学周期比较长,还有不少小伙伴选择是一边工作赚取生活费,一边再利用闲暇时间学习,当然如果你的精力充沛,这也是一个好办法。

  2. 如果要报培训班, 一定要找正规的培训机构学习,不然容易被坑。培训机构里面的课程都是现在工作中需要用到的,时间短,基本上是可以让你快速上手工作的。但是要把所有的知识点都消化就没那么快了,所以需要自己私下更加的努力,巩固学习。

注意事项:

1. 自学要注意的是:自学入门时会很枯燥,不要两天打鱼三天晒网!!!切记

2. 在培训机构里学习要注意的是:勤加练习、主动自学、有问题提,不懂的尽管问老师(把交的钱发挥到极致),不然之后再有问题就没有这么好的机会能够直接得到老师的指点了。

最后,祝愿想要成为程序员的小伙伴都能心想事成哦(*^▽^*)~

4. 敲了 10000 小时代码,我也没能成为一名高级程序员

【CSDN 编者按】 Malcolm Gladwell在《离群索居》( Outliers)一书中曾言 ,要真正掌握某件事情,需要10000小时的练习。 而本文作者Greg Bulmash拥有40多年的编程经验 ,写了10000个小时的代码,却没能成为一名高级程序员。 为何一万小时定律会失败呢?他分享了自己的一些看法 或许他的经验能够对你有所帮助,一起来看看吧。

原文链接:

本文由CSDN翻译,转载需注明来源出处。

译者 | 章雨铭 责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

Malcolm Gladwell在《离群索居》( Outliers )一书中说,要真正掌握某件事情,需要10000小时的练习。其实,10000只是一个粗略的数字,而且这句话的含义也被过度简化了。我已经断断续续进行了40多年的编程。可能已经写了10000个小时的代码,但我甚至还未能成为一个优秀的程序员,更别提成为大师级的程序员了。

我认为有以下几个原因。首先,在这10000小时中,我主要学习了4种不同的编程语言,以及其他一些辅助语言。我从一种语言换到另一种语言时,发现它们有的概念可以互通,有的完全不同。而有趣的是,在这种语言中没有意义的概念可能用来构建它。

例如,JavaScript没有本地链接列表实现,但如果在V8 GitHub库的src目录下搜索 "链表",会发现有76个commit提到了它。即使它们在语言本身中没有用C的链接列表,但会在引擎下使用C的链接列表。

每种语言都有自己的语法和特殊的实现方式,这些是必须要学习的,而不仅仅只是学习其概念。一种语言的最佳实践方式对于另一种语言来说可能不是最好的。在编译语言上我从来没有花过很多时间,几乎总是使用解释型语言,如BASIC、PHP、JavaScript、Python。我学习过C#和Java,用Rust做过Hello World,但在Linux中从源码编译对我来说十分困难,所以我通常只是下载源码,按照教程中的指示操作,然后祈祷代码能够运行。

除了学习这些语言,我还学习了服务器技术和系统架构的基本概念,不是从编程的角度,而是从网络管理员或者说系统管理员的角度。而且无论是建立一个大型网站,在Flash中创建矢量图并将其渲染成位图,还是学习通过AWS解决方案架构师助理认证,我都已经做了很多次。但是很多东西我已经忘记了。我已经学会了这些语言的框架和库,如JavaScript的React和JQuery以及PHP的Laravel......然后也忘记了许多,因为我为完成一个项目学习了它们,然后就没有再使用它们。

即使写了10000小时的代码,也不意味着你能够轻易地在不同语言之间转换。当你真的进行转换的时候,你会发现10000小时没有那样神奇的魔力,因为另一个不可避免的原因:记忆衰退。正如我所说的,如果我停止使用一种语言,甚至只是停止使用它的一个功能一段时间,我就会像忘记 "高中西班牙语 "一样忘记它。我在高中时读完了西班牙语3级,在大学时考过了西班牙语4级,并获得了A。而现在,我可能只记得不到10%的内容。

例如,我几乎完全忘记了怎样使用常规动词连接过去式,更不用说不规则动词了。但是因为我以前练习的足够多,我知道自己的不足之处,所以我可能比刚开始学习的人更快地恢复以前的知识。但可能需要几个月的强化练习才能全部恢复。

十年前,我精通PHP,在一个定制的MVC框架中工作(由其他人创建),使用Doxygen来映射类的继承层次,并使用JQuery来构建前端的交互性。但我在7年前没用过PHP了,转而使用Node。现在,我需要花5分钟并且改正了一些语法错误,才在刚才提到的PHP副本中正确地写出一个Hello World。

去年12月时,我为freeCodeCamp的前端库认证建立了五个React项目,但在那之后,我就没有再编码React项目了。过去了两个月,当我开始准备面试的时候,我觉得我就像是React新手。如果我看到自己写的代码,能够很快理解。但是因为很多东西都只是我准备的辅助工具,很多我都忘光了,所以我需要回到文档中去开始一个新的React项目再开始工作。和新手相比,我只是走得更快。

这就是新手和已经入门了的区别。一万个小时可以让你成为一个小提琴大师。但是如果你每隔500小时就换一次乐器,并想要成为整个交响乐团的主角,那你不一定能够更胜一筹。所以为了强化和拓展你的技能,练习不仅要广泛,而且要持续。

10000小时是什么样的概念?是5年每周工作40小时,两年休息1周(假期、病假和休假都在这2周内)。你会发现有的工作招聘时要求在一个3年的框架内有5年的经验。5年似乎是成为专家所需的标准时间。因为对框架的无知和这种简化的标准,就会产生逻辑上的矛盾,一言以蔽之。

一个专业的开发人员,有多少的工作时间是花在电子邮件和会议上的?又有多少时间在真正编码和思考编码问题?当我在微软写文档的时候,我的经理说,不管怎么算,你一天中大概只有一半的时间花在实际的生产工作上。其余的时间会花在一些琐事上,比如回复电子邮件、开会、进度/状态报告、在IM上回答随机问题或者和别人闲聊......

所以我只有20%的时间是在写代码,因为其他80%的时间是在写文档和教程,这意味着我平均每天只写了一个小时的代码。在使用浏览器中的开发工具进行调试方面,我曾经是个天才,因为我在这方面经验丰富,还经常为新版本进行更新。但是,虽然当时所有的开发控制台的快捷键,我都烂熟于心,但在我离开微软的7年后,我基本上已经把它们忘得一干二净了。

事实上,自从我进入开发人员关系部后,我每天花了10-20%的时间写代码,其余的时间写教程,为会议讲座和网络研讨会制作文件,制定建立和培养开发人员社区的战略,制定展示新功能的最佳方法,以及处理各种人——产品经理、内部工程师、外部开发人员、产品营销经理、需求生成和社交媒体经理、律师、公关和公司政策执行者的问题。

最后要记住的是,你不会花整整一万个小时学习新东西。如果你在学习小提琴,你可能会花上几百个小时来学习一些初级的作品。在你学习新东西之前,你已经掌握了一些初级的东西,并且在反复练习直至完美的过程中,

学到很多,并且将你学到的这些用于学习新事物。所以这一万个小时中的大部分时间都是强化的。

在编程中,这就像多次编写相同的To Do单页应用程序。前几次你可以参考教程,但最终你必须能够在没有任何参考的情况下写出它。这就像一边看着乐谱一边慢慢演奏《欢乐颂》,然后记住如何演奏,然后准备在演奏会上演奏。

但是,当你需要在截止日期前交付一个项目时,你有多长时间来进行强化练习?在许多公司,不会给你提供扩展技能和强化编码的时间,需要你利用额外的时间来完成。一些公司会给你10%的时间或20%的时间来做独立的项目,但很少有公司希望你把这些时间花在单纯的练习上。

新的框架、新的最佳实践方法、新的语言、新的模式产生的速度不断加快,在这种情况下,仅仅是在新的方面取得合格的成绩,都会像和职业选手一样演奏《欢乐颂》的困难。

你需要平衡强化和 探索 的时间,特别是当你每天编码的时间少于50%的时候。你必须不断地通过练习来进行强化,建立心理肌肉记忆,直到你能在睡梦中解决它们。小提琴几百年来都没有实质性的变化,但编程却在不断变化。成为一个特定语言的大师级程序员意味着要坚持更长的时间。你不得不在非工作时间进行强化练习,完成任务,努力成为一个优秀的程序员,或者跳槽到另一个能够给你充足时间练习的公司。

哪怕你5年或者10年后都没有成为大师级的程序员,也没有关系,因为好好地做一万个小时比看起来更难完成。

5. 耶克斯-多德森定律(Yerkes–Dodson law)

耶克斯-多德森定律(Yerkes–Dodson law)揭示了动机与表现之间的关系。由罗伯特·耶克斯(Robert M. Yerkes)和约翰·迪灵汉·多德森(John Dillingham Dodson)于1908年发现,这条定律指出,在一定范围内,动机的强烈程度与表现的好坏呈正比,但会达到一个峰值。当动机过强时,表现反而会下降。这一过程通常被描述为一个浴缸曲线,呈现为倒U字形。

耶克斯-多德森定律在不同领域有着广泛的应用。例如,在编程领域,有流传程序员在血液酒精含量处于0.129%到0.138%区间时,能获得最佳的代码写作状态。在体育和音乐领域,该定律也得到了观察和验证,被称为“鲍尔默效应”或“鲍尔默曲线”,被认为是现任CEO对人类文明的重要贡献之一。

总的来说,耶克斯-多德森定律强调了动机与表现之间复杂而微妙的关系,提醒我们在追求目标时,需要找到一个适当的动机强度,以达到最佳表现。这一发现不仅为心理学研究提供了新的视角,也为教育、体育、音乐等多个领域提供了重要的理论基础和实践指导。

6. 为什么有的程序员的代码结构混乱

程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来。是的,他们决不会满足于简单的增量劳动。

或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补。他们认为旧代码简直一团糟。

但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难。

为什么你觉得旧代码异常混乱?因为读代码更难。

这大概就是代码Reuse难以实现的原因。 这就是你组里的每个人都喜欢用不同的功能将分割的字符串转换成一个数组。比起猜测旧的功能是怎样实现的,重新写一个自己的功能要简单和有趣多了。

作为这个公理的推论,你可以问问身边的程序员他们正在奋战的代码怎么样?“简直是一塌糊涂!”他们肯定会这样说。“我简直想推倒重来!”

为什么认为代码这么糟糕呢?“额,看看这个功能,竟然有两页长!完全不知道这些东西为什么在这里!完全不知道这些API是干什么的。”他们会这样回答你。

漫画:读别人代码是一种怎样的体验?

曾经,Borland的创始人 Philippe Kahn当初就是向记者们吹嘘:Quattro Pro会比Microsoft Excel要好用得多,因为它是从头开始编写的,全部都是新的源代码!

但是,认为新代码比旧代码好简直就是荒谬。旧代码是已经运行过的,测试过的。无数的bug在被发现前都上线运行过,发现之后程序员们可能在花了好些日子才修复了这些bug。这种修复可能是一行代码,也可能是几个字符,无数的时间和精力都花在了这些bug修复上。

当你决定抛弃这些旧代码从零开始的时候,你也丢掉全部前任努力的结果。

新代码一定比旧代买好?NO,重写可能会带来更大的风险。

对技术领导者来说,重写项目的代码也是一个异常艰难的决定。因为从公司层面说,重现代码甚至会威胁产品的市场竞争力。一旦决定重写代码,那么与竞品相比,你可能落后了2~3年——在软件行业,这时间可够长的。

你理想中的新代码会带来产品功能的提升▼

但事实上,即便重写的新代码可以实现旧代码的所有功能和需求,但是为产品带来的市场竞争力只有边际提升。因为重写用的新技术、新语言、新框架并没有给产品带来质的飞跃。

更不用说在重写的漫长过程中可能会遇到一些意外情况,比如:

1、缺钱:资金链的断裂▼

2、缺人:核心程序员离职

最终导致效果不佳:达不到原产品应有的所有功能和需求,白白浪费了时间和金钱,也丢掉了市场竞争力。▼

所以重写代码意味着,你在把自己置身于非常危险的境地,可能几年后你也写不出比以前更好的代码。你只是花了一大笔钱把已经存在的代码又写了一遍。

当你觉得眼前的旧代码很烂时,该怎么办?

你觉得旧代码写的很烂,那又怎样呢?它们已经上线,已经在实际运行中经受住了考验。所以当你发现前任留下的代码乱七八糟的时候,不妨冷静下来,从以下三个方面入手理解代码、改善代码:

1、代码的结构有问题

如果一段网络代码突然弹出了自己的对话框,应该是UI代码需要被处理。这些问题可以被解决掉,你要一次次小心地移动代码,重构,改变接口。还需要一位细心的工程师立马仔细地检查这些改变是否有问题,从而不打扰到其他人。事实上,甚至比较大的结构变化也可以不扔掉代码来完成。

大牛程序员Joel Spolsky回忆说,曾经在某个项目中,他和他的团队花了好几个月重新架构在一点上:把代码动来动去、清理、创建有意义的基类,并创建了模块之间的完美接口。但是他们始终非常小心翼翼,并没有产生新的bug、也没有丢掉任何旧代码。

2、代码的效率不高

曾经,Netscape的渲染代码被传非常缓慢。但事实上,这只会影响该项目的一小部分,这部分是你可以优化甚至重写的。你完全不必重写全部代码。优化速度的1%工作量,会让你获得99%的爆炸性提高。

3、代码写得很丑

有些代码真的写的很丑,比如Joel曾参与一个项目,开始用下划线做开始的成员变量约定,但后来改用更标准的“M_”。所以一半的功能用“_”开始,一半用“M”开始,这看起来真的很丑陋。但这个问题5分钟就能解决,而不用从头开始写全部的代码。

最后,你要记住,从头开始再写一遍并不意味着你会写出比以前更好的代码。因为你没有参与到上一个版本的创建,所以你其实根本就不算有经验。一旦你准备推倒重写,你可能会再犯一遍版本一犯过的错,甚至会产生更多的新问题。

一个总结:

面对糟糕的旧代码,Keep Calm & Carry On !

在大型商业项目中,推倒重来是非常危险的行为。当然,如果你是在做实验,想到新算法可以随时重写。

阅读全文

与程序员编码定律相关的资料

热点内容
app电脑怎么传另外一个手机 浏览:148
接收机单片机 浏览:125
服务器和客户端是如何交互的 浏览:307
c编字符加密教程视频 浏览:109
安卓抖音直播怎么才能不对焦 浏览:867
公司介绍源码兼容手机 浏览:291
为什么页面会服务器异常 浏览:369
两个服务器磁盘阵列如何用 浏览:411
葫芦娃小y版不用解压的 浏览:905
我的世界服务器如何永久夜视 浏览:23
java获取http文件 浏览:966
linux系统数据恢复 浏览:501
王者荣耀算法技巧 浏览:941
命令与征服凯恩之怒打不开 浏览:194
多目标免疫优化算法 浏览:131
加密证券数字化 浏览:53
相册加密文件在哪里找到 浏览:21
抖音独立电商app是什么意思 浏览:811
公司晨会解压小游戏 浏览:344
怎么加密成摩斯密码 浏览:668