又是一年毕业季,每每到这个时候小编就会感慨时间过得真快,不知不觉我已经变成当初我刚毕业那会眼中的一群“老前辈”了。那我这个“老前辈”就来跟大家聊聊我是如何从一个刚毕业的萌新进阶到如今的“老前辈”吧。
如何成为优秀的,这个问题我也曾经问过我自己,可惜我做的还不够好,经常这么反问自己的话,会提升你对开发流程工艺思考,同时没事也可以问问身边的是程序员的同事,我相信你们会引发一些有趣的讨论,但是我个人认为掌握下面五个技能非常重要,看看吧,为了我们都成为优秀的程序员。
1,问题分解
编程很大程度上是来解决问题,但是写代码之前,需要弄清楚如何解决这些问题。一个优秀的程序员会尝试把这些问题进行拆分,然后一部分一部分去开发,直到每个部分都可以很容易的解决。但是仅仅做到这些还不够,一个优秀的程序员会发明一种工作模式,利用现有的标准化逻辑去开发,便于实现和测试。一些很复杂的程序,复杂部分的原因是代码实施不能完美的解决问题,而且代码难以理解。
当遇到难题建模,曾经采访优秀的开发者:“很少有程序是不能修改的,但是如果你看一段代码,它往往看起来很复杂,很多人觉得无从下手,他们往往这是缺乏思考的一种表现,而我会卷起袖子试图修复它,慢慢的其实这些都不算困难,而且很容易。”
2,情景分析
好的开发人员有能力考虑许多不同的场景。这既适用于程序中的逻辑,以及内部和外部事件可能发生。考虑不同的路径的逻辑,他们会问这样的问题:如果这个论点是零?如果这些条件是真的吗?这是线程安全的方法吗?发现软件需要处理什么类型的事件,他们会问这样的问题:如果这个队列变得满了吗?如果没有响应这个请求吗?如果其他服务器重启,这个服务器重新启动吗?
优秀的程序员会问自己:“这怎么能算结束呢?”说明他们还想测试自己的能力,相比之下,没有经验的程序员大多只考虑自己,能够暂时解决问题就行,当然大部分不可避免的意外情况发生,他们都有方法解决。
3,所示命名
编程在很大程度上由命名的事情:类、方法和变量。如果做得好,程序变得很大程度上是在自我记录,这意味着程序的功能是非常清楚的执行源代码。自我记录的代码的一个作用是,它自然会导致许多较小的差错,而不是几个很大的功能缺陷,因为这些优秀的代码将存在很多的地方。
想出好名字要困难得多。我喜欢一句话:“计算机科学中只有两个艰难的事:缓存失效和命名的东西。“部分命名是很困难的,因为它需要清晰的在脑海中每个名字代表什么。有时这是不清楚,但随着开发的进行才会显现。因此,重命名命名一样重要。”
命名的东西也还包括提出的概念,以及这些概念应该叫什么。通过考虑周全,明显命名概念一致地使用,编写的程序才会变得更容易。
4,所示一致性
也许在编程的最大挑战是管理的复杂性。一致性是一种战斗的复杂性。它减少了一些复杂性,允许我们看到模式和推断出如何命名,使用和处理。与一致性,我们不需要用脑力来记住异常和随机变化。相反,我们可以专注于重要的复杂性,而不是偶发复杂性。
一致性是很重要的。它适用于变量名和分组,命名方法,划分成模块,目录结构,GUI,错误处理,日志记录、文档等。例如,如果某些变量是相关的和一起出现(在声明,方法调用或列在数据库中)然后总是使用相同的顺序。然后它变得更容易看到如果丢失,或者如果他们一直搞混了。对于一个操作,如果是calleddelete在一个地方,别叫它删除在另一个地方——坚持相同的名称。Steve McConnell也有一些好的建议在代码中使用精确对立完成。例如,开始/结束对立,启动/停止。不要混合名称从不同的双(例如使用开始/停止)在处理相反。
矛盾可以介绍当修改程序。草率的程序员往往不注意如果他们添加是否符合现有的代码。优秀的程序员在确保看似无情的小细节是正确的,他们知道如何重要的一致性是整体对抗的复杂性。
5,学习
作为一个软件开发人员,你需要不断的学习。添加一个新特性之前,你必须理解它应该做什么。将代码添加到现有的一个项目之前,通常你需要学习什么现有代码,为了适应新的功能正常。你也必须了解周围的系统,为了正确的界面。因此,学习能力快让你更有效的成为开发人员。
此外,由于在软件工程领域的发展速度是如此之高,有源源不断的新语言,工具,技术和框架的了解。你可以认为这是好还是坏。弗雷德布鲁克斯列出了学习的乐趣之一的将技能变成工艺,这一点我同意。学习新事物本身是令人兴奋的。这也意味着生活中作为一个开发人员不会很无聊。
结论
所有上面的技能是通用的,没有一个特定于任何一种语言,框架或技术。如果你有,你可以快速学习一门新语言或者工具,并编写好的软件环境。此外,因为他们在本质上是通用的,因为语言永远不会灭亡,这些便是我的一些建议如何成为一名优秀的程序员。
那么你想成为一个优秀的程序员嘛?
我自己是一名从事了10年的web前端老程序员,今年年初我花了一个月整理了一份最适合2019年学习的web前端实战以及基础教程干货,从最基础的到深入的都有整理,免费送给每一位编程小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴。专注于Web前端技术学习交流零基础到项目实战,每天有直播讲解实战项目,答疑解惑,学习与快乐同在。
免费教程获取方式:加QQ群:956766604(招募中)