四年努力,梦归阿里,和大家聊聊成长感悟

创业故事 阅读(1455)
bbin波音对接平台

原始地址https://www.cnblogs.com/xrq730/p/9159586.html

原作者博客园 - 五月苍苍

3aea8f0480924ed8b8a43a8e43b737de

自阿里的采访成功以来已经过去了一个月。我加入公司已经十多天了。我将在周末写一些东西并与大家分享。本文将撰写以下内容:

一路上的个人经历。关于未来的一些想法。我理解一个优秀的程序员的技术质量,他在五年内有很好的广告时间。

这次加入的BU是一个新秀,一个非常有前途的公司。

经过五年的工作,标题是“四年努力”。事实上,情况确实如此。 2013年从我的母校杭州师范大学毕业后,和许多刚毕业的学生一样,我没有目标,没有方向,没有前途。到底要做什么,所以大约一年很困惑,工作就是这样。

大约一年后,它已经14岁了。那时,公司还在西湖科技园区。也许这是他自己的自我激励,也许是母校马云的感受。有一段时间,他每天都在石乡路回家。在这一生中,我必须自己努力进入阿里,这个想法每天都在变强。

正如我4年前在公共账户中所写的那样,没有那么多的采访或程序员。虽然我有心,但我不知道哪个方向努力工作。所以我想到了一个方法:我花了一个星期,我读了51job,当时在更着名的招聘网站上雇佣了Java工作,写下了每篇文章的描述,并对它们进行了分类和总结。一个相对较大的轮廓作为学习目标。

在那之后,它开始于2015年,这非常疯狂。全年只有一个关键词 - 学习。除了一些非常重要的人,我几乎从未出去与同事和朋友一起玩。在8:9回到工作岗位后,我开始学习11点或2点,我花了更多时间在工作中学习,在周末学习,以及各种长假学习,无论如何,时间可以是习惯用来学习,各种JDK源代码,多线程,Java虚拟机都已经全部读过,读书前后不下10本,就像虚拟机我似乎已经说过这本书了几本时代,PDF +实体书未被阅读五次。这个博客也写了15年。

学习是孤独和无聊的。事实上,在这段时间里有太多次放弃,但每次我过来,我都可以与你分享一种感觉:花一年时间强迫自己使所有优秀的品质成为你的习惯。就像我现在一样,我觉得努力工作,进步,研究,好奇心已经成为我骨子里的事情。当我研究技术观点并且没有将它组织成博客文章时,我认为我没有掌握这个技术点。

至于工作,经过15年的学习,由于个人成长,从16年到18年,领导愿意给我机会写一些低级的东西,做一些系统的设计,也有机会带来一个由几个人组成的小团队。在这个过程中,慢慢发现基本技能并不能解释所有问题,因为它不可避免地会遇到没有遇到的事情,会遇到一些比较复杂的问题,然后通过调查信息,研究,找到解决方案,解决问题并进一步提高你的能力。

个人技术的成长,工作的增长(实际的解决问题的能力)必不可少,就像几天前,我们的大部门老板分享:什么是好技术,能解决实际问题的技术是好技术。

在18年的中间,正确的时间遇到了一对部门,正确的领导者,正确的团队和梦想成为现实。

我希望我的个人成长经历对我见过的人有一些鼓励和感受。如果你让我总结一下,那么我希望告诉你两件事:

相信自己,像我这样一般在学校都不聪明的人今天可以走到这一步,所以大多数人都能走到我身边,可以走得更远,比我更远,世界上更好,没有什么就是你可以'如果你有,那就去做吧。

在之前撰写的文章《面试感悟----一名3年工作经验的程序员应该具备的技能》中,有一节致力于理解程序员的几个阶段。它写了三年的工作。经过两年的过去,我自己工作了近五年。多年来,在这个节点上,结合自己的理解,谈谈程序员应该在第五年工作的方向。

首先,在前五年,如果程序员可以粗略地执行以下操作(稍后会详细介绍):

拥有扎实的基本功能,并快速完成领导者交给您的代码开发任务。如果您遇到问题,可以为公司的新员工提供正确的解决方案,包括但不限于技术点共享,代码审查,需求分析,表格结构设计等。

那么,从第五年起,我认为我们可以而且应该走向更高的水平。如果前一个级别更侧重于个人,那么我认为这个级别应该更专注于团队。只需列出以下内容。

系统设计能力,也许在提供功能之前,可以设计从DB - >服务器开发 - >前端开发栈做好事情,然后,领导后给出一个特定的大企业,比如成为会员模块淘宝商城,可以全面分析整个功能,将功能分解为一个点,绘制每个点之间交互的交互图,可以对数据库的ER图进行梳理,并且可以合理地分配给同事开发工作并领导团队的能力。它大致是为了控制整体发展节奏,确保在约定的时间之前交付,没有延迟,但不是小而美,将是10项技术,每项技术掌握到6分,最好有5项技术和2项技术获得8分。我觉得整个行业中有更多人,对一项技术的研究较少。毕竟,掌握可能只需要一周时间。可能需要一个月或更长时间。在这个为期五年的节点中,我认为选择一个或两个您感兴趣的深入研究方向是个好主意。

这是我自己的想法,我开始在第五年问自己。我希望其中一些想法也会带给你一些灵感。

互联网上有很多所谓的Java程序员访谈。事实上,看待它的感觉是它不是很有用。面试没有常规。每个面试官都要求不同的东西。如果你根据那些面试问题学习和准备,那么只有树木看不到森林,个人推广没有太大的改善。

那么,在这五年的这个阶段,一个优秀的程序员应该具备什么样的技术素质?根据我个人的理解,它主要是基础工作+项目。

为什么它说研究和准备面试问题并不是很有用,因为我认为我们不应该关注这个问题,而应关注问题背后的方向,这就是我认为的基本技能。从基本技能的角度,列出我能想到的内容,包括但不限于以下内容:

与作业相关的JDK类及其相关的源代码,机制设计模式,工作中使用的设计模式,场景相关知识的具体使用,线程安全,锁机制,信号量,锁,围栏,线程池等。框架相关,Spring相关机制,Spring MVC相关机制,MyBatis相关机制,使用细节,框架实现原理等.JVM,内存布局,垃圾识别算法,垃圾收集算法,垃圾收集器,类加载机制,内存模型,外观内存问题是定位问题的方法,如数据库的基本数据类型,索引机制,每个引擎的差异,锁定机制,慢速SQL定位和优化等。这里的机制是指缓存加载的机制,缓存崩溃,缓存雪崩。和相关的解决方案一样,已经使用Redis,MemCache来了解它们的原理或者缓存提供的一些高级功能,如何实现集群的分布式知识,如CAP理论,数据一致性的几种解决方案,分配如何处理事务,如何做分表,现有关于NIO的作用如解决方案,epoll模型是否知道一些,Netty相关机制,Netty相比本机NIO的优势,半封装拆包,断开重连解决方案等。 Web相关,Get和Post差异,转发和重定向差异,如何解决跨域问题,如何确保网络层关联,如幂等性,三次握手和四次握手,全连接队列和半连接队列,负载均衡算法和其他中间件,MQ角色和使用场景服务治理框架和使用场景的作用,配置中心的角色和使用数据结构,数组,链表,堆栈,队列,树和其他优点和缺点,在什么情况下使用什么数据结构Linux相关知识,基本命令使用,故障排除日志,定位问题,项目的基本操作或第三方组件等

坦率地说,掌握所有这些东西是不可能的。即使面试官肯定有很多东西,这也是基本技能。您可以掌握更多,掌握更多技能,以及其他人如何评估您。给别人一个评价,做你能做的好事。在我之前写的文章中,我反复强调深度+广度,深度优先,广度秒,深度+广度,我们可以在开发过程中尽快完成需求,我们可以在遇到问题时第一时间找到。程序。

在三年的时间里,我可以掌握上述知识点。我认为这非常非常好。但是这两年的经历让我意识到,在五年的时间里,如果我只有这些硬技能,那还是不够的。在过去两年中,应该在项目上积累更多,即上面提到的项目,大致应该有:

独立完成复杂业务或完成现有项目中的大功能点,有必要根据业务分解和分析功能的能力独立调查复杂问题。在项目运作期间,不可能是安全的。业务问题,CPU 100%是否可以独立检查是否可以独立检查内存溢出,是否可以独立检查应用程序死锁或DB死锁,是否可以独立检查API调用时间,是否可以解决上述问题时间团队的能力可能会导致一个1到2人的小团队。即使是一个小团队也可以测试为合作任务带来团队和任务的能力

也许上述要求有点高。工作中可能没有这样的机会,但不要抱怨。机会总是留给那些有能力和准备的人。我们应该想到的第一件事就是不要等待有人向你提出具有挑战性的问题。事情,你会在这样做的过程中提高自己,但你应该首先提高自己的质量,然后让其他人放心,将具有挑战性的事情交给你。

回到我之前写的,为什么领导者愿意给我机会在16到18年之间尝试,首先是因为个人水平的提高。