给平凡程序员的 12 条建议

我不是最牛的开发者,但我理解那些让一名开发者脱颖而出的特性。

1. 写更多代码

如果你想在某件事上做得更好,你就必须花时间去做这件事。

不管你读了多少篇文章,读了多少遍文档,不付诸行动,你就不会进步。

这种设计模式一开始看上去很难,但当你在多种环境中实践后,它就变得非常简单。

2. 编写测试

当第一次开始为自己的代码编写测试时,我惊讶地发现:自己缺乏编写良好测试的心态。

编写测试让你能以起初没有想到的方式看看自己的代码,因为在构思测试时,你必须考虑这个东西会出什么问题。

你意识到,自己写的那个函数做了太多的事情,分成多个函数可能更好,因为很难想出一个测试可以测试做这么多事的函数。

让我们看看下面的例子:

function postData(data) {
 boolean valid = true;
 // 检查 data 是否已定义
 if (data === undefined) {
   valid = false;
 }// 检查 email 的格式是否规范
 if (!regex(data['email']) {
   valid = false;
 }// 检查密码是否至少 8 位
 if (data['password'].length < 8) {
   valid = false;
 }if (valid) {
  http
   .post(`example.com/user/create`, data)
   .then((response) => {
    // 追加到列表
    this.users.append(response.userid);
   })
   .catch((error) => {
    // 显示错误
   });
 } else {
   showValidationError();
 }
}

如上所示,postData方法做了许多事情,比如验证数据、在条件都满足时追加到用户列表并处理错误。

postData编写单元测试会相当困难和混乱。你可以把它分解成多个方法,然后分别测试每个方法。

function postData(data) {
 return http
   .post(`example.com/user/create`, data);
}function validate(data) {
 // 检查 data 是否已定义
 if (data === undefined) {
   return false;
 }// 检查 email 的格式是否规范
 if (!regex(data['email']) {
   return false;
 }// 检查密码是否至少 8 位
 if (data['password'].length >= 8) {
   return false;
 }  return true;
}function appendUsers(userId) {
  this.users.append(response.userid);
}function main() {
 if (validate(data)) {
  postData(data)
   .then(data => appendToList(data.userId))
   .catch(error => handleError(error))
 } else {
  showValidationError();
 }
}

你已经看到为什么编写测试会带来更高质量的代码。

你必须将长方法分割成多个更小的单元,并且每个单元都可以进行原子测试。

3. 诚实

不管你是完全了解,还是不了解,都要诚实

假装知道某个 API 的输入和输出,你就无法进步。相反,如果你因为对 API 或主题缺乏了解而说了一些愚蠢的话,你可能会在讨论中出洋相。

4. 为开源项目做贡献

为开源做贡献能让你接触到工作中可能永远不会出现的场景,开拓视野。

这个过程中,你可以了解在分布式场景中运行一个项目需要什么,引入非破坏性更改和其他新的开源工具等。

总之,好处说不完,我们都知道开源如何直接或间接地改变了每个人的生活。

5. 乐于助人

对自己知道的事情,帮助别人会让你成为那个方面的“领路人”,并确定你在团队中的价值和重要性。

如果是你可能不是最擅长的事情,也要乐于助人,因为你可能从中学到一些有价值的事情。

6. 选择一个个人项目

个人项目是学习新框架和新技术的好方法,而你可能在工作中没有用到过它们。

对于一个个人项目,你既是产品经理,又是开发人员和架构师,因此可以想象要做多少决策。

你可以借鉴在个人项目中的经验,在工作或社区中建议新的框架和工具,如星星般闪耀。

7. 放低姿态

不要让自负和你的工作头衔阻碍学习和进步。

少考虑你是谁,多想想你每天会变成什么样。这个组织中的架构师,可能是其他机构中的软件开发人员。

对自己擅长的事情,尝试去采取新的、不同的方式。否则,你可能错过一个更有效的算法或一个更好的特性设计。

8. 理解“为什么”

在接受并坚定使用新框架、模式或 API 的信念前,请先理解它存在的“原因”。试着从直觉上理解一个概念的存在。

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

以上是你在 vue.js 文档站点上遇到的第一个代码示例。即使在看这个非常基本的例子时,我也试图在我的头脑中推断以下的事情:

  • 为什么要用一个new关键字来创建组件?为什么它们没有一个工厂模式来创建对象?
  • 似乎el属性获取了元素的id,为什么它使用# ?这是否意味着我可以添加其他元素选择器,比如属性和类?
  • data似乎是Vue对象的一个非常通用的属性名,它究竟要表示什么?

并不是说你应该对每件事都这么挑剔,而是说培养这种习惯有助于更好地理解事物的哲学,从而提高你的理解力。

9. 不要懒惰

懒惰会阻碍你展示自己的技能或关心的事,例如,如果你相信重构能提高性能,那就去做吧。

添加注释节省其他开发人员的时间,记录你新构建的 API。

你在代码中附加的时间等于为其他开发人员节省时间,他们正在尝试理解你所编写的内容。

10. 解决编码挑战

解决编码挑战会迫使你去思考那些我们日常生活中习以为常的东西。

我说的是代码的空间和时间复杂度。有些人认为,解决挑战是不现实的,因为大多数东西都是抽象的,你只需要使用 API。

但是我不同意!这不仅帮助你仔细查看代码,也使你有信心想出性能最好的代码,另一个好处是,你总是在准备面试。

一些解决挑战的网站有 hackerrank leetcode topcoder spoj

11. 鼓励他人

如果你喜欢同事的提交,那么不要犹豫,在 StackOverflow 上留言,感谢或支持那个对你有帮助的答案,或者在 Medium 上为那篇给你带来免费知识的文章鼓掌,或者在 GitHub 上为你看中的有趣项目加星。

鼓励别人可以帮助他们发挥出最好的自己,最终你也会发挥出最好的自己。

12. 不要躲在技术栈的某一层后面

假如你发现了在视图中使用 API 的一个问题,但却不能修复它,因为你是一个“前端开发人员”。

在我看来,这是一种不好的态度。编程的基本原则,如保持代码干爽(DRY)、看到类的多个用例就使用抽象、捕获所有流控制路径的异常等等,几乎适用于技术栈的每一层。

记住这些基本原则,它们可能会帮你解决自己认为无法解决的问题,因为你认为自己没有处理代码库的这一部分。

结论

正如我上面所说的,阅读本指南将帮助你意识到自己没有做的事情,但要想从人群中脱颖而出,就需要付出努力和自律。

如果你喜欢这篇文章,请不要忘记与其他开发人员分享。希望本文对你有所帮助!

英文原文:

How not to be a mediocre developer!

原文标题:给平庸程序员的 12 条建议
原文链接:https://www.infoq.cn/article/kXBaKpzLfrdxVcYh8hUV

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355