10个你在读软件工程学位时就应该知道的秘密

jopen 10年前

10个你在读软件工程学位时就应该知道的秘密

        英文原文:10 Secrets You Should Have Learned with Your Software Engineering Degree

        这是一种非常常见的现象:你读了好多年的书,然后带着一张新鲜出炉的大学文凭走进了社会,找到了人生的第一份正式工作,但是很快,那些不成文的规矩,日益复杂难搞的活计,以及周围没有一个人会提醒你等等,像大锤一样捶得你两眼发昏。编程这份工作也不例外。

        很少有学生会真正为他们的第一份正式工作做好 100% 的准备。拿到计算机科学学位并不比高职大专出来的在写代码上有特别大的优势。而且我特别讶异,很多应届毕业生甚至是一些有经验的程序员,竟然还在记事本或者文本文件中写代码,一点也不会版本控制。

        如果你不想成为上面描述的那类人——或者想脱离这类人群——那么花点时间看完这篇文章,掌握这 10 个基本技能,绝对让你以后的工作受益匪浅。

        1、版本控制系统

        这也许是设计计算机科学课程的时候出现的最大漏洞,我为此真心感到遗憾。高等教育机构教育我们如何创建程序的源代码,却没有关于如何管理这些代 码的知识。每一个程序员都应该懂得如何利用 Git 或 Subversion 有效地创建 repository(仓库),编辑与提交代码,进行分支与合并,了解项目工作流。懂得版本控制系统还能让你在今后的工作中,学到的更多。

        2、如何写代码

        作为一个程序员,工作内容不仅仅是写一种编程语言那么简单,我们还需要为我们的项目编写发布说明,为版本控制系统写提交信息,还要为系统中发现 的 bug 写标签。所有这些工作内容都离不开有效的英语沟通——这也是一种必须的技能,但是可惜的是,在大学的计算机科学课程中却很少强调。

        3、正则表达式

        正则表达式是一种用来操作和检验字符串数据的强大工具,每个现代化的程序员都应该学会如何使用。每一种编程语言都支持正则表达式,有与之相匹配 的标准库。如果代码需要校验某字符串是否含有 5 个字符、1 个破折号和 1 个数字,你应该马上就能写出 /^[A-Z]{5}-\d$/。

        4、库的使用

        在 2014 年,我们已经不需要用正则表达式去 URL 中提取主机名。每一种现代化的编程语言里都内含常用功能的标准库,或者是能更容易使用的标准库。

        程序员要做的就是,更好的掌握那些已经编写好的、经过测试和调试完毕的代码,因为这绝对比程序员自己再去想代码要来的更快更好、质量更高。

        5、SQL

        前不久有个人在碰面的时候对我说,“我现在知道的所有 SQL 都是在我工作中学会的。为什么以前在学校数据库这门课是选修的?要是我上过这门课就好了!?”

        在平面文件中存储数据的时间已经过去。数据库成为了流入流出数据的新宠,而 SQL 是一种用于检索数据库的语言。SQL 是一种声明式语言,而不是一种程序语言,所以如果你想学会如何使用 SQL 的话,首先需要学习解决问题的新方法。总的说来,每一个程序员都应该了解数据库标准化基础,能够执行基本的 SELECT(及 INNER、OUTER JOIN)、INSERT、UPDATE 和 DELETE 语句。

        6、工具的使用:IDE、编辑器以及 CL 工具

        如果只有唯一的一把钢锯,别的啥都不会,那么即便是鲁班也永远无法出师。但是令人奇怪到无法理解的是,现在的学校出来的 CS 毕业生竟然只知道在记事本和文本文件中写代码,真是可笑可叹!上述编程工具的合理运用,能帮助我们操作源代码和其它数据,让我们的编程生涯过得更加轻松自 在。故而,每一个程序员都应该知道 Unix 命令行、shell 脚本、find、grep 以及 sed 的使用。

        7、调试

        每个程序员都应该能使用交互式调试器或者 Print 语句来调试代码。能逐句追查问题的能力非常重要,但是遗憾的是,学校教育给学生的方式是自己凭感觉去找。

        8、防御性编程

        即便是特别牛逼的程序员都是很容易犯错的,没有什么事情是我们绝对能掌控的,总会有各种意想不到的事情发生。防御性编程就是基于这个理念而来 的。如果程序是 ok 的,那我们就没有必要检查文件打开成功与否,不用检查客户 ID 是否为合法数字,不用测试代码是否运行正确。

        程序员最好能有效利用编译器的警告功能,这样能减轻不少编程工作,避免问题的产生和积累。还有一点,每个程序员最好也能够明白 PHP 程序为什么要以 error_reporting (E_ALL)开头,而 Perl 程序则是 strict; use warnings;开头的。

        9、团队合作

        很少有编程工作是我们完全可以独立完成的,而如果有人非要“强自己所难”,那么我只能说,这大概是“猴子派来的逗比”吧,除了搅得一团乱,我看 不出有别的作用。由于需要团队合作,我们写出来的代码必须要能和其他人的代码进行交互,或者经常和别人的代码联合在一起。无论多有才能的程序员,如果不能 和其他人团结协作,那么这个家伙只会是团队中的负能量,拖大家的后腿。

        10、好好利用现有的代码

        在学校的时候,我记得,每个班级会分配到一个新颖、未曾开发的项目。但是在现实中的情况却不是这样的。刚入职的新人做的第一件事情就是在 bug 跟踪系统中修复一些 bug。然后就是在当前的代码库的基础上为现有的系统增加一些小功能。如果你足够幸运的话,几个月以后就可以设计新代码了。

        译文链接:http://news.html5tricks.com/10-secrets-programmer-know.html

        翻译作者:html5tricks – 蒋丽丽