今天早上,一位我很尊敬的高级开发人员给我打来电话。他想找个朋友聊聊:因为担心自己只能得到可怜的 12% 加薪——而他所管理的其他初级开发人员,则有望获得 40% 的加薪。他还抱怨道,有 85% 的高级开发人员都需要管理 10 名左右的初级开发者。
我不知道该怎么安慰他。我尽自己所能表达善意,听着这段长达 30 分钟的倾诉。之后,我突然意识到光是倾听并没有太大意义。
在早上,我看到一则关于 Palitana 生产簧风琴簧片的新闻,宝莱坞的艺术家们对这个故事赞不绝口。作为一个印度小镇,Palitana 的工人师傅们没怎么受过教育,并且从 1902 年开始就一直在为英国制作这类乐器配件。
在第二次世界大战之后,他们的命运迎来转机——当时大部分英国殖民地开始抵制由德国生产的产品,其中也包括簧风琴。最终,Palitana 拥有了自己的品牌,并在 114 年之后的今天仍然在谷歌搜索中成为最重要的“簧风琴簧片”关联商品。通过亚马逊,他们的产品得以行销世界各地。
高超的工艺,也与对行业需求的理解结合起来。
当下,虽然大部分制造业已经实现了自动化,但 Palitana 的簧片仍然需要手工调节才能产生最悦耳的单色——而且至少在未来 50 年内,3D 打印机还无法完美还原其效果。这蕴含着一种重要的启示——工匠们并不是在即兴创作,而是在部件中找到必须优化的部分,确定哪些可以由机器完成,最后利用自己的热情拿出真正完美的产品。
在编程领域,这种对工艺的追求也在逐渐消失。高级开发人员正在失去自己的优势地位:
在线 IDE(JSConsole 及其它同类方案)——能够轻松运行编写中的代码。原本只有高级开发人员能够玩转的东西,如今已经没有什么难度。
开源 repos 与论坛,庞大的 api 文档不再需要高级开发人员将其整合在一起。
培训视频,只有高级开发人员才有耐心认真吃透的陈旧出版物已经不是主流,从业者也不太需要牺牲周末个人时间刻苦学习。
确实,高级开发人员仍然负责为初级开发者提供各种可复用的构建单元,但如今企业的关注重点已经明显倾向于初级人群。
有经验的开发人员很清楚要在哪里找资源,哪些资源能够发挥作用——但也就到这里为止。不是因为他们缺乏热情,而是因为缺乏必要的奖励与动机。
这会带来非常糟糕的负面影响,我这里就甘冒天下之大不韪,说点实话: 对于企业而言,高级开发者相当于把石材聚拢成形的框体。
这背后的技术原因在于:
互联网民主化
模块化浪潮带来的指数级规模效应——软件之间能够相互依托与构建
相信大家也一定能看清这背后的商业原因。初创企业雇主往往更倾向于雇用初级开发人员,而非薪酬水平达到前者 1.5 倍到 2 倍的高级开发人员。高级开发人员只在初级开发团队当中才有存在的理由——而且具体取决于项目规模以及团队的实际需求。
为了保持自己的高级开发者地位,我们必须:
保持流程优化——对大批文件进行 docker 化。
持续挖掘可以优化的点,但并非必须优化的开发成果。
继续在客户并不需要持续使用的现有产品中,开发通用的功能。
打磨软技能,让自己的人缘更好一些,同时满足管理层以及销售人员的期望。
如今,高级开发人员的薪酬回报预期开始变得难以预测。Stackoverflow 在 2018 年与 2019 年开发者调查报告,已经非常明确地列出目前薪酬水平最高的技术方向。尽管如此,人们还是在不断猜测哪些技术可能迅速升温,而且永远无法预测接下来会有哪种技术成为高级开发者的必备武器。技术淘汰,总是来得太快,就像龙卷风。
当然,目前比较流行的观点是,我们可以牺牲自己的休息时间以及宝贵的假期来继续学习新的语言。但是,这还不足以帮助大家巩固自己的高级开发者地位。
如果 HR 人员脑子不太好使,即使各位拥有长达 8 年的 Java 开发经验与相对较短的半年 Kotlin 经验,当下也很容易受到仅有 2 年经验的 Kotlin 开发者的冲击。即使是获得了面试机会,对方开出的薪酬水平恐怕也根本无法达到您的预期。像中国以及印度这样的国家,堪称初级开发者的批量制造工厂——他们甚至没有软件开发学士学位。更可怕的是,在美国,freecodecamp、codeacademy 以及 hackathon 文化实际上就是在复制这种轻基础、重应用的经验。
这并不是什么古老的智慧,只是一种残忍的丛林法则。市场不讲温情,如果我们发现市场空间不再适合自己,就必须屈服于冷冰冰的供求关系。
如果我们原有角色不再受到重视,那么接下来要么改变施展才能的平台,要么改变自己的角色定位。
如今,非技术出身的企业创始人能够直接购买应用程序模板,并借此从投资者处获得可观的资金。对他们来说,高级开发者的主要作用就是拿出更漂亮的 PPT 展示,而非真正能够工作的开发成果。
高级开发者能够选择的去向,从离岸开发合同到 CTO。开出的金额,则一般从 500 美元到 5% 总收益不等(如果项目失败,后一种可能无法带来任何收益)。我们将出售自己的专业知识,并从这两种选择中做出判断:立刻就能拿到的 500 美元,还是充满不确定性的 5%。当然,身为 CTO,您可能会得到应有的待遇,但其可能仍远远低于其他高管人士——毕竟我们是支持企业建筑的地基,而非吸引投资者的墙面彩绘。
而且可以想见,入职之后您肯定会认识一些销售主管,他们拿到的薪酬与股权要远高于您——毕竟客户可是人家谈下来的。
接下来我要提出的,是很多朋友可能从未考虑过的第三种选择。为什么不以竞争对手的身份进军市场?从技术上讲,即使是哈佛大学或者沃顿商学院的高管,也很乐于选择这样的道路。这里我们先来了解需要解决的问题:
如何进行市场调查
如何进行广告宣传
如何获取投资
事后看来,这些问题只是管理学教授们的废话。我们真正需要关注的,其实只有以下两点:
他们想要什么
我们能提供什么
身为一名资深开发者,我们更擅长回答第二个问题。回答第一个问题需要真正的研究,但也未必非得报考相关专业。
这里我总结出了一种非常简单的方法——别看它简单,但已经得到无数成功企业家的验证。
另外,大家也不需要在自己的领英资料里添加什么企业家标签。最重要的,是培养我们自己的创造力;在获得了良好的热情与能力组合之后,实现目标将只是时间问题。
我们首先构建自己的解决方案,尝试将其宣传给 10 个人;进行版本迭代,再宣传给另外 10 个人,然后将这些人群归类为:
由于我们已经拥有 20 位受众,所以这一切并不像听起来那么困难。就这么简单,刚刚我们还是个为了 12% 加薪而气得不行的员工,现在我们已经踏上了自己的创业之路。
我在文章中对高级开发者的未来前景很不看好,这也激起不少读者朋友的热烈讨论,其中当然有一些存在偏见的观点。我觉得有必要列出一些数据作为补充,也感谢各位的积极回应。
我在这篇文章中传达的主要观点,在于一部分有能力的软件业同行应该在职业生涯当中做出新的探索与进展。其中也包括我自己,我曾经在不少企业担任核心产品的软件开发者,后来也尝试过自由职业者等其他选择。
我并不是那种极度迷信调查结果的人,但由于缺乏关联性足够强的故事,观察结果很容易被视为“存在偏见”。根据我的个人观察,我得出了以下结论:
软件工作的跳槽率最高——理由主要是薪酬水平,或者对管理层不满意。也有不少做得不错的从业者最终也进入了管理层,成为自己最讨厌的家伙。拜拜,咱再也不是开发人员了。
如果没有选择跳槽,那么大多数从业者会变为远程自由职业者。自由职业早已存在,只是目前变得更加流行。远程自由职业者的存在感不强,但高级开发者却希望过得更好。
当个人目标与管理层目标有所偏差时,顶尖开发人员的表现也会快速下滑——这一论断来自某软件开发总监的文章,获得了 4200 个赞。
彭博社表示,软件工程是个注定消失的职业,从业能力从 35 岁起即快速下降。
这里我会再强调一次,以上只是来自学术研究或者调查的结论,我其实并不怎么在乎。但是,纵览 reddit 上的相关帖子,我们也能看到整个软件行业对于“高龄”开发者们的偏见与打压。总结:幸福需要一点点运气,而我也是个有点运气的人。其中需要改变,改变非常痛苦,但也教会了我很多,包括不少非常实用的技术与技能。如今,我乐于说出这个很多人讳莫如深的观点,我甚至觉得咱们没必要为此难过。这就是市场的力量,而从长远角度来看,这种力量同样由技术本身所驱动。只是在面对这种必然时,身为当事者的我们多少会心有戚戚。
我们在做软件开发时学到的很多思维、方法、工具、模型、算法……其实可以迁移到生活中使用,让我们生活得更美好哦。我这里暂举 7 个,以后有时间,慢慢补坑,争取补到 60 个。大家有兴趣的,可以留言补充你最有感觉的。
作为开发人员,我们都希望在完成功能的基础上让代码运行的更快、更省空间,那如何衡量编写的代码是否更有效率,这就需要我们学会如何分析代码时间复杂度和空间复杂度.
JavaScript 是一门复杂的语言,不管处于什么样的水平,都有必要了解 JavaScript 的基本概念。本文介绍了 12 个非常重要的 JavaScript 概念,但绝对不是说掌握好 JavaScript 只需要知道这些就可以了。
服务器时间是东八区时间,页面会在全世界各地,页面 JS 功能需要对比服务器时间和用户本地时间,为兼容世界各地时间,需要将用户本地时间转换为东八区时间
我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
先说结论:据我观察,至少有60%的团队误用了敏捷软件过程,或者说至少60%的团队在进行伪敏捷开发。与大家通常的认知是相反的,敏捷过程并不是一个非常容易实践或者实施的过程规范。
敏捷是一个很流行的一个词语,但是在敏捷里面,包括很多团队也是刚开始用Scrum,怎么让质量成为敏捷的一个助力而不是拖累,这个是我主要想谈的。
现如今,“ 敏捷 ”可以是指任何东西。渐渐地,它就变得毫无意义了。很多企业已经对”敏捷“感到厌倦了,甚至有了抗拒性。更糟糕的是,就像孔子说的那样:跨学科研究、原则和实践是敏捷的未来。
业务,似乎与开发人员不是太相关,开发人员天生处于技术端。但是,一个只会开发的开发人员,很容易被代替,只有真正了解业务,才能真正了解需求,做出好的产品。那么如何去解决这些问题呢?
前端和后端开发之间的界线正在发生变化。有一些常见的错误会导致前端开发人员增加工作量、浪费时间,本文将介绍一些常见的错误以及如何避免这些错误。公司向他们的开发人员和程序员提出更多的要求
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!