给平庸程序员的12条建议
2021/4/18 12:25:45
本文主要是介绍给平庸程序员的12条建议,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
作者 | Dushyant Sabharwal
译者 | 平川
策划 | 万佳
我不是最牛的开发者,但我理解那些让一名开发者脱颖而出的特性。
1 写更多代码
如果你想在某件事上做得更好,你就必须花时间去做这件事。
不管你读了多少篇文章,读了多少遍文档,不付诸行动,你就不会进步。
这种设计模式一开始看上去很难,但当你在多种环境中实践后,它就变得非常简单。
2 编写测试
当第一次开始为自己的代码编写测试时,我惊讶地发现:自己缺乏编写良好测试的心态。
编写测试让你能以起初没有想到的方式看看自己的代码,因为在构思测试时,你必须考虑这个东西会出什么问题。
你意识到,自己写的那个函数做了太多的事情,分成多个函数可能更好,因为很难想出一个测试可以测试做这么多事的函数。
让我们看看下面的例子:
function postData(data) { boolean valid = true; // check if data is defined if (data === undefined) { valid = false; } // check if email is well formed if (!regex(data['email']) { valid = false; } // check if password is atleast 8 chars. if (data['password'].length < 8) { valid = false; } if (valid) { http .post(`example.com/user/create`, data) .then((response) => { //append to the list this.users.append(response.userid); }) .catch((error) => { // show errors. }); } else { showValidationError(); } }
如上所示,postData方法做了许多事情,比如验证数据、在条件都满足时追加到用户列表并处理错误。
为postData编写单元测试会相当困难和混乱。你可以把它分解成多个方法,然后分别测试每个方法。
function postData(data) { return http .post(`example.com/user/create`, data); } function validate(data) { // check if data is defined if (data === undefined) { return false; } // check if email is well formed if (!regex(data['email']) { return false; } // check if password is atleast 8 chars. 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)、看到类的多个用例就使用抽象、捕获所有流控制路径的异常等等,几乎适用于技术栈的每一层。
记住这些基本原则,它们可能会帮你解决自己认为无法解决的问题,因为你认为自己没有处理代码库的这一部分。
13 结论
正如我上面所说的,阅读本指南将帮助你意识到自己没有做的事情,但要想从人群中脱颖而出,就需要付出努力和自律。
如果你喜欢这篇文章,请不要忘记与其他开发人员分享。希望本文对你有所帮助!
英文原文:
https://medium.com/hackernoon/how-not-to-be-a-mediocre-developer-c59a49f97fc5
这篇关于给平庸程序员的12条建议的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南
- 2024-12-21功能权限实战:新手入门指南