目录
最近对程序员这个职业有些困惑,就一一记录下来吧~
技术发展的门槛是低还是高?
“程序员”这个职业,现在大概是大多数人认可的一个需要技术、工资又高的职业,俗话说内行看门道,外行看热闹,这两个标签只能代表开发的一部分。
有高薪劳动者的地方自然就有低薪劳动者,资本的本质就是商业化,或者通俗的说就是赚钱,所以只要有优化和压缩的可能就会被优化,而当前大部分技术发展都是为资本服务的。
技术开发与研发
其实,我们经常会把“研发”和“开发”混淆。根据维基百科,研发不是为了立即盈利,通常风险较大,投资回报不确定。如今,大多数互联网产品“研发”都会对投入产出比和盈利预期有更高的要求,强调“快速试错”和“快速迭代”。对产品生命周期,或者更确切地说是盈利周期会有更高的要求。如果这一块不行,就撤了,换到下一块。
维基百科:
新产品的设计和开发往往是公司生存的关键因素。在瞬息万变的全球工业格局中,公司必须不断修改其设计和产品范围。由于竞争激烈和消费者偏好不断变化,这也是必要的。如果没有研发计划,公司就必须依靠战略联盟、收购和网络来利用他人的创新。
显然,现在很多大公司更倾向于后者,因为这种方式比预期不确定的产品开发能带来更稳定的利润。所以我们经常看到很少有团队愿意不计成本长期投入研发,因为研发需要资金,更多时候他们通过融资、战略合作等方式解决资金问题。但这还存在一个问题:投资人对利润的预期能否匹配产品本身。
因此我们提到“程序员”,其实大部分都是开发者而非研发,至于开发是不是一个技术活,说实话入门不难,但做好却不容易。
自学、培训班红海
因为入门难度不大,所以我们可以看到近些年无数的培训班的出现,当然培训效果显然没有宣传的那么好,但是对于一些对这个行业一无所知的人来说,指导和所谓的培训不失为一种更快捷的途径。
培训班做的事情就是把网上的一些文章/博客/课程资源整合起来,然后按照上课时间整理成每节课/天的计划,最重要的一点是他们会多做一些面试知识点的培训,教学生怎么写简历。(其实我对培训班了解不多,以上就是我觉得培训班应该做的一些事情。)所以对于懂得如何获取资源的新手来说,自学也是可以的。
很多培训班都会有一些成功案例,比如有多少人得到了工作,甚至有人进了大公司,也一定会登上历史荣誉榜(如果有这样的榜单的话)。这些成功案例确实可以说明一些事情:这个培训班的知识体系准备的不错,面试/简历包装都准备的不错,但真正开始工作之后,能表现得怎么样,还是要看你自己。
其实我觉得培训课上最应该教的就是如何利用搜索引擎和合适的关键词来找到问题的有效解决方案。因为大部分开发工作遇到的问题,99% 都可以在线解决,而剩下的 1%,只需要重启 app/浏览器/电脑就可以解决。所以对于自学成才的开发者来说,搜索也是直接影响工作能力和效率的技能。
晋升/考核与技术能力的关系
对于开发人员来说,职位级别往往被认为是技术能力的标签。
不管是面试/求职,还是开发人员之间的交流,一般都会被问及你的职级。比如阿里巴巴 P7/P8,腾讯 T10/T11 等公司(抱歉我不太了解这个),职级一般是和薪资福利挂钩的,也被动和开发人员的技术能力挂钩,所以升职对开发人员来说是一件大事。同样的,考核也和年终奖金/福利挂钩,所以在开发中也是件大事。获得好的考核,顺利通过升职答辩,可能是互联网工作者最开心的事了。
有些人可能认为职务级别越高,技术能力就一定越好,但事实上并非如此。
我在工作中经历过两次升职答辩,我认为自己通过的唯一原因就是运气好。“运气”怎么理解?大概意思是,答辩前碰巧拿到了一个“容易答辩”的项目,而且结果还不错。答辩的时候,评委也觉得很有价值/做得好,所以就通过了。
另外,古板的KPI项目比比皆是,很多人为了答辩故意做一些项目(把原本简单的场景搞得很复杂、用冠冕堂皇的术语包装起来等等),答辩通过之后就不管了让别人维护,继续做下一个可以用于下次答辩的项目。这样的事情在开发界每天都在发生。还有所谓的PPT项目,有些人什么成果都没做出来甚至项目都还没开始做,只拿着一份包装好的PPT去答辩就通过了。因为答辩通过没有固定的标准,评委的主观态度占了很大比重,甚至还见过专门有团队在课堂上找相关评委露面博取他们的好感,以此来提高答辩的通过率。
考核也是如此,考核往往由直接上级打分、评比,所以给上级留下好印象很重要。于是就衍生出了很多管理手段,比如炫耀自己的存在感、做事迎合上级的想法等等。经常有所谓的嫡系,我工作几年才知道这个名词。虽然我个人觉得做好自己的工作就够了,没必要为了迎合别人而做出过分的事情,但其实这样的事情每天都在我身边发生,我能做的就是管理好自己。
也有人说,无论是晋升还是考核,都是管理手段,从这个角度来说,晋升/考核不一定和技术能力有关,一个新人可以把一个功能实现得很漂亮,一个资深开发人员也有可能写出很烂的代码。
我见过很多技术水平一般但晋升/考核还不错的人,也见过很多责任心和敬畏心不够的人,但是干得不错。当然,没有对错之分,但是对于这个案例来说,职级和考核对我来说没那么重要,因为它不代表你的技术能力,也不代表你的实际能力。再者,如果你自身的价值没有被团队发掘和发现,其实这个团队可能并不适合你。
工作能力与技术能力的区别
上面说了,我个人认为,不管是考核还是职级,跟一个人的技术能力没有必然的关系,那跟什么有关系呢?我觉得是工作能力。
工作能力这个词很笼统,其实它涵盖了所有工作所需要的能力。对于开发者来说,或许技术能力是工作能力的一部分,但其实更多的时候,我们的工作还需要一定的职场能力,比如沟通能力、理解能力、评审能力(天知道我为什么称之为能力)、表达能力、情感能力(感受别人的情绪/管理自己的情绪)等等。
回到本文的主题:技术开发的门槛到底有多高?
多数情况下,团队对于技术开发的要求主要是:能够快速响应团队需求、高效优质地解决团队问题。个人认为,对于多数产品开发流程,技术能力只占一部分,要求的门槛并不是很高,尤其在一些团队快速扩张的时候,招聘门槛会降低。
作为技术开发者,我们大多数时候都是 工程师。对于新手来说,遇到奇怪的错误就会去 搜索解决方案,遇到从未听说过的就会去 搜索介绍和说明;对于有一定工作经验的开发者,往往会参考和借鉴行业解决方案,研究竞争对手的解决方案,然后根据自己的项目情况选择合适的解决方案并实施。
完成一个项目,需要项目开始时的沟通与收集信息(沟通能力与领悟能力)、项目开始前的设计和评审(技术能力与表达能力)、项目进行中的开发/协调/测试/问题修复(技术能力、沟通能力、表达能力与情感能力)、项目结束时的评审与总结(评审能力、表达能力)。这个过程除了技术能力,还涉及到多种职场能力。中间的某个短板可能成为你最大的瓶颈,甚至可能因为某一方面做的不好而得到低分。
因此,与其说大多数开发工作中对技术能力的要求不高,倒不如说对于“应该具备技术能力”的开发群体来说,更多的时候,技术以外的能力能够直接影响他们的工作绩效。
结论
很久以前,我选择做开发人员的原因之一就是我认为开发人员应该是一个比较简单的群体,而工作性质对逻辑性要求较高,所以这样的人一定是讲道理的。因为这样幼稚的想法,我在工作中遭遇了很多不愉快的经历。当然,这不是任何人的错,只要有利益冲突,就一定有人情味。
我经常想,如果我是“研发”岗位而不是“开发”岗位,是不是问题会少一些?今晚做个梦,看看吧。