程序员,六年,四段工作经历,这也许是一份会被很多 HR 刷掉的简历。
从学生时代至今,我经历了两次大的方向转型和一次大的技术转型:
从偏理论推导的数学科学到重工程实践的计算机学科,从「安稳固化」的国企到「活跃求变」的互联网;从「人人为我」的客户端到「我为人人」的服务端技术转型。
回看自己的经历,在方向选择上,我是后知后觉的。在 PC 时代即将谢幕时入场,完美地错过移动互联网时代的红利期/窗口期;技术选型上,我是「愚钝」的。一头扎进学习曲线最为漫长的 C++,又投入 Windows 封闭生态环境的怀抱,转型服务端之初「逆趋势」地被选择了「世界上最好的语言」(PHP)。
然而从硬币的另一面来说,我是幸运的。丰富的经历自不必多说,在这个过程中,我也初步丰富和完善了知识结构。虽不健壮,却也雁过留痕。
年岁渐长,我愈发感受到总结的必要性和重要性。这篇文章远谈不上什么感悟或是经验分享,只是想把曾经那些曾令我兴奋的、失落的、沮丧的故事说一说,也算是回看自己略显「折腾」的几年中那些「得」与「失」。
瞒着父母,我从国企辞职
作为一个从农村走出来的孩子,211 院校硕士毕业,在国企实习后顺利转正,是一件让我父母脸上颇为有光的事情。但是只不到两年,我在没告诉他们的情况下选择了离开。
我第一次经历了系统且完整的软件开发全过程,使用被时间证明足够稳定(过时)的 MFC 技术,开发和维护 OP 工具软件,实现私有的应用层通信协议。
工作之外,我享有充足的时间读书学习。技术类书籍当然看得最多,历史、社会和文学也都没落下,以至于让我一直有种未曾离校的错觉。
即便如此,我却并不感觉自由。正值国企改革,组织要逐步减少对母体的依赖,形成并完善自身的造血能力,但在彼时相对封闭的环境、较为传统的管理方式和复杂的内部流程下,即便是我也能感受到领导在推动新技术变革时的束缚和阻碍。
年轻的我还是希望能快速在技术成长上有所突破,接受更多挑战,于是告别了温馨的团队和相处融洽的同事。
初入互联网,我的热情有了安放之处
重新找工作的过程并不像第一次那么顺利。虽然也有「大厂」向我招手,但可能是上一段工作的缘故,让我格外向往更有活力、有朝气、有更多机会和挑战的工作环境。最终,我选择了一家正在快速发展的互联网创业公司。
收到 Offer 的兴奋感只持续不到一天的时间,巨大的危机意识便开始滋生。虽然我还是机缘巧合地成了公司很长一段时间内的唯一的 Windows 开发者,但对比我上一份工作输出的原始且粗糙的单文档/多文档应用,这款 ToC 产品面向的女性用户群体、舒服的粉红色主题,以及素级挑剔的 Boss,都是我之前没经历过的。
入职后我就接到了新产品的开发任务。一个月内,我每天的工作时间几乎是之前的两倍,甚至周末都来不及喘息,逐个击破 IM、DirectUI、WebUI、WebSocket、Http、Wke、libCef 等这些之前从未接触过技术,和团队的十几位伙伴如期推出第一个内测版本,然后持续优化和改进…
这是技术长进最快的时光,我不知疲惫地持续探索、反复试错。但是后来的种种因素没能让它继续成长壮大,也许是资本,也许是机遇。虽然很惋惜,但至少让我感到充实。
这一次,也点燃了我的热情,让我看到了自己创业的可能性。于是毅然切换赛道,开始一段新的未知旅程。
创过业才知道,原来这么难
受万众创新,大众创业的鼓舞,在某个机遇下,我受邀加入一个背景出色的初创团队,开始一段热血征程。
对比成熟型创业公司,我们面临着机遇、团队和资源的所有匮乏,我个人也接受着身兼产品、技术、运维、市场等数职的挑战。
在创业初期,我们学习并践行**「先僵化,后优化,再固化」**的企业管理三步曲,虚心学习国外同类优秀产品,诚心向成功的前辈取经探讨,细心地打磨产品每个细节,用心地解答种子用户提出的或需求或产品本身的各类问题,也会为每个肯定或进步而欢欣鼓舞,会为每次质疑或否定而知耻后勇。
但屡次在小作坊式持续迭代与集团式快速布局的「无谓抗争」中妥协,也认清了自身无论心智、思维还是能力都与合格创业者的标准相距甚远的现实,且内心对技术变现的「执念」…
最终,我还是决定带着祝愿和遗憾离场。
回归初心 —— 精进技术
这次出发,**我的目标更加清晰,希望加入到一个技术导向型并且具有一定规模的团队。**我清空之前所有的优越感和不良习性,以空杯心态去接受一个未知但精彩的新领域,重新激活了对四周任何事物充满无限好奇与试探的欲望,虽有涟漪,却也静好。
在快速发展的过程中,组织架构和业务调整在所难免,**我又面临着是坚持 PHP 还是拥抱 JAVA 的选择问题。**不得不说,难免沮丧,但也有过顿悟。直到新的业务和交易系统迁移接近尾声,与领导的一次长时间谈话及往后的深思,我决定再次拥抱变化,以一种无知无畏的姿态面对挑战。
我投入到 JAVA 技术栈的学习,渗透服务化改造的思想,训练工程化和系统化思维,迷失渐少,多有裨益,更有勇气和信心地直面挑战。
有很多人问我:“你是怎么投入到java技术学习的?,如何快速学习?”
向大家简单的展示一下我的系统化思维学习清单【接受批评,最好是表扬!】
如果有想要月亮系统思维图的,点这里就可以领取啦
1. B2C商城项目实战
- 系统设计
- 用户管理子系统
- 商品管理子系统
- 搜索子系统
- 订单子系统
- 支付系统
- 分布式调度系统
- 后台系统
清晰图片点这里
1. 微服务架构专题
- 服务的前世今生
- 基于分布式思想下的RPC解决方案
- Dubbo应用及源码解读
- SpringBoot
- SpringCloud应用及源码解读
- Docker虚拟化技术
清晰图片点这里
1. 高性能架构专题
- 分布式架构思维
- Zookeeper分布式环境指挥官
- Zookeeper分布式环境指挥官
- ActiveMq消息中间件
- RabbitMq消息中间件
- Kafka百万级吞实战
- Memcached进阶实战
- Redis高性能缓存数据库
- MongoDB进阶实战
- 高性能缓存开发实战
- Mysql高性能存储实战
- FastDFS分布式文件存储实战
- 高并发场景分布式解决方案实战
清晰图片点这里
1. 开源框架解析专题
- spring5概述
- Spring5 Framework体系结构
- Spring5环境搭建
- IOC源码解析
- AOP源码解析
- Spring MVC
- Mybatis
清晰图片点这里
1. 架构师筑基专题
- JVM性能调优
- Java程序性能优化
- Tomcat
- 并发编程进阶
- Mysql
- 高性能Netty框架
- Linux基础与进阶
清晰图片点这里
团队协作开发
- Git
- Maven
- Jenkins
- Sonar
清晰图片点这里
一个女程序员的碎碎念
在每一次转型过程中,也会有一种清零不被认可的情绪让我挫败。或许是跨度太大造成匹配度不高的错觉,但更多的原因应归咎于自身的内功不足。时至今日,一路磕磕绊绊地走来,经历资本的疯狂与寒冬,经历心智的稚嫩与初步成熟,经历从零到一的兴奋与从一到百的困惑,也分享几点感悟:
第一份要工作慎重选择,它会直接或间接地影响后续的职业发展;
危机可以拆分为危险和机遇,抓住机遇并化解危险方能成长;
技术人同样需要培养成本意识、风险管控和团队管理能力;
唯有变化是唯一确定的变量,保持开放的心态,积极拥抱变化,加强学习和强化自身,才有机会在持续的变化中立于不败之地。
1. 扎实的基本功非常重要
很多面临职业转型期的技术人,都会纠结于是要先加强技术的深度还是广度。在我看来,程序员想要有好的发展,操作系统、网络协议、编程语言、算法等都非常重要。工程化思维通过项目实践来积累,新技术虽然层出不穷,但万变不离其宗。比如掌握了 C++这种学习路线陡峭的语言,在面对新语言时你会很快上手。
2. 提前规划,重视积累和沉淀
回头来看,我不后悔做出的每个选择。但如果重来一次,我一定会重视对职业路径的规划,让自己有更多积淀。以后该如何发展?继续精进技术?转型产品经理?还是技术负责人?提前规划,少走弯路,并且利用好你的技术优势,形成思维方法和知识体系。
3. 不要只关注代码,也要经营身边的人
关注你的家人、朋友、同事,学习经营每一份关系,因为只有稳定的家庭和更多的朋友,你才会踏实地在技术这条路上探索,并且得到更多的资源。而不是像我,在离开多年后,才知道原来身边的人有如此实力。
4. 努力活成一个有趣的自己
关于程序员的标签,我们都有所耳闻。其实技术只是手段或工具,比技术更重要、更有价值的东西比比皆是,比如独立之人格、自由之思想,健康之体魄等。建议大家可以多读书、多旅游,也许在某个不经意间,你会惊喜于发现自己刷新了世界观。
以上这些也许并不足以为各位提供实质的指导,但感谢你的阅读。