编程之外的软实力

在刚毕业的时候,我也和大多数人一样,心想自己不擅长与人打交道,比较适合一心搞技术(当然也挺羡慕那时的 leader 管几个人分分任务不再需要写代码)。
最初也确实是这样子,花比较多的时间在技术上。现在看来,对于新人来说这依然是第一优先级的事情。

对于刚从学校出来的学生来说,最为推荐的书是《程序员修炼之道-从小工到专家》。不只是技术,这本书还会涉及到效率工具,保持学习,团结交流以及推动变化。因为并非每个人在刚毕业的时候都有一个靠谱的人领路,这本书可以让你少走一些弯路。

在之后工作中渐渐发现有些软实力要比技术更为重要,有时新技术的学习能给你带来的收益远不如这些能力的提升。下面只是个人想到的一些点:

效率
在你可以独立承担一个项目的时候,你会留意与其它人的差距,同样的项目交给你,你是否可以做的又快又好。这可能取决于你对工具使用的熟练程度以及是否有能力开发工具减少你的重复劳动。建议保持学习;最近才发现 ssh 到远程服务器使用 Iterm2 设置之后一个快捷键就可以开始工作了。

业务
在阿里巴巴,不是技术说的算,更多的是业务。技术也只有在创造了价值的时候才有用,不管是绩效评审还是晋升。每个人都会去思考业务中的痛点,尝试去解决这些问题。很多时候,这些痛点不是你一个人能够解决掉的,很可能涉及到各个方面。这又取决于你是否能够调动足够多资源以及推动其他人解决这个痛点。
有人说,在腾讯你能做成一件事要看你能够调动多少资源。

影响他人
现在让你说出你身边三个优秀的程序员,你会选谁?然后回想一下他们的共同点。你选他们是因为他们代码写的很溜吗?很可能不是。
勇于担当,照顾新人(乐意分享和帮助),谦逊(让你感受到被尊重)
你也想成为受欢迎的人?有本叫《How to make friends and influence people》我猜你早就读过中文版《人性的弱点》

管理
你有思考过,站在管理者的角度,他们对你的期望和你自己在做的事情是否匹配,当你有些新想法时,能否争取到他们的支持?或者站在公司角度思考,你在做的事情和公司的目标是否匹配?如果你和老大的关系很好,一切会好说,即使你不大欣赏你的管理者,保持一个定期的沟通以及定期的反馈也是必要的。我个人非常喜欢双周一次的与 Manager 的 1:1 会议。
所以,对有一定工作经验的人,我一定会推荐读几本管理类的书。比如《Make yourself indispensable》

企业文化
当你思考一家公司为什么能够成功时,你会发现可能有很多的因素,它可能在某些方面做的不是很好,但不足以致命。而公司失败一个致命的错误足矣。
公司大的时候价值观能够很好的发挥作用,比如阿里巴巴的人才观:聪明,皮实,乐观,自省。直接就筛选掉那些整日抱怨而不行动的人。
如果你发现什么做的不够好的地方,那不是正是你要努力推动的吗?

个人
你有没有发现身边一些人做了 1 可是却吹成了 10,而你做了 1 结果说成了 0.5。 在你往上走的过程中表达能力也是急需提升的,包括讲故事的能力。

之所以这么强调软实力,是因为像大多数程序员一样我在最开始对这些东西并没有给予足够的重视,而且也没有一个清晰的路径来培养这些能力。这些只是自己碎片化的吸收以及从跌打爬滚的经验中学习得到的,或许如同大多数道理一样,听起来觉得老生常谈,但只有在自己切身经历之后,才慢慢理解。

与诸君共勉!

introduce to websocket

背景

在 webSocket 出现之前,为了实现消息推送,实现方式有轮询和Comet。Comet 又分两种:长轮询和流技术。

阅读更多

前端开发畅想

整篇文章的思路是这样子的:重新思考前端开发过程,有不少让人觉得不痛快的地方。如果没有这些束缚的话,理想中的开发部署又是怎样的?理想有点远,眼下我们又能做些什么呢?

阅读更多

HMR 踩坑记

昨天遇到一个问题:使用 next/tree 时报错,即使最简单的 Demo 也会报错,而官网提供的则不会,最终问题定位到 react-hot-loader 上。我使用的是 react-hot-loader@next版本,需要在 babel 配置中引入 react-hot-loader/babel plugin。禁用这个 plugin 正常渲染,启用就报错,这个问题太诡异了,所以有必要搞清楚 HMR。

阅读更多

探秘 MobX

MobX 是最近在 React 社区比较火的状态管理工具。与 Redux 相比,Mobx 简单又神秘。不止是因为 MobX 比较火,MobX 的双向绑定与 Vue 的实现也是非常相似,十分有必要去了解一下双向绑定的实现。这篇文章通过源码解释 MobX 这些奇怪的“特性”。
就像 Redux,MobX 跟 React 也没有关系,我们从最最简单的例子开始。MobX 版本 3.1.7

阅读更多

git 合并策略 之 recursive

前几天老婆大人考察:git merge 时什么情况下进行 auto merge 以及如何 merge ? 我只能回答:如果文件同一行都有修改就会冲突,如果没有冲突就会自动 merge 。另一个问题是:如果一个文件删除了,为什么 merge 时还存在?这个应该是在另一个分支上对该文件做了修改。在阅读后面的文章之前,假定你理解 git 的分支是由 commit 串起来的一条链。如果不明白上一句话,请先补下 git 分支 知识点。

阅读更多

Promise 被玩坏了

收到产品同学反馈的一个 bug:在 iOS 上,进入首页之后很快滑动,再点击切换到第二个页面会一直处于loading状态,可以稳定复现。拿自己的手机试了几次果然可以复现。在模拟器上准备调试,打开控制台并未看到错误。于是猜想有异常没有处理,检查代码是否遗漏:

1
2
3
4
showLoading();
fetch(url).then(() => {}, () => ([])).then(() => {
hideLoading();
});
阅读更多

前端公共资源完全共享的畅想

在每个前端项目中,多多少少都会依赖一些第三方资源,比如QueryReactAngularcore-jsbabel-runtime;如果我们能够尽最大程度的复用这些资源,那么我们就能够节约很大的首次请求成本,无需绞尽脑汁即可显著提升首屏首次加载速度。另外提升 webpack 构建速度,扯这么多构建优化方案,就设置 externals 效果最显著;

阅读更多

前端框架的最佳实践(AngularJS 和 React)

对框架的使用者来说,谈一个框架的思想,其实不如谈谈它的最佳实践。就是同一个框架,不同的人实现相同的功能,代码也是千差万别。不同风格的实现自然也有高低之分,而往往这些东西还没有成文的规定,不知道坑了多少前端。这些框架还有另一个特点—–非常容易上手(入坑),从而埋下更深的祸患。这么简单!其实往往是不明所以的时候就开始挖坑了。

阅读更多

【翻译】React.js 初学者应该知道的 9 件事

原文地址:9 things every reactjs beginner should know
2016年1月份的文章,现在才翻译,又落后了半年

现在为止我使用 React.js 已经6 个月了。6 个月 放长远看一点也不长。但是,在 JavaScript 框架层出不穷的今天,6 个月可以称为老前辈了。最近指点了几个新人入门 React ,所以想总结一下写篇文章启发更多的人。下面总结的这些点,一些点是我希望在自己入门的时候就已经知道的,另外一些则是让我真正的理解 React。

阅读更多