看到这个题目很多同学可能都会联想到各种语言,数据结构,算法设计等等的课程。固然,这些课程对于IT行业来说固然很重要,但是还不是最重要的。
而作为一个程序员,为了自己的发展,下面这些甚至算不上是课程的”课程“将是你必须学会的:
课程一:寂寞
看到这个题目,很多同学也许会觉得很好笑。但是,这是事实,这是作为一个程序员必须学会的一门功课。而且绝对是第一门课。
为什么呢?
如果是计算机相关专业的同学,可以回想一下是不是有过这样的经历:
当家人或者同学听到我们学的是计算机专业的时候,便开始有诸如如下的各种奇怪要求:
XX, 帮我修下电脑吧?
xx,帮我偷个QQ号吧?
xx,帮我买个电脑吧?
xx, 帮我买个手机吧?
........
就我而言,这种奇怪的要求最近已经发展到了”网络电视机和其他电视机有什么区别?“了。
当听到这种奇怪的要求,同学们是不是会觉得哭笑不得?
帮他们?我们的专业课程完全没包括这些啊;
不帮他们?他们会说出”你学计算机的,连这都不会?“此类的话来。
听到这些,是不是感觉很难受?
而你所获得的每一个你觉得让你很有成功感的,成就,对于你的朋友来说,完全就是云里雾里的。
而在整个IT行业,其实还有许多的分支,在你毕业的两三年后,如果你还在这个行业里,你会发现甚至你大学的同学和你所接触的东西都渐渐的开始有了很大的差别。
而在这个慢慢的长路上,无论是遇到各种困难的难受,还是解决问题的欣喜,大多数时候都只能独自品味。
所以学会寂寞,将会是程序员的第一堂必修课程。
课程二:独立分析
独立分析问题的能力是每一个程序员甚至任何一个IT从业人员都需要学会的必修课程。
这是一个非常奇特的行业,很多问题的爆发依赖于特定的环境,这就意味着,你所遇到的每一个问题,都有可能是只有很少的人才遇到过,甚至有可能你是第一个遇到这个问题的人。而问题的解决常常是非常紧迫的,这就要求你必须要能够在很短的时间对问题进行分析,测试,实验,最终找到解决问题的方法。
所以,如何独立分析和解决问题的能力是必须要学会的。
课程三:自学
其实自学能力,从我们上学开始就不断的被提出。但是却很难有人能真正的认识到如何去做。
因为在我们工作以前的大多数时候,我们还是跟着老师在学,遇到问题还是有老师和同学可以帮助我们。
而当我们真正进入行业工作开始,我们所需要的很多知识都将只能通过自学来获得。因为这个行业的知识很多,很杂,而且充满了大量的变化。
许多工作了几年的程序员都会有类似这样的经验:
刚开始明明说好是一种C/C++的,怎么突然来了个项目就要求用JAVA的?
怎么项目上的架构,拓扑怎么完全跟我们之前学习到的完全不一样?
我们学习了那么多编程的原则、规范、技巧等等,怎么在项目里就完全没有呢?
.........
而在经过了多年的经验之后,我们慢慢的发现,有些东西确实是以前的隐患,但是另外还有很多东西则是根据项目的需求而特别处理的。而这些设计则包含了许多对知识的理解和应用。
我们在IT行业随时都面临着新的知识,新的变化,层出不穷。面对这样一个浩瀚的知识的大海看,我们所需要的自学的能力,不仅仅是简单的学习的能力,而更重要的是选择如何去学习,我们需要学习什么样的知识。
课程四:沟通
很多同学可能直观的认为,程序员,也就是所谓的“码农”,其工作无非就是敲敲代码。为啥需要沟通能力呢?
其实不然,大家想一个问题:我们作为程序员,我们编码的依据是什么?是软件的架构和设计,但是最终的来源是需求。而大家一定都听过这样一句话“用户永远不知道自己需要的是什么”。
那么有工作经验的朋友有没有遇到过这样的问题呢:
我们辛辛苦苦,加班加点,完成的项目,结果客户评价说不好用,甚至是没有用。
我们好不容易完成了一个需求点,结果拿给客户的时候,客户却说这不是他们所要的东西。
等等诸如此类的抱怨,我们可能已经看到、听到、接触了太多太多了。
可是大家有没有真正的想过问题出在哪里呢?
其实用户真的不知道自己需要的是什么么?并不是,用户只是不知道如何表达他所需要的东西而已,而作为程序员,我们则必须要将用户的主观的理解,根据合适的环境、技术能力等条件转换成合适的模型并进行编码最终形成一个软件。
而这个需求的确认过程由于人和人之间的理解差异,描述差异,就必须要经过大量的、反复的有效沟通,最终才能达到一致。
请注意这里我们说的是“有效沟通”,因为如果是无效的沟通,无论做多少次,最终还是会发现,程序员做出来的东西还是和客户所要求的是完全两码事。
而同样的,软件开发通常是一个团队的活动,团队中的各个成员都有自己需要完成的内容,每个人的工作内容,相互独立却又相互关联,而能够让软件最终能够良好运行的关键之一就是团队中成员之间有效的沟通和分析。
以上的四门课程,是我觉得,作为一个程序员,作为一个IT从业人员,所必须要学会的。其实我们在工作中还会有许许多多需要学习和掌握的技能,比如说团队合作,比如说一些心理学,比如说数学,比如说各种专业知识等等。但是,我觉得,这四门课程则是能够保证我们在这个行业中很好的生存发展所必须通过的课程。