新手程序员必须要知道的10个秘密

初出茅庐的你带着仍残留墨香的毕业证书踏上工作岗位,马上就被书上没写的规则和各种繁杂的日常事务来了个下马威。这样的故事实在是司空见惯,编程工作也不例外。

没有几个学生能100%为自己的第一份真正的工作做好准备。如果你不想成为其中之一,请学学以下这10项无需手把手指导就能学会的基本技能:

1、版本控制系统(VCS)

VCS也许是计算机课程最大的疏漏。这些课程光记得教如何写代码,但却往往忘记教学生如何去管理代码。每一个程序员都应该懂得利用Git或Subversion有效地创建repository(仓库),编辑与提交代码,进行分支与合并,了解项目工作流。

2、学会写作

身为程序员要写的不只有代码。你还要写项目的发布说明,给版本控制写提交消息,在系统里面写漏洞报告。这些和许多地方都需要清晰有效的文字交流—但这个技能计算机科学却很少强调。

3、正则表达式

正则表达式本身就是一门语言,每一个现代程序员都要擅长。每一门现代语言都支持正则表达式或者有相关标准库。如果代码需要校验某字符串是否含有5个字符、1个破折号和1个数字,你应该马上就能写出/^[A-Z]{5}-\d$/。

4、库的使用

现在已经是2014年,所以没人需要用正则表达式从URL析取主机名了。因为每一门现代编程语言都有执行常用功能的标准库。

程序员需要明白,那些经过开发、测试和调试的代码通常要比自己重新写的代码更好。更重要的是,无需编写的代码实现起来要快得多。

5、SQL

很多人的SQL都是在工作中学会的。数据库怎么会是选修课呢?有不用数据库的吗?

把数据存进平面文件的时代已经结束了。一切东西都要进出数据库,而SQL则是存取数据的语言。这是一门说明性语言,不是程序语言,所以用它来解决问题时需要新的思考方式。每一个程序员都应该了解数据库标准化基础,能够执行SELECT(及INNER、OUTER JOIN)、INSERT、UPDATE和DELETE。

6、会用IDE、编辑器及CLI工具

只懂用锯子的木匠永远也无法出师,所以计算机专业毕业的人只懂Notepad或pico令人惊诧。编程工具帮助操纵代码及其他数据,令程序员生活变得容易。所以每一个程序员都应该知道命令行、shell脚本、find、grep及sed的使用。

7、调试

每一个程序员都应该知道利用交互式调试器或在代码中点缀一些输出语句来调试程序。通过逐步求精来跟踪问题的能力实在是太重要了。

8、防错性编程

错误总是难免的,哪怕是明星程序员也不例外。失控是世界的常态,出错毫不奇怪。防错性编程正是理解了这个事实。如果东西不会不出错,我们就不会检查文件打开成功与否,不会检查客户ID是否合法数字,不用测试代码是否允许正确。

程序员需要知道,编译器告警是有用的工具,可让我们生活得更舒适,而不是要避而远之的麻烦事。每一个程序员都应该知道为什么每一个PHP程序都要这样开头:

set_error_reporting(E_ALL)

每一个Perl程序都要写上这些语句:

use strict; use warnings;

9、团队协作

很少编程工作会让你自己一个人完成,如果你经常这么做,智力会受损,表现会变弱。你的代码必须与别人的交互或者混合。再有才的程序员,如果无法与别人协作,都会给项目造成负面影响,并迅速成为组织的负担。

10、利用现有代码

在学校的时候,每一次作业都是一个新项目。但现实世界不是这样的。对于刚工作的人来说,所接到的第一项任务往往是修改代码漏洞。然后,再在现有代码库的基础上为现有系统增加一个小功能。设计新代码那是几个月后的事情,如果幸运的话。

作者:oschina 责编:暴龙 来源:http://www.ithome.com/html/it/88996.htm

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-04-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PingCAP的专栏

TiDB 在卡思数据视频大数据业务中的实践

卡思数据是国内领先的视频全网数据开放平台,依托领先的数据挖掘与分析能力,为视频内容创作者在节目创作和用户运营方面提供数据支持,为广告主的广告投放提供数据参考和效...

4662
来自专栏java一日一条

Java与Linux 一对开源运动的婚姻

两年后Sun终于发布了开源的OPENJDK,同时发布了基于开源协定GNU GPLv2的用于桌面西系统的Java 标准版(Java SE),以及用于移动设备...

692
来自专栏大宽宽的碎碎念

系统的请求量突然增大数倍怎么办?面试中怎么回答真实世界的流量问题最后的话

57216
来自专栏Golang语言社区

大型网站的架构设计图分享-转

近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设...

6199
来自专栏我爱编程

经济学人文章爬虫

假如是经常阅读该网站文章自然是订阅支持一下更好,但假如只是偶尔想看几篇文章订阅的性价比就不高了。

1821
来自专栏枕边书

我的书单(Book List)

下面列了我读过的一些编程相关的书籍,写了一些对书的印象,都是个人观点。书名后是我个人对书的推荐强烈度打的分(5分满分),都是拍脑袋打的。 我比较习惯读纸质书,买...

3706
来自专栏Java帮帮-微信公众号-技术文章全总结

面试重要知识点复习大纲

面试重要知识点复习大纲 一、Java基础部分 (搞定所有技术之后才考虑复习的技术点) 1.数组中的排序问题(笔试或者机试,前者可能性更大) 2...

2884
来自专栏织云平台团队的专栏

Pick一下,工具上线前运维必备原则

一场突袭而来的大雨猛烈冲刷着 DBA 小 D 身侧宽大的玻璃窗。窗外原蓝天白云映照下的深南大道转眼陷入一片阴暗。

1912
来自专栏假装我会写代码

如何打造一个破千 Star 的开源项目

1174
来自专栏施炯的IoT开发专栏

GSM Communication on EBox4300--(1)

    2008年的最后一个月马上就要到来,今天花了一天的时间,终于初步完成了这学期初上报的微软学生项目,接下来就是写Report了。我觉得作为学生,最重要的就...

1958

扫码关注云+社区

领取腾讯云代金券