Ali a year and talk about what I grew up

2018.5.31 ~ 2019.5.31, a wonderful journey, spent a year in Ali's time, this time there is joy, there is anxiety, there is confusion, more thinking, thinking that his past shortcomings, thinking Some now appears before the wrong idea, think about is how to become a better technical people, these share some thoughts for everyone to see these words, encourage each other.

 

How should face abnormal / fault line

It looks like a meaningless question, abnormal encounter online / how to deal with failure, not enough to solve the investigation, but this is really just the first layer.

Recently want to "fire" the word is very interesting, it is actually two meanings:

  • "Consumer" is to eliminate the problem
  • "Defense" is to prevent problems

That is the meaning of the expression "fire" the word should be the first to eliminate the problem and then to prevent the same problem from happening again. In fact, abnormal / fault line is the same reason, we should first stop the bleeding, the problem disposed of, and then root out the problem, to explore the root causes, a few examples:

  • Assumption is that a null pointer exception caused by a piece of code, does it consider strengthening the Code Review, or plug-ins to use findbugs automatically scan the code possible anomalies?
  • An assumption is online configuration changes caused, so if in the future someone changes the modifications must double-check again before they can modify?
  • Assumption is that certain values ​​because local memory loss due to a system reboot, then whether the introduction of regular tasks, the timing of the value written to the local memory?
  • Assumption is certain to lead to code logic did not test, then reflect on whether you can summarize why this logic is not to test the next test should be how to improve?

Based on my experience in the past, the problem of too many companies, too many teams meet in the processing line is only processed the problem to get away, ignoring the re-set of the problem, which the team / company's development are unfavorable.

 

What is the real technical capacity

Prior to the addition of several micro-channel technology group, we saw a lot of friends in the technology raved about a variety of sources, spring source line and I thoroughly again, recent in-depth study of dubbo underlying implementation, of course, once I also like this, volatile remember learning the time has dug volatile implementation in the hardware level, but it's really explain technical ability it? Reflections from today to look at this issue, I think this is more a reaction to a person's ability to learn, study skills, and enthusiasm for technology, in addition to another does not embody so many other things.

This topic may be a maximum of one point this year, thinking, studying is a good thing, but in fact most of the time in-depth study is not useful for practical work and research deeper, faster forget, because the more research deep, so the more technical points associated with this technical point, the corners of the forgotten, the core of things is not easy to string together. So what is the real technical ability, I draw a picture recap:

In short, the technical capacity = problem-solving skills, then the same problems are solved, the technical level between what we different? I think there are several levels:

  • The first level, to solve the immediate problem
  • The second level, an elegant and reusable way to solve the current problem
  • The third level, to solve the problem than meets the present, but also to meet for some time

In fact, from this point of view, different technical capabilities in the course of their work discrimination is obvious:

  • Write code if there is an abnormal risk, if there is a thread-safe multithreaded run, if a piece of code can cause memory leaks
  • Write elegant code is reusable, whether the design of adequate framework in line with the principle of opening and closing, the structure of the code-level clear whether
  • For a particular scene, technology selection, database table structure design is reasonable enough, today you frame design is only one year, or the next three to five years can continue to use
  • To a large demand on system functions such as making a member of App Well, if you can, after full analysis of demand, demand will be divided precisely into several specific sub-modules and sort out the relationship between the clear module

The more powerful people, in code design and development process, the more it can think of some other people look at the issue to see not unexpected, this is called a strategic height; when the code is running problems, it was one hour to troubleshoot the problem, it was found that 1 minute question, this is called ease.

So I think it really reflects the ability to solve problems is the technical capabilities of this year to explore the technology from the research I did change the source code to learn more design patterns to learn the selection of comparison distributed environment of various NoSql, to learn to use Lambda make the code more concise, to really solve the problem of direction in practical work to work on.

In addition, this point aside, I think these two days, there is a point reflect technological capabilities, is learning ability . The reality of the whole stack is very small, the direction of the Internet industry programmers usually have several categories:

  • Server
  • front end
  • Mobile end
  • AI
  • Embedded
  • Big Data

在同一类中,基础知识、基本概念、思维方向是一致的,更多可能差异在开发工具、语言上,我精通Java,但是如果明天有一个需求,使用nodejs、scala、go更好,那么是否可以快速学习、快速上手?甚至明天有一个需求需要写前端代码,是否可以快速开发、无bug上线?

所以,解决问题的能力 + 学习能力,是我认为真正的技术能力,不过说到底,学习能力某种程度上也只是为了解决问题而已。

 

不要造轮子

曾几何时,当我们看着github上这么多优秀的源代码的时候,默默立誓,这辈子我一定要写出一个牛逼的框架,开源在网上。

曾几何时,公司招聘的时候,技术负责人激情满满地介绍着公司内部自研了多少系统并在线上投入使用。

很多对技术有追求的朋友,进入一家公司可能时时刻刻在寻找机会去做一些自己造轮子的事情,但是就如同前面所说的,衡量真正好技术的标准就是能否实实在在地解决问题,自己造轮子风险高、周期长,且需要长时间的验证、排坑才能达到比较好的效果。

随便举几个例子,在互联网发展的今天:

  • 数据库连接池有dbcp、c3p0、druid
  • 本地缓存有ehcache、要用中心缓存有redis、tail
  • 服务化有dubbo、跨语言可以用thrift
  • 分布式任务调度可以考虑schedulex
  • 搜索可以选es、solr
  • 更高级一点图片存储可以用七牛、im可以用融云/环信、音视频这块声网做得比较成熟,所有这些都提供了各个开发版本的sdk,接入简单

只要你有的技术方面的需求,绝大多数业界已经有了成熟的解决方案了,根本不需要去专门自己搞一套。因此我认为轻易一定不要造轮子,如果一定要造轮子,那么请想清楚下面几个问题:

  • 你要做的事情是否当前已经有了类似解决方案?
  • 如果有,那么你自己做的这一套东西和类似解决方案的差异点在哪里?假设不用你这套,基于已有的解决方案稍加改造是否就能达到目的?
  • 如果没有,那么为什么之前没有?是你们公司这种场景是独一无二的?还是这种场景对应的解决方案根本就是不可行的所以之前没人去搞?

如果想清楚了这些问题,那么就去干吧。

 

去提升看问题的高度

过去有太多人在我的公众号或者博客下反馈了一个问题:在这个公司,整天做着增删改查的工作,对自己一点都没有提高。

对于这种看法,说难听点就是四个字----目光短浅。我们看:

如果以普通的视角去看,那么一颗树那也就只是一棵树而已,但是如果跳脱出目前的视角,站在更高的角度去看,它其实是森林的一部分。你的主管并不是因为他是你的主管所以他就应该你比更高瞻远瞩,而是因为他看问题的高度比你更高、想得更远、做得更深,所以才成为了你的主管。

把这个问题说得实际点:

  • 假设今天你负责的是一个系统,那么你仅仅是把这个系统的基本原理搞懂了?还是可以把上下游有几个系统、每个系统之间如何调用、依赖方式都理顺?
  • 假设今天你负责的是一块业务,那么你仅仅把自己负责的功能点弄清楚了?还是你可以从最上游开始,到你负责的系统,再到最下游,都思考得非常透彻?

今天与其在抱怨没有机会、抱怨公司对自己能力没有提升,为什么不去思考机会为什么降临在别人头上不降临在你头上?为什么别人可以从小公司写着一样的增删改查走向BAT而你年复一年还在小公司写着增删改查?当你真正能转变自己的思维模式,跳脱出现在的圈子往更高一个层次去看问题、去提升自己,我相信总会有发光发热的一天的。

同样在阿里巴巴,马老师思考自然、思考环保、思考人类的发展,你的主管思考团队未来的方向和打法,我们在思考如何把某个客户需求完整落地,这就是高度,你未必能想到马老师想的,但是你对标层级高一点的人,一步一步尝试往他们的高度去靠。

总而言之:眼界决定高度,多看、多想、多保持好奇心、多问几个为什么,久而久之自然就迈上了一个新的台阶。

 

学会总结

需求、项目的复盘是非常重要的一部分内容,然而我之前见过的太多团队、太多Leader,只顾着一个迭代接着一个迭代,一个版本接着一个版本,只满足于把需求做好,而忽略了总结的重要性。

我认为大到项目、小到需求,如果在完成之后缺乏总结那么某种程度上来说是失败的,可以总结的点非常多:

  • 通过这个项目/需求,是否吃透了某一块业务,搞懂了来龙去脉
  • 通过这个项目/需求,是否充分理解了公司某个技术框架/基础组件的用法
  • 在整个项目的设计上,有哪些做的不好的地方
  • 在整个项目的开发(针对程序员而言),是否踩了坑,犯了低级的错误
  • 在整个项目的进度把控上、人员安排上、上下游协调上,是否存在不足之处
  • 经历了某次大促的值班,是否对可以熟练使用公司的监控工具,遇到突发事件,是否快速有效地进行了解决

任何工作一定对个人都是有提升的,但是不会总结的人,在每个项目/需求中成长的东西都是散的,久而久之就忘了。通过充分的总结之后,犯过的错误我们不会二次再犯,理清楚的业务的来龙去脉铭记在心,对自己是一种提升,分享给别人对别人也是很大的帮助。

失败者失败的原因各有不同,成功者的做事方式总是相似的,从宏观角度去看,我认为总结就是成功者之所以能成功,很重要一个原因。

 

选择大于努力

好吧,我承认调皮了,但是这一段我也是很真诚的!

人,努力是最重要的,但是选择也非常重要。有能力是非常好的,有能力的同时,一个好的Leader、一个好的团队将会让你在平时工作中感到无比舒心,将会让你有家一般的温暖,更能将你的能力最大化!

菜鸟国际物流技术团队就是这么一个团队!

再次打下广告,如果你有三年或者三年以上工作经验,对自己的技术有一定信心那么欢迎用以下三种方式跟我进行联系:

  • 加我个人微信LBJ_Mayday进行咨询
  • 发送简历到我的个人邮箱[email protected]
  • 在我的博客文章(百度搜索五月的仓颉即可)下进行留言

通过我内推进行面试的,可以极大提升面试效率及第一时间得知面试结果。在我的部门中,你将会看到:

  • 处于一家极具发展前景的公司中,中国互联网前10年看电商、后10年看物流,蚂蚁已经融资140亿美元了,菜鸟还会远吗
  • 重要的事情说三遍,【技术牛逼、带领团队经验及实战经验丰富的主管】,【技术牛逼、带领团队经验及实战经验丰富的主管】,【技术牛逼、带领团队经验及实战经验丰富的主管】,为你的成长指引光明的道路
  • 轻松、热情的团队氛围,每月至少一次的团队活动,工作生活两不误
  • 丰厚的福利待遇,目前通过社招进入的还可以享受到股权激励

最后,非常重要的一点:不要害怕面试。通过面试才能发现不足,才能知道未来在技术道路上还需要在哪些方面进行提高,在面试的结尾,你也可以询问面试官自己有什么不足,面试官一定会给到你最诚恳的建议!

期待和每一个优秀的你一起共事。

Guess you like

Origin www.cnblogs.com/xrq730/p/10933362.html