如果你已经有一段时间的编程经验,或者正准备学习编程,那么可能会考虑的是:怎样才能成为一名优秀的程序员?计算机专业的毕业生如何为软件开发和编程职业生涯做准备?职场对于初级开发人员有哪些期望?这是临近毕业或初入职场的新手程序员们密切关注的问题。
以下十项技能并不是必须,但它为程序员应该知道的事情提供了一个很好的起点,供新手程序员参考。这都是作为程序员的基本技能,将长期伴随你的程序员职业生涯。如果你的目标是从事软件开发和编程工作,那么这些都是保持竞争力而可以学习和提高的东西。
数据结构和算法
如果想成为一名合格的程序员,那么必须了解掌握数据结构和算法。这是任何编程工作面试的重要主题之一,如果不知道基本的数据结构(例如数组、链表、映射、集合),就不可能编写真实世界的应用程序。数据结构和算法是最能体现程序员基本功的方面,不管计算机专业还是培训课程,数据结构和算法都是首先教授的内容。
已经参加工作但数据结构和算法知识欠佳的同学,花点时间学一学,不要只是满足于学会什么什么工具和框架,基础知识有百益而无一害。
源代码管理
源代码管理是用来存储代码的,程序员必须了解Git和SVN等版本控制工具。源代码管理可以降低对具体人员的依赖,有利于代码审查,提升团队整体水平。
从大的社会发展趋势来说,分布式是大趋势,Git 正好适应了这个趋势,之前的主流代码管理方案比如 CVS,SVN 都是集中式的。由于分布式的特点,造就了更高的灵活性,可以适应更多的场景。所以Git一定程度上简化了市场,对于初学者来说,GitHub终极版:MasterGit和GitHub是一个很好的开始,也需要熟练掌握诸如分支和合并等高级版本控制概念以及使用命令行和GUI的工具。
文本编辑器
作为程序员工作时,没有一天不使用文本编辑器。即使对于非程序员和任何与计算机打交道的人来说,它也是必不可少的工具之一。
一般主要是在Windows上使用NotePad,在Linux中使用VIM,但是在高级编辑器方面有很多选择,比如Sublime和NotePad++,后者提供类似IDE的功能。不妨花点时间学习最喜欢的编辑器和键盘快捷键,了解一些提高效率的技巧。
IDE
对于任何程序员来说,现代IDE都是非常重要的工具。对于C、C++和C语言程序员,选择非常明确:Visual Studio。对于Python开发人员来说,Jupiter Notebook每天都在变得越来越好。对于Java程序员来说,有三种主要的IDE可供选择:Eclipse、NetBeans和IntelliJ。对于用“世界上最好的语言”PHP的程序员,PHPStorm、Sublime Text 都是不错的选择。
数据库和SQL
SQL允许用户每次访问一大批的数据。通过一条语句,SQL命令就能够检索或者更新多个表中的数千条记录。这就避免了很多的复杂性。当想要处理每一条记录时,计算机程序不再需要按照特定的顺序一次读取一条记录。过去需要数百行程序代码才能完成的任务,现在只需要几行代码就可以完成。SQL是经典之作,数据库无所不在,程序员应该熟悉一些基本的数据库概念,如规范化和表设计以及SQL。
关键是应该熟悉数据库,知道如何插入/更新/删除数据,以及如何编写SQL查询来检索数据,对诸如连接聚合函数之类的高级概念的了解也将很有意义。
UNIX或Linux
与SQL一样,UNIX也经受住了时间的考验,已经存在了30多年。由于大多数程序员在某个时候都必须在UNIX机器上工作,因此对Linx命令行的良好了解是很有帮助的。
它可以让程序员以更高的效率工作,可以搜索文件,通过检查系统的CPU和内存使用情况来了解系统的状况,并执行基本任务和高级任务。GitHub上有一份入门&进阶指南,名字叫“命令行的艺术”,在GitHub收获了5万标星,这份资源不仅能帮助刚接触命令行的新手,对有经验的人也大有裨益。传送门在此:https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
Excel
Excel是程序员、软件开发人员、项目经理、交易者和商务人员的最佳工具之一。它不仅仅是电子表格软件,还提供了许多有用的特性和功能来执行复杂的数据分析。
程序员可以使用Excel来跟踪进度,协调数据,数据分析,数据质量检查和项目规划。这就是为什么敦促每个程序员深入学习Excel的原因。它不只有复制和粘贴数据,还应该一些基本的功能,比如搜索、排序、过滤和VLOOKUP来比较数据。
编程语言
作为程序员,必须深入编程语言:C++、Java、PHP、Python、JavaScript……根据兴趣爱好和具体情况进行选择。
PHP是一门简单的后端技术编程语言,它与HTML关系是最紧密的,当学习HTML之后再来学习PHP你会发现很快入手,PHP最让新生喜爱的是可以直接嵌入HTML运行,所以没有考虑很多问题,是选择后台编程语言的首选。
网络基础
今天的世界是互联的世界,无论走到哪里,计算机网络都是无处不在的,从家里开始,在许多设备上使用Wi-Fi,到使用局域网(LAN)到万物互联的学校、公司和商场。
程序员编写的大多数应用程序也不是独立的,而是客户端服务器类型的应用程序,在这种应用程序中,请求将通过网络传递到服务器,客户将从世界任何地方访问该应用程序。所以程序员必须了解网络基础知识,才能更好地理解、开发和支持自己的应用程序。
脚本语言
前面已经说了编程语言,那同一种编程语言不能用作脚本语言吗?
当然,有些语言既适合面向对象编程,也适合编写脚本,比如Python。但如果恰巧学习的是C/C++或Java,那么就不能像Python或Perl开发人员那样快速地完成一些事情。
脚本语言使得创建工具和脚本以解决编程世界中的常见问题很容易,如果你对Python这样的脚本语言有很好的掌握,那么你就可以轻松地实现日常工作的自动化。
以上的十条技能涵盖了每位程序员初入行业所需的必备技能,希望能为阅读到这篇文章的每一位程序员提供一参考,以及进行职业规划的新思路。也欢迎行业前辈们分享自己的经验、踩过的坑,为新手程序员保驾护航。