HICSC
冬至,今年的冬天比往年更寒冷

以往只在新闻中看到的裁员,这个冬天真切的发生在自己的身边,总想说点什么,但又说不清道不明。

旁边的同事M是今年国庆来公司面试的,当时我说了不少公司好话,为的就是能让人家来我们的团队,但不过两个月,就得让人家走人,心里挺不好受的,只是在他走的那个下午,拍了拍他的肩膀,没说出一句话来,只望他未来的职业道路一帆风顺。

有时候也会在心里抱怨:我们努力为老板实现着他的梦想,一旦老板的决策失误,我们也会跟着倒霉,也不知道在他们心里是否有那么一刻会顾忌到员工的梦想而不总是自己的。

职场挺残酷的,你我作为工具,老板付钱购买我们的时间,当他负担不起或不再需要这个工具时,丢掉也无可厚非,本质上与我们不再为某些增值服务续费是一样的道理。但作为工具的我们,却终究不能只把自己当作是冰冷的工具。

已过中年,还在底层奋斗,有时候我也挺迷茫的,不知道该如何走下去。但迷茫过后,还是得鼓起勇气,坚强的走下去。面对未来,总结3点思考,献给自己,也给你。

题图

重视核心技术知识,构建知识体系

核心技术知识是我们从事这个行业所需要的特殊技能,是我们赖以生存的护城河,其重要性如何强调都不为过。很多同学对知识体系也挺苦恼的,觉得工作学习了这么多年,脑中的知识总是一团浆糊,不成体系,总是盼望着别人可以画出一条路径,自己按照这条路径升级打怪就可以成为牛人。但实际总是事与愿违,我不打算在这儿再指一条路,只是给你一个工具,让你可以构建出自己的知识体系。

我一直以来的观点是,知识不成体系的原因只能是学习的知识还不够多,这就好比只有几片树叶,肯定不能构成一棵树呀,甚至,你仅学的那么一点知识,没过多久还搞忘了,这怎么可能成体系。

因此,我的方法就是:不停的学习,且不停的记忆。你没看错,就跟你上学的时候一样,不停的学,不停的背。你可能会认为这很扯,但实际上就是这样,你曾经理解的东西,现在真的不一定能很好的说出来,用起来,那还能怎么办,只能经常复习了,只不过我们可以用更科学更高效的方法来学习并且记忆。

建议使用的工具是记忆神器Anki,将知识点做成Anki卡片,放到手机里,没事的时候刷一刷卡片即可。Anki卡片的正面是问题,背面是答案,刷卡时看到正面的问题,在脑中回想答案,看自己是否还能记起来。

关于提问和回答,每个人都有自己的方式,没有固定的格式,但最好能够满足以下条件:

如何提问?

如何写答案?

这么做主要是基于以下两点原因:

因此,看书做卡片的时候,不是简单地去摘抄书中的内容,而是需要通过自己的理解去提炼、概括知识点,理清楚这些知识点的原理以及层次,通过这样的拆分,加深自己的理解。

在做卡片时,如果发现自己并不能把知识点概括、总结成一串关键字,你就要警惕啦,这是在明确的告诉你,其实你并没有你以为的那么「懂」,请继续回去看书中的内容,甚至是去自学相关内容,来完成笔记。

如果看书多遍,还是不理解,那么就不要再盯着这一本书看了,可以看看其他资料,毕竟,每个人的知识储备不一样,非入门的书籍,不能看懂也挺正常的,但你一定要通过自己的方法来完成笔记。

说了这么多,来举个例子吧,比如下面的这些问题就不是好问题:

回答这些问题,需要长篇大论,而且也容易遗漏其中的知识点,因此需要把问题拆分:

这些问题,都是关于MySQL索引原理的,只有把大问题尽可能的拆成小问题,你才能很好的理解并记忆它。

还有一个建议就是,不要人为地把这些笔记分类,比如数据库归一类、编程语言归一类、架构归一类,非常没有必要,一定要所有的卡片都放到一起复习,也许某个时刻,你就会发现,不同类别的知识点之间其实是有联系的,这个联系,也许就是我们所说的知识体系。

最后,看书可以做卡片,看面试题可以做卡片,背单词可以做卡片,甚至刷LeetCode都可以做卡片,以一个我做的LeetCode卡片作为这个小节的结尾。

img

业务能力,也是核心竞争力

很多同学对待业务的态度真的是一言难尽,而对基础技术却有着莫名的崇拜。基础技术的门槛相对来说高一点,但高门槛并不代表技术含量高,而业务也并不意味着低技术含量,我看到过太多的人嘴里吼着各种高并发方案,但基本的单机多线程代码都写得有问题;讲起设计模式滔滔不绝,但连最基本的DRY(Don’t Repeat Yourself)原则都做不到。

如果你真的能写好业务代码,那么写一些组件的基础代码也没什么太大的问题,毕竟它们的底层原理是相通的,看影响面,基础组件要解决高并发、高可用问题,业务代码也一样要解决呀;看复杂性,业务的复杂性真的不输基础组件。

说这么多,无非是希望大家不要轻视业务,分析和解决业务问题的能力也是一项核心竞争力,这里面至少包含:

我以自己的工作经历,提取两个比较特殊的场景,来说说我的理解。

场景一:2B的产品,其专业化程度较高,产品的使用也有一定的门槛,但我们的客户的素质却参差不齐,有可能他们自己都没有了解清楚自己的业务,因而会在产品使用过程中出现各种问题,如何与这样的用户沟通,并从中发现问题?我的方法是:保持耐心,站在用户的角度,了解他们真实的工作方式,以此来改进自己的产品

其实很多时候,我们认为用户会这样使用这个功能,但实际却不是,心里痛骂一句傻逼,抱怨是用户自己不会用,然后就想着去改变用户的使用习惯,最终的结果就是用户怎么用怎么不爽,客户支持团队整天受气,搞得大家戾气都很重。当客户服务团队经常抱怨或者甩锅开发团队,甚至是大家协作沟通态度不是很好的时候,就需要注意有没有这方面的问题了。

场景二:我们系统中有一个交易历史报表导出的功能,有些客户的交易历史按月统计的数据量是百万到千万级别,按季度数据量就更大了。单从技术的角度来看,需求还是挺有挑战:如果在大数据量下查询统计而不拖慢数据库?如何使用极低的内存占用导出这么多数据?如何加速下载这么大的数据文件?

如果我们换个角度看这个需求,客户拿这么多原始的数据干什么?如果只是为了备份,其实有更好的实现方式;如果是为了统计某些指标,那是否可以由系统来处理?当这样深挖用户的需求后,也许原来的需求就不存在了。

因此,通过需求看到其对客户的价值,并提出建设性的意见,也是业务能力中重要的一环。

除此之外,业务能力还包括写代码的能力。当需求不断迭代,代码还能保持很好的可读与可维护性,这需要对需求有深刻的理解,并对需求进行合理的抽象,并配合使用各种设计模式。

总之,成为一名业务专家,绝没有那么简单。一直在做业务的同学,也应当好好的思考:当前所做的系统在哪些方面给客户创造了哪些价值?

拓展知识边界,发现更多可能

除了工作所需技能外,我们可以积极拓展我们的知识边界,努力学习和锻炼更多的技能,比如英语、比如写作、比如摄影、比如音乐,这些都可以成为你的副业,为你提供额外的收入。

我也在积极尝试,比如,开这个公众号,就是为了锻炼自己的写作能力,我要求自己每周至少写一篇2000字以上的原创,目前不限主题,也许半年以后我就会尝试主题写作,到时候就能输出更多有价值的内容。

除此之外,我还在努力学习英语,也没什么好的学习方法,就是一直在英语流利说上面打卡,几个月以来,自己的听力和口语都进步不少,也许自己还是不能流利地用英语对话,So what?学到Level8再说。

我能给的建议就是克制,不要学习太多,每年,定一两个目标,努力完成即可。学习阶段,也不要太功利,比如很多人写公众号,不好好生产内容,而是整天去学习怎么推广和运营,不是说这些不重要,而是等到你真的可以持续输出有价值的内容时,再去做这些也不迟。

至于我为什么要学英语,我想的也挺简单的,等哪天真的做不了程序员,我也许可以去二级城市跑跑外贸,或者去旅行团当当导游,甚至为广大的中国程序员们翻译翻译文档也行啊,说不定哪天我就真干了这个呢?

最后,谢谢你看我唠叨了这么多,愿你我都有勇气面对未来!

封面图: Wolfgang Hasselmann on Unsplash

Comments

Post a Message

人生在世,错别字在所难免,无需纠正。

提交评论