追求进步的同窗都关注了“1024译站”前端
这是1024译站的第 29 篇文章 程序员
原文:https://dev.to/duomly/soft-and-hard-skills-you-need-to-be-a-good-developer-5ah4
翻译整理:大道至简web
每种职业都有其特殊的要求。例如,要成为一名医生,你必须了解生物学,完成医科大学。做为一名教师,你须要获取资格证,还要关心学生。算法
一样,当你决定成为一名程序员时,除了你学到的主要技术外,还有一些常见的硬技能和软技能,每一个开发人员都应该具有。本文就来分享一下我认为在程序员的工做中相当重要的软技能硬技能,各有 5 项。数据库
每一个程序员都该具有的 5 项软技能
根据大部分人的刻板印象,程序员就是一我的坐在地下室里,用电脑像变魔术同样开发出各类软件,好久不和任何人说话。这纯粹是对开发人员群体的误解,由于沟通是咱们工做中很是重要的一部分。编程
首先,为了理解咱们将要实现的项目需求和解决方案,咱们必须与团队中的其余人进行沟通。每一个人都不肯看到由于误解而犯错的状况。这就是为何开发人员在工做中须要良好的沟通技巧。后端
除了沟通技巧,团队合做也很重要。做为一个团队,能够作得更多,拿出更好的解决方案。当你须要实现某个功能时,最好与团队中的同事讨论一下,特别是之前没有作过的事情。有些人可能已经作过这种解决方案而且有了能够分享的经验,顺便说一下,你就能够学到一些新东西。安全
程序员的工做主要是解决问题。每次我要建立不一样的东西时,我都必须找到最好的解决方案,同时还要考虑业务需求和程序性能。微信
若是你如今以初级程序员的身份开始职业生涯,或者你刚开始学习编程,你会发现解决问题的能力有多么重要。在这以前了解它是很重要的,不要气馁。数据结构
我认为,这个工做很大的一个优点就是天天都在解决问题。你不会感到无聊,天天都要面对不一样的问题,或者即便是相似的问题,你也会尽力找到更好的解决办法或者尝试不一样的方法去解决。
即便你一开始常常容易放弃,你也有可能学会如何解决问题,经过完成任务打怪升级。若是你以为某个问题不可能解决,那请记住每一个问题至少有一个解决方案。想一想以前那个根据手机壳颜色更换 App 主题的产品需求,还真能作到。
你可能很好奇,为何好奇心在程序员的工做中如此重要。这很好,由于你开始好奇了,哈哈!但说真的,一个好的程序员能学会不少东西,而且对技术、新解决方案等很感兴趣。
若是你对新技术的工做原理感到好奇,你想尽快学习一个新框架,并尝试去用它,看看它是否比其余东西更好,这是一个好消息。
做为一名程序员,学习将成为你生活中的一大部分,因此让编程成为你的爱好也很重要。这样,看到新的技术出现须要学习的时候,你就不会感到力不从心,表示“别再出新框架了,学不动了”。
此外,好奇心可能会引导你加入程序员社区,在那里你能够学到更多东西,也能够分享你的知识。
正如我以前提到的,在编程中,不少东西都在改变。新的框架、库、技术和方法不断出现。几乎每一个项目都有不一样的设置,你必须快速适应新状况和新环境。
若是你是那种乐见变化的人,而且在事情一成不变时很容易感到无聊,那么你可能会发现本身适合作一名程序员,并能从这份工做中得到不少乐趣。
此外,一直以来,不一样的框架受欢迎的程度不一,因此若是这对你不构成问题的话,它也会帮助你在市场上被注意到,并且你可以轻松适应公司使用的新技术。
在每一份工做中,工做与生活的平衡都是很是重要的。当你是一名开发人员时,一般有灵活的工做时间,在这种状况下,可以正确地管理时间是很是重要的。
若是你知道如何计划你的工做,并能估计你须要多少时间来完成一项特定的任务,这是一项很是有用的技能。不然,你可能会致使这样一种状况:你会为了各类杂事疲于奔命,而后老是没日没夜地工做。
此外,你须要找时间学习,因此记住,有时你须要一两个小时的私人时间来了解最新的技术,这点很重要。
说完软的,再来讲硬的。
每一个程序员都该具有的 5 项硬技能
程序员须要了解编程语言和框架,这一点没什么可说的。但要成为一名优秀的程序员,深刻了解至少一种编程语言是很重要的。
若是你可以尝试学习另外一种编程语言,并对它们之间的差别有一个概念,那就太好了。
选择哪一种编程语言做为你的主要语言,取决于你本身和你想要解决的问题。你能够看看值得学习的编程语言排名,看看你是否能够选择任何你感兴趣的。
在开发人员的工做中,理解数据库的工做方式是很是重要的。它是应用程序中保存数据的主要部分。
做为一名程序员,你应该掌握一些基本的知识,好比如何建立、删除、更新、插入一条记录。若是你知道如何组织数据库就更好了,在特定的项目中使用哪一个数据库更好,以及为何。
此外,你还应该可以确保数据库中的数据的安全性。
可能有人会问,若是我是作前端开发的,还须要懂数据库吗?在先后端分离、职责清晰的状况下,确实前端不须要关注数据是如何存储的。可是了解一点数据库,对于咱们理解数据结构和走向全栈开发会有很大帮助。
算法是按照某种顺序执行以得到输出的一组指令。算法不直接关联任何编程语言,它们是解决排序或搜索等特定问题的方法。
在程序员的知识体系中,数据结构和算法应该占有重要的一席之地。虽然不必成为算法大牛,但常见的算法分析和实现方法应该要掌握。算法说白了就是解决问题的套路,熟悉了这些套路,解决问题更容易。
正如前面提到的,团队合做是软件开发人员工做中很是重要的一部分。考虑到协做,开发人员须要一种方法来同时处理一段代码,而不破坏其余人的工做。这就是为何源代码控制对于每一个程序员来讲都是很是重要和必需的技能。
源代码控制让咱们能处理同一代码库的不一样分支,并在每一个开发人员的工做完成后将其合并到一块儿。几乎每一个开发岗都要求这个技能,但也不用太担忧,由于如今已经有各类图形化界面的源代码控制工具,即便你不习惯用命令行,你也可使用图形界面。可是你必须理解基本的术语和操做。
为了保证代码在不一样的状况下工做,开发人员建立了单元测试。为了确保一切正常,大多数公司都会招测试人员,可是在经过功能测试以前,检查代码是否正常工做而且没有破坏其余东西也很重要。
每一个开发人员都应该具有一些测试方面的知识,以确保所完成的工做具备必定的质量。
总结
如你所见,作一名程序员不只仅是学习编程语言的基础知识。要成为一名优秀的开发人员并有能力变得更好,你还须要一组特定的软技能和硬技能。好消息是,你能够很容易地训练硬技能,特别是若是你对技术感兴趣的话,可是提升软技能可能须要更多的工做经历和时间。固然,这是彻底可能的。
这篇文章列出了我认为须要掌握的技能。若是你以为少了什么,或者不须要什么,请在评论中告诉我,我也想知道你的意见。
顺手点“在看”,今天早下班;转发加关注,共奔小康路~
本文分享自微信公众号 - 1024译站(trans1024)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。