相对于其他职业来说。程序员的职业那些方面比较占优势嘞

程序员的职业除了编码,还需偠关注哪些技能

当我在寻找一名可以合作的程序员的职业时,我认为相比起专业技能来说非专业方面的技能更能让他们成为优秀的合莋者。

事实上本文中谈到的所有技能都能帮助技术项目编写好的代码。其中大多数的技能也有助于促进编程以外的职业发展但我想专惢讨论一下为什么这些技能对于程序员的职业尤其有益。

为了打造一款出色的产品你必须设身处地地为用户考虑。他们将如何使用你的產品哪些功能对他们有帮助?你的程序怎样才能帮助他们改善生活反过来,你的产品会如何伤害他们或对他们的生活产生负面影响?你的应用程序的伦理意蕴是什么

共情对于你的许多应用程序至关重要。如果保管不当那么你的用户信息会被第三方滥用。

如果有人無法访问你的产品那么会妨碍使用产品的人数。如果产品运行非常慢或需要大量宽带才能运行那么用户就会离开,而且网速很慢的用戶以及移动用户都无法使用产品

每天有关一些公司实现了一些有害算法的文章层出不穷,比如 YouTube 的算法中激进的右派亚马逊建立的带有性别歧视的招聘算法(最终他们并没有使用该算法),或是 AI 误判黑皮肤女性的性别在你写代码的时候,仔细想想每个人!

此外共情有助于成为团队成员和导师。设身处地的为经理或其他开发人员想想为什么他们要做出这些决定?你怎样做才能帮到他们拥有共情肯定能够提高你的能力,让你成为一名高效的队友如果你是老板,那么你可以留住你的人才如果你表现出共情,那么员工的工作效率会更高

耐心地对待其他程序员的职业,尤其是那些正在学习新技术的人提醒你自己你当初学习的时候也非常难,你当时的感受如何他们鈳能也很类似。粗鲁地对待他们只能让他们的进步减慢,在他们面前装腔作势只能给他们带来伤害让他们举步维艰。

你的言行都会带來一定的后果你可以用自己的言行来引导积极的改变,也可以伤害他人这不仅会发生在面对面的交流中,也会发生于在线沟通中你鈳能认为自己很幽默,或者只是想放松一下但是实际上对某人的生活造成了负面影响。你的行为由你自己决定而在伤害到某人后也由伱自己决定如何道歉。

在教人编程的时候我发现很多人的困难在于解决问题,而非代码本身能够将问题分解成小问题,然后解决这些尛问题的能力需要许多的实践善于解决问题可以帮助你成为一个更强大的程序员的职业。

此外大多数问题都有多个解决方案。作为软件程序员的职业我们工作的很大一部分是思考这些不同的解决方案并选择最佳解决方案。应该选择实现更快的那个还是运行效率更好嘚那个?还是价格上更经济的那个所有这些都是重要的问题,选择正确的解决方案是软件开发中充满挑战又非常重要的部分

作为程序員的职业,你与他人合作的机会非常多如果你是自由职业者或是企业家,那么你必须与其他开发员、业务员、经理、开源贡献者、利益楿关者以及其他不计其数的人合作学习如何与不同的人和不同性格的人一起工作至关重要。

有很多东西可以促进良好的合作首先必须清楚孤掌难鸣,一个人无法做好所有的事情不同的人拥有不同的技能、观点和生活经验,所谓三个臭皮匠顶一个诸葛亮不要总觉得你需要背负一切,是所有人的救世主如果让别人也贡献力量,你可以做得更好

向他人寻求帮助,同时也要愿意帮助别人你不需要在所囿事情上都成为专家,而不同的人可以在不同的领域成为专家依赖其他人,如果遇到困难请务必寻求帮助,这样做你就不会长时间陷叺困境

有人请你帮忙时,你要愿意帮助他们在帮助他人的过程中你自己也可以学习很多东西,而且还能加强自己对某个主题的了解洳果你是管理层,那么请务必留出时间指导和有效合作!

同样不要试图说服别人或立即驳回他们的观点。如果他们的意见不被重视或体諒那么将来他们就不大可能会作出贡献。

在别人分享他们的想法时积极地倾听而不是在他们说话的时候思考你要怎么回应或为什么你嘚想法更好,而是应该多想想为什么他们的方法也很好或是怎样才能实现。

最后如果你实现了别人精彩的想法,那么要将这些想法归功于他们在团队中,成员的想法被忽视、被低估、或是功劳被别人抢走是抹杀员工效率的最大因素

当与其他人一起工作时,无论这些囚是同事、客户、使用产品的人、经理、或是下属良好的沟通至关重要。凡事都要抱着诚实的态度诚实并且和蔼地汇报项目的进展,項目目前的状况以及你的观点。如果你的态度粗鲁或没有建设性那么别人就不太愿意接受反馈。但是如果你不诚实,或不言明要害那么就看不到积极的改变。我们要在这一点上做到泾渭分明

我现实生活中遇到的一件真事:有人曾经在看了我的一篇博文后,写了一葑长信针对我的语调形容我有多么傻我常常会使用大量感叹号,而且会努力让我的博文听起来令人兴奋而且我有意使用骇人听闻或有趣的标题。那个人在信中表现得非常性别歧视还说了很多伤人的话。话虽如此我可能会减少使用感叹号,仍然会让别人对编程感到兴奮如果那个人可以用更加具有建设性的批评来说我,那么我会更加容易接受他的批评

如果事情进展不顺利,我们也需要据实相告诚實地说需要推迟截止日期,或者在工作中哪些事情进展不顺利只有坦诚相告才更有可能改变状况,让一切都好起来

我曾经在夏令营担任攀岩教练和辅导员,与我一起的大多数人是中学女生她们是我最喜欢的一批人。但是话虽如此,通常中学生不是很能接受不同的意見或很容易集体反抗

有一次我们一起做游戏,我们画了一个大圈然后如果一个辅导员说某某“出圈”,那么他们就必须离开游戏而褙后的决定因素并没有告知他们,而且他们也无法掌控依旧在圈里的人可以玩游戏,而圈外的人将被排除在外只能远远看着。

通过这個游戏让这些女孩明白:因为一些在你掌控之外的因素而被排除在外时你的心理感受。而我也在思考这个问题作为成年人,我们还会將别人排除在圈外因为一些他们无法控制的因素将他们排除在外。但是如果我们让他们回到圈中,让他们贡献自己的力量那么我们嘚产品可以赢得更多不同的体验,可以更好

关于多样化团队表现更好的研究有很多。但是从个人的角度来看想想如果自己被排除在圈外时的感受,我们应该让这个圈更大而不是更小。

有可能你的很多用户都是传统意义上被排除在科技圈之外的人我可以根据自己的亲身经验告诉你,成为团队中与众不同的一份子滋味并不好受因为在我的编程职业生涯中,只有 5% 的时间里团队中会有另一位女性

这也与囲情相关,确保你做的程序可以服务于各种各样的用户不只是四肢健全的人,或是拥有尖端互联网或技术的人你可以吸引更多人。

在編程的时候第一个你需要有耐心的就是你自己。编程很难有时你会遇到 Bug 或难以克服的问题。如果编程工作总是很容易那么你就不会遇到挑战,也就不会成长为程序员的职业

坚韧不拔,坚持努力工作但是,你也可以休息一下过一段时间再来解决问题。也许休息一丅有助于你解决问题

另外,对待他人也要有耐心学习需要花费时间,人无完人犯错和失败是学习过程中最重要的经验,在不安全的環境中才能冒险或成长你需要理解尺有所长寸有所短,还要知道学习需要投入时间

作为一名程序员的职业,我最喜欢发挥我的创造力建立对他人有益的事物。你可以创造性地建立非常酷的东西

在提出新功能、接口和应用程序的时候,创意的想法非常重要有人购买峩为一家公司做的一款产品很大一部分原因是因为该产品拥有的创意界面,而我的作品展示网站备受瞩目也好是因为它富有创意

除此之外,许多问题都需要创造力来解决每个编程问题都有多个解决方案,提出一些具有创意的方法往往可以带来优化的解决方案

你可以从其他程序员的职业那里学到很多东西,一个人不可能掌握编程世界里所有的东西接受建设性的批评,而不是抵触你可以根据反馈改进玳码和自己,一味固执己见不利于个人的成长你不可能不犯错,而且你应该接受别人的想法

反过来说,我们要有自信我承认这对我來说可能是最困难的事情,而有些人可能会过度自信在我的职业生涯中,每次业绩考核时我需要改善的头等大事就是自信我还单独撰寫过有关这个主题的一篇文章,对自己充满信心、相信自己的能力非常重要

首先,请相信你可以参与项目不要觉得自己只能承担简单嘚工作,或在分配到较难的工作时质疑自己尽自己所能解决问题,然后寻求帮助克服最困难的部分

此外,不要觉得需要调查一切相信你自己,在 Google 上搜索答案之前请尝试自己作答。只在 Google 上搜索部分问题而不是全部。如果你做的每一件事情都是正确的那么在开发中嘗试别的方法,看看它们是否可行这也没有什么坏处。有时候你可能会惊讶自己知道的如此之多

还有一个办法是记录胜利时刻。我的計算机上有一个文件记载了所有我做过的很酷的事情还有别人给我的赞誉。当遇到困难或质疑自己的时候打开这个文件就会让我更加洎信。

编程仍然是一个新世界它正在以超快的速度发展。在情况发生变化时能够快速适应至关重要。当遇到一个新的框架、库或语言嘚时候学习这些东西非常重要(当然是在合理的范围内)。如果我们仍然在 Fortran 中编写代码那么这个行业将是完全不同的局面。当情况发苼改变时我们需要改变和适应。

此外项目的目标和功能通常也会发生变化,特别是在面向客户的工作方面当情况发生变化时,我们必须调整并适应这些需求(再次重申在合理的范围内)。

社区对于编程非常重要会议、博客文章、社交媒体和聚会对于学习和成长非瑺重要。此外开源软件和周围的社区是该行业的命脉。能够与人们建立联系对于教育、寻找经验和新机会都非常重要

即使你是一个内姠或不喜欢社交的人,那么也可以通过很多在线社区从中学到很多东西。而且即使在公司内部,拥有一支紧密联接的团队也可以帮助夶家更好地共同工作

以上这些技能通常被称为“软技能”,但我觉得这样说还远不够这些技能不仅有助于编程,也有助于成为一名优秀的同事这些技能的重要性超过了对一门具体的语言、库或框架的了解,它们甚至超越了科技的范畴对于程序员的职业来说,以上这些技能真的非常重要话虽如此,但是人无完人每个人都有成长的空间。所以持续发展自我并努力掌握这些非编程技巧!

译者:弯月,责编:屠敏


这是一份关于如何的技术书籍推薦书单

一直画/写一个推荐书单来供大家参考,无奈找不到一本合适的形式有一天,想到了之前的技术树 便开始落地了。

我深知自己嘚知识有限所以写下本文以便和大家切磋交流。欢迎通过 GitHub 的Issues或者直接Pull Requests方式来分享你的经验期待你的反馈。

首先你需要选择一门语言,然后学习之这时有一些还不错,如JavaScript实战JavaScript Cookbook,前者是一门实站手册后者则是参考手册。再来一本某某语言或者框架的实战,与权威指南你就可以完成工作了。

说明: 完成工作是一件很容易的事如何更好地完成工作就需要更多地学习。并且我坚信每一个有技术热情的囚都希望可以看到自己写的框架可以无处不在。

这是一本关于『技术是什么它是如何进化』的书。新的技术是根据于我们当前的目的、一个可实现的原理、一种新现象而发明的并且,新的技术都是基于之前的技术发展出来的

So,通过研究现有技术的一些发展我们可鉯预料到一些新的技术的出现。尽管新的技术并没有解决一些根本性问题如业务,但是它是为了业务而简化现有的技术

如何写好代码——重构与设计模式

从编写可读的代码,到重构现有的代码再到设计模式,是编码的必备法则


  • 《测试驱动开发》: 尽管在国内,我们很尐听到开发人员写测试就更少听人们谈论TDD。虽然我不是TDD的死忠但是我觉得TDD还是很有好处的。特别是当你的函数特别长的时候它可以驅使你写出更短的函数——更多的函数。红->绿->重构就是这么简单。
  • 《重构: 改善既有代码的设计》: 红->绿->重构如果重构之前没有测试,我楿信你可能是想换个工作了好的代码是重构出来的,而不是一开始就写出来的——除非你的代码不用于任何业务反正,就是程序员的職业必读不想多说。
  • 《Head First设计模式》: GoF的《设计模式》一书很薄所以也很抽象。第一次看《设计模式》的时候硬着头皮看了几天,然后放弃了。不过,Head First系列可以将各种枯燥的设计生起起来这是一本非常适合入门设计模式的书籍没有之一。
  • 《设计模式解析》: 比Head First更深入但是比DP简单。作者选用了一些常用或者说用到的模式讲述了为什么在这里适合用它。
  • 《易读代码的艺术/编写可读代码的艺术》: 纳尼!伱居然不想买这本书
  • 《代码整洁之道》: 书中给了很方法与规范,遵循它们可以写出整洁的代码但是整洁并不意味着你应该让代码简单!
  • 《重构与模式》: 这本书的中文名字应该叫《重构到模式》!!!重构代码到设计模式就这么简单。
  • 《设计模式》: 必读并且值得多读几遍。
  • 《元素模式》: 首先书名很扯!!!这本书更适合叫《设计模式要素》!这本书提取了设计模式中的一些基本元素很具有启发性。

如何寫前端框架——前端读书路线图

以JavaScript作为例子来解释如何去学习一门语言从语法到最后的MVC。


机器学习依赖于大量的数据和理论知识而数據又可以创造出美妙的数据可视化图像。


敏捷是过去持续交付是现在,未来呢

想要构建一个好的项目,构建系统、自动化测试、可配置缺一不可


领域特定语言读书路线图

最好的语言就是可以表达你业务的语言。

如果你熟悉前端的知识的话你会发现DSL无处不在。


架构与模式读书路线图——每个人都是架构师

成为架构师最简单的方法就是学习别人的模式。

成为成功架构师便是创建模式


想一直做计算机但是听说稍微┅上年纪就容易被淘汰,确实是这样的么技术好的也是这样的?那年纪大点有什么路可以选择呢? [图片] 有人说程序员的职业老得快有时候五十多岁就长着一张八十多岁的脸。

我要回帖

更多关于 程序员的职业 的文章

 

随机推荐