给你一年时间,你会如何提高水平???正好赶上这个难得的病假(恶气),这里写一篇代码文章来纪念过去的366天。虽然今年想写一个可持续的开源框架,但最终还是要看一个好的idea。在我的Github孵化器页面上,似乎没有一个想法特别让我满意,尽管上面有各种有趣的想法。其中大部分是去年完成的,但还有一些尚未完成。让我们谈谈标题。虽然在Github上一直打下去似乎没有必要,但人们不得不去追求。如果只是漫无目的,但同时又想着提高技术,何乐而不为呢?毕竟,身怀绝技的人毕竟是少数,不需要太多的练习。好像这样的人是不存在的。大多数人只有在练习之后才能达到别人所说的“好技能”。这让我想起了知乎上的一些问题,充满了各种味道。一些智商被完全滥用的题目,都是因为那些人??学得比别人早——哪里来的天才?所谓天才,应该就是未来一般的智慧生命,一出生就无所不知。如果没有,那只能说明他练得好。练习不足就是说,即使你练习了10000小时的两倍,也于事无补。如果你学得比别人晚,难免输给别人很长一段时间(也许到你进棺材为止)——落后就要挨打。就好像我是从倒数第二名的学校毕业一样。如果我过去一直保持和别人一样的学习速度(各种关键点),那我只能一直是一个Loser。需要注意的是,你考第二大学难,不是因为你比别人笨。教育资源分配不均的问题在一定程度上导致了新的班级制度的产生。正如我的主页所说:THEONYFAIRISNOTFAIR——唯一公平的是不公平。我们还有很多事情可以做——创造和分享。真正的不幸是营养不良造成的教育问题。所以当我想通了很多东西的时候,我想出了一个像Re-Practise这样的计划,而365天只是中间的一个产物。编程的基本能力虽然算法很重要,但是编码才是基本能力。算法和编程是有些不同的领域,算法编程比编程高一个层次。算法写得再好,如果别人难以直接复用,那在别人眼里就是一坨屎。想出可以工作的代码是一件简单的事情,而学习重构它以使其更具可读性是一件有意义的事情。因此,在某个时候,在Github上创建了一个名为ArtisanStack的组织。我当时的想法是在Github上找一些JavaScript项目,重构他们的代码。但终究影响力不够,参与人数也比较少。重构如果你知道如何编写可读性高的代码,那么我认为你不需要这个,但这意味着你要花更多的时间思考。一说到重构,就让我想起TDD(测试驱动开发)。即使它不是TDD,如果您编写测试,它也是可重构的。(我之前写过一些用IntellijIDEA重构的文章:精炼函数,用查询替换临时变量,重构和IntellijIdea,内联函数)在各种文章中,我们看到了一些相关的内容,最好的参考是这本书《重构》.最基本的原则是函数名。取个名字很难,取个别人听得懂的名字更难。其他包括长函数、过大的类、重复的代码等等。在我采访人的有限经验中,这些问题是最常见的。测试和不测试,其他一切都是废话。写一个好的测试很难,但是写一个测试很容易。我们为了测试而测试会更容易一些。在编写EchoesWorks和Lan的过程中,我尽量保证足够高的测试覆盖率。TDD从测试开始,将确保方法是可测试的。从功能到测试可以提供工作效率,但只会让测试成为测试,而不是代码的一部分。测试是代码的最后一英里。所以,尽可能多地向你的Github项目添加测试。codingprocess刚来TW的时候,总是会有人教我怎么开始coding的。这应该也是一项基本能力。结合日常生活,重新解读这个过程:有一个可测量的、可实现的、过程可测量的目标Tasking(即分解要实现的目标过程)一步步(如TDD)在当前实现目标场景:我想在Github上做一个365天的连胜。每个时间段对应的目标应该是可衡量、可测试的——即每天都会有Contributions。分解是一个痛苦的过程。理想情况下,我们应该每天提交一次,但这取决于你的回购数量,如果没有新的想法出现,那么这就变成了CommitforContributions。分步实现在我们实际工作中也是一样,我们接到一个任务,然后分解它,一步步完成。但是,实现起来会稍微复杂一些,因为事务总是有抢占和优先权的。技术与框架设计在之前的博客中,《After 500: 写了第500篇博客,然后呢?》也深入讨论了这个问题。技术一直是后来者的优势。技术人员也是如此,后来者占很大优势。如果我们只是简单地把注意力放在技术上,那我们就没有任何优势。并且根据我们的编程经验,我们可以在特定的时间创建一些框架。架构的设计本身就是一件有趣的事情,可能是因为程序员喜欢创造。(ps:之前写过这样的文章,?)创作是一个重新掌握知识的过程。回头看写echoesworks的过程,一开始需要的是网页版的PPT。当然这样的东西已经有很多了,比如impress.js、bespoke.js等等。分析需要的功能:markdown解析器、键盘事件处理、Ajax、进度条显示、图片处理、Slide。我们可以在Github上找到各种各样的模块,我们所要做的就是将它们组合在一起。在此之前,我尝试用类似的原理编写(组合)Lettuce。组合是一个比创建过程更具挑战性的过程,我们需要设计粘合剂将代码粘合在一起并使其最终运行。这就像我们平时接触到的任务分工,每个人负责相应的模块,完美集成。好像我写lan的时候也差不多,不同的是我设计了清晰的架构图。在我们实现的编码过程中也是如此,使用不同的框架并使它们起作用。比如早期玩的moqi.mobi,就是基于Backbone、RequireJS、Underscore、Mustache、PureCSS。接下来的时间里,View层换成了React,有了backbone-react的实践。技术和人一样,需要不断向更高的层次前进。我们只需要保持重新练习。领域与练习业务似乎不太合程序员的胃口,还是去领域吧。不同行业的人,比如百度、阿里、腾讯,都有不同的领域核心。领域本身也差不多,这可以解释为什么互联网公司喜欢互相挖人,但一般不会去华为、中兴等非互联网领域挖人。在这个领域之外,你可能连研究生都不如。和技术一样,领域和业务也是一个不断强化知识的过程。Ritchie先是实现了BCPL语言,然后设计了C语言,而BCPL语言最初是在CPL语言的基础上发展起来的。该领域本身在不断发展。这也是下一个值得改进的地方。其他是时候写这个总结了。从不会写代码到会写代码是一个从0到1的过程,但是从1到60并不是一件容易的事情。无论是刷Github(不是自动提交),还是换工作,我们都在不断练习。练习要分成不同的步骤,不局限于技术:CodingArchitectureDesign。..
