1. 聚能聊>
  2. 话题详情

从程序员小白到大神的正确打开方式!

screenshot

一个程序员大神是如何炼成的?突然想到了个问题。于是乎思考了下这个问题感觉很有意思,在上网找了些答案发现了成为一名优秀的程序员必备5个技能。

NO.1 问题分解

screenshot

编程讲的是如何解决问题。但在你开始写代码之前,你需要清楚如何解决问题。一个好的程序员应该拥有这样的技能,他能将问题分解成子问题,直到每个子问题都可以很轻松地进行解决。不过要找到一个解决问题的方式可不是件简单的事。好的程序员能够很好的对问题进行建模,这样写出来的程序很容易能看懂,很容易实现及测试。

NO.2场景分析

screenshot

好的开发人员应当能够考虑到程序的不同场景。这不仅是指程序的逻辑,同样还有的是可能会发生的内外部的事件。要想考虑到业务逻辑的不同路径,你可能会提出这样的问题:如果这个参数为空的话会怎样?如果这些条件都不为真的话呢 ?这个方法是线程安全的吗?为了弄清楚程序到底需要解决哪类的问题,你可能会问自己:如果队列为空的话怎么办?或者这个请求没有响应?如果这个服务器重启的时候,别的服务器也在重启该怎么办?

好的程序员应该会问自己:什么情况下它会出现问题?也就是说,他们能够像测试人员一样看待问题。反过来,没有经验的程序员通常只考虑程序主逻辑——也就是当所有事情都如预期时的正常的控制流程。不过一旦发生了异常情况,程序必须得能够应对它。

NO.3命名

screenshot

程序编写涉及到许多命名的问题:类,方法以及变量。如果做得好的话,程序应当是自文档型的,也就是说通过读源码就能很清晰地理解程序的意图。自文档型代码的一个结果就是方法通常会更短,而不是使用很长的方法,这是因为小的方法,你才可以有更多的地方来赋予一些有意义的名字。

NO.4一致性

screenshot

一致性是非常重要的。它包括变量名及分组,方法命名,模块的划分,目录结构,GUI,错误处理,日志,文档,等等。比如说,如果有一些变量是关联的并且出现在一起,那么就应当始终按照同样的顺序来使用它们。这样的话,如果漏掉了一个或者将它们搞混了就能够很容易发现。对于某个操作而言,如果它在某个地方是叫做delete,那么就不要在另一个地方把它称为remove——要坚持使用同样的名字。

NO.5不停学习

screenshot

作为一名软件开发人员,你需要不停地学习。在增加一个新特性之前,你必须知道它是要做什么。在往一个现有的程序中增加代码之前,你通常都要学习现有的代码是做什么的,这样才能正确地实现新功能。你还得了解周边的系统,这样才能正确地和它们进行交互。快速的学习能力可以让你成为一名高效的开发人员。

这些技能都满足吗?恭喜你成功晋升为大神级人物!!

~~~~~~~~~~~

这些技能你满足那些?

你认为小白变大神需要具备什么技能?

你知道哪些程序员大神。

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    云栖定制电脑包 x 1

22个回答

1

易水寒666

小白晋升大神需要掌握的技能有:

术的层面:编程语言、数据结构、算法(大多程序员只需要知道如何使用)、建模与设计(抽象能力的合理性与高低最体现编程功底)、编程规范(好的编程习惯是团队协助的基础)。

道的层面:需求分析、沟通能力与管理能力(能不能突破就看这个了,决定了后续的职业发展方向是技术线还是管理线),持续学习的空杯心态(要适应IT行业的不断革新与巨变),对外部技术方向、行业动态的敏感性与前瞻感(决定了你能不能站在风口实现更高维度的突破,还是被后浪拍死在沙滩上)

0

恐高鸟 已获得云栖定制电脑包 复制链接去分享

一个大神必须要有睿智的思维方式,过硬的编程技术,二者缺一不可。而小白变大神没有捷径可走,临渊羡鱼,不如退而结网。只有不断努力付出才有进阶大神的可能。(PS,上校大神,我再次围观。求派发个包包)

恐高鸟 回复

我要努力学习

评论
1

笨笨的粽子妞 复制链接去分享

这些技能你满足那些?
目前比较满足的是不断学习,本身计算机互联网就是一个不断迭代更新的过程,程序员只有不断学习,紧跟技术发展的脚步,才能利用最新的技术来解决更多的问题,站在时代的最前列,多自豪的一件事啊。
你认为小白变大神需要具备什么技能?
专注、耐心、持之以恒。专注于自己能力的提升,对bug的调试要有耐心,小白到大神不是一夜而成,而是需要常年累月的积淀与付出,需要有持之以恒的上进心,不断学习、不断提升。
你知道哪些程序员大神。
知乎上的“温兆伦”,感觉还是很喜欢扎克伯格,哈哈

0

以恒 复制链接去分享

程序员的思维修炼中说到从新手到专家的过程,我认为建立联系最关键

zhengzebo 回复

666

评论
1

flowerflyer 复制链接去分享

优秀的程序员应该具备两方面能力:
一、良好的程序设计能力:
•掌握常用的数据结构和算法(例如链表,栈,堆,队列,排序和散列);
•理解计算机科学的核心概念(例如计算机系统结构、操作系统、编译原理和计算机网络);
•熟悉至少两门以上编程语言(例如C++,Java,C#,和Python);
二、专业的软件开发素养:
•具备良好的编程实践,能够编写可测试(Testable),可扩展(Extensible),可维护(Maintainable)的代码;
•把握客户需求,按时交付客户所需要的软件产品;
•理解现代软件开发过程中的核心概念(例如面向对象程序设计,测试驱动开发,持续集成,和持续交付等等)。

0

焦立潮 复制链接去分享

赞同上校的观点,不停的学习尤为重要

0

北方的郎 复制链接去分享

这些技能你满足那些?
算努力吧,不过近几年在PPT上花的功夫越来越多,代码有点荒了啊。
你认为小白变大神需要具备什么技能?
悟性,努力,缺一不可。这个东西没别的,就是多看书,多撸代码。
你知道哪些程序员大神。
有名的比如王江民,雷军,楼天城什么的就不说了。说一个身边的吧,十来年前一个五十来岁的老外专家review我的代码说效率不是最优,直接在纸上给我重写了一遍。一篇子代码上机一调,一个问题没有,一遍过。

上校大神,发个包吧。😀

0

士博源教育 复制链接去分享

再加一条:长寿

0

qqgg 复制链接去分享

活到老学到老,总是会有新知识新技术出现,然后只有跟得上时代的脚步才能不断进步。成就大神之路

0

1740302053175620 复制链接去分享

😒被坑多了就会了

0

金城扛把子 复制链接去分享

不断学习,并且有一个互相帮助成长的圈子,我就是在网上无意间认识的一个程序员带我走上程序员的道路,要不然我现在还是某工厂的一个普工

0

似水的流年 复制链接去分享

这些技能你满足那些?
NO.1 问题分解 NO.2场景分析 NO.3命名 NO.4一致性 NO.5不停学习 好像都有∩_∩
你认为小白变大神需要具备什么技能?
不断学习,虚心求教,广泛学习各种知识,遇到问题能够用多种方法解决
对于计算机的基本知识都是掌握了解的,算法也要有一定基础

0

realer002 复制链接去分享

很好

0

萧微儿 复制链接去分享

程序员需要有精力去学习

0

风渡浪影 复制链接去分享

小白变大神最重要的是坚持不懈~~~

0

1384001494554656 复制链接去分享

😂😂😂😂

0

1872696464359378 复制链接去分享

我现在终于成为了小白...会建站了

0

1570834607505182 复制链接去分享

程序员什么的,还是活着好

0

学习小白 复制链接去分享

类的类别有科普性材料吗?视频最好

0

1783498987912673 复制链接去分享

张学问

2