我的技术人生——三年开发的总结与思考

想写这篇文章已经很久了,本来计划在7月份,也就是刚好满3年的时候写的,但是因为各种各样的原因推到了现在才开始码字。

小感慨

三年是一段很长的时间,它足够让你从高中毕业进入大学,也能让你从一个开发新人到一个成熟的开发人员。但是总感觉高中三年和开发三年的时间不是等长的,高中三年里时间过得很慢,每天需要学的东西不多,但能在考试中看到自己的成长;开发三年里时间过得很快,每天需要学习的东西非常多,但却很难看到自己的提升和变化。

大公司和小公司

在自己开发的前两年多都在一个初创公司里,干过android、ios、php、前端,研究过人工智能,甚至做了2个月的产品运营,一个伪全栈工程师就是这么练成了,什么都会一点,但是都不深入。初创公司基本是没有机会让你去深入研究某项技术的,需要的是产品快速迭代更新,听到的最多的一个词就是“能用就行,下次在优化”,然后就没有然后了。在这个公司里也有一个大家认为是大牛的同事,android、ios、java、php、python、前端、大数据、人工智能都参与过,也做出了一些成绩,最近他要离职了,我和他聊了聊天,其实他自己是很迷茫接下来要做什么。
创业公司和大公司的选择在知乎上也有很多人在讨论,大部分人的观点是毕业能去大公司就去大公司,大公司能提供完善的制度,有很多优秀的同行在你身边,能给你深入研究的的机会等等。说的基本没问题,但是目前很多大公司校招的人没有那么多了,通过大公司的面试也没有那么容易,大部分人第一份工作也是初创公司或者创业公司。当然创业公司并不是一无是处,虽然技术深度没有大公司的同学那么深,但是技术广度一般会强一些,这对之后去大公司跨团队沟通和交流还是有一定帮助的。在创业公司需要有自己对未来的一些想法和规划,也需要在某一个方面有深入的了解和学习,时刻保持危机感和饥饿感,这样才能有更好的成长。

最近的工作

最近几个月负责组织开发了一个vue的组件库,参与了vue-srr的同构,也做了一些webpack的优化。vue的组件库其实已经有很多了,不过不是很符合公司自身的业务场景,所以选择自己写一个组件库。这个组件自己参与的组件不是很多,但是因为这个组件库了解到在团队内推进一个项目不是想象中那么容易,特别是一个多人参与的项目,早期虽然大家报名认领了任务,但是因为业务繁忙等等原因,这个组件库基本没有进展。后面自己开始主动开始推进这个项目,制定开发计划,跟踪各位同学开发进度,这样才让项目一步步走上正轨,也很感谢各位参与同学的支持。
vue-ssr同构是团队内部很重要的一个调整,同构有各种各样优势,比如支持seo,首屏速度,开发体验提升等等。也许是因为自己node相关技术积累不多,只参与了一小部分的项目架构,很多服务端相关的架构设计也是另外的同事去完成的,其实自己也有点遗憾没能更多的参与到其中去,最近也计划用官方的demo在自己捣鼓捣鼓,更熟悉其中的一些架构设计。
webpack的优化也是因为做同构项目时遇到了一些问题,比如说用dll提升打包速度,优化热更新速度等等。自己对webpack的了解还是停留在了使用的阶段,源码和内部机制还没有进行很深入的学习,这也算是近期的学习计划吧。

最近看的书

最近在看《webkit技术内幕》、《计算机网络》、《精通正则表达式》。webkit技术内幕快看完了,了解了webkit的一些设计思想和架构,更深入的理解浏览器的运行过程。计算机网络看到了网络层的部分,自己对http、tcp/ip等等有了更深入的了解,对互联网的运行也更加的清晰一些。其实自己之前几乎没怎么用过正则表达式,所以希望弥补一下自己这方面的不足,精通正则表达式目前页只看了一部分,能保证日常的使用,距离精通还差的老远。个人觉得看书是提升技术深度很好的方法,能够接触到一些平时很难接触的东西,目前需要解决的问题是如何能将书上学习的东西应用到日常工作中,这一点其实没有做好。

业务与架构

写业务烦吗?
烦,老是进行重复的coding,提升和进步缓慢。
做架构爽吗?
爽,因为能研究一些新的东西,能够提升自己某一方面的技术。
自己最近也在思考做业务和做架构的问题,做业务的确很容易陷入到一种重复重复再重复的无限循环中,重复的技术栈,重复的业务场景,这些的确阻止了开发者的成长。那业务中要如何成长?个人的想法是多总结和记录开发中遇到的问题,多思考如何能够优化业务代码,如何写出高拓展性的代码,这可能是一些成长的点。做架构的确能经常研究一些新的东西,比如参与ssr的同构、动态化方案等等,但是如果只是为了架构而架构,脱离了业务场景,这也是没有价值的。所以就我个人而言,希望既能参与到部分业务中去,也能参与部分架构的任务,这样可能个人的提升会更大一些。

面试?

最近投了一份简历,面了一次试,但并不是同一家公司。之前在一个群里看到了考拉的一个招聘,薪水开的不错,所以打算去试试水,然而居然连面试的机会都没有得到。面试的那次是钉钉,因为之前投过也面过阿里,所以这次简历又被钉钉捞出来面了一次,面试的感觉有点糟糕,一方面是因为没有准备好,另一方面和他们要招的岗位不是十分符合。其实最近没有离职的打算,面试也是为了看看自己目前到了什么样一个水平,感觉陷入了瓶颈期,也是希望通过面试能够跳出目前有些糟糕的状态。最近一年也面了3次阿里了,效果不是很理想,奇怪的是至今没有获得一次网易的面试机会,不知道是不是因为网易对简历筛选十分严格还是什么别的原因。

以前学东西是为了成就感,现在是为了生存

这句话不是我说的,是一个ios的妹纸说的。最近我们一起参与了一次分享,一位实习生同学分享她最近一个月的学习情况和成长,会后聊天的时候那位妹纸发来了这一句话。这句话听着像过来人语录,自己也是有一些感慨,想起自己刚开始学习编程的时候,第一次打印出hello_world的时候,第一次开发出一个完整的android页面的时候,第一次解决了技术难题的时候,那种内心的喜悦和成就感是促使我接着往编程走下去的动力,但是慢慢的这种感觉越来越来少,甚至消失了。当然这是一个正常的过程,自己在不断进步和提升的同时,内心G点的阈值也会不断的提升,这是需要适应的过程。这句话可能反应了一些现状,但是如果学东西只是为了生存的话很难把事情做的很好,所以应该以一个积极的心态来面对。最后套用一句常用的话来总结:不忘初心、方得始终。

身体和精神状态

这个可能是每个程序员都或多或少的会遇到一些问题吧,比如长时间面对电脑,颈椎、腰、眼睛、头发等等可能都会有一些问题,也因为加班、熬夜等问题引起一些奇奇怪怪的问题。就自己来说最近颈椎一直很不舒服,持续的时间也挺长了,同时感觉身体状态也不如之前了,才仅仅才工作了三年,身体的状态就大不如初了,这算是一个危险的信号,如何在繁忙的工作中多花时间锻炼是接下来需要解决的问题。

展望

我很喜欢给自己定制一些目标,比如三年要达到怎样的水平,达到目标很开心,没达到目标很失望。就三年这个节点来说其实并没有达到自己的目标,有点小失望吧,但是路还是需要继续走的,希望在下一个目标节点能够达成。

写了这么多,三年来的总结也就差不多结束了,借用hip-hop圈常用的一句话来结尾好了。keep real。

end…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制 自动化代码检查 sonar 代码规范 阿里巴巴Java开发规范手册 UMPAY——编码规范 日志规范 异常规范 网络 协议 TCP/IP HTTP hession file HTTPS 负载均衡 容器 JBOSS tomcat resin jetty 容灾 日志框架 开源框架 slf4j 框架实现 log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发工具 编程工具 eclipse myeclipse idea vi VS webstorm sublime text 版本控制 svn git 项目管理 maven Nexus Jenkins 工作软件 反编译软件 office系列 下载器 adobe系列 记录软件 思维导图 office--Note 邮件管理 性能优化 分层优化 系统级别 中间件级别 JVM级别 代码级别 分段优化 前端 web应用 服务应用 资源池 数据库 大数据与nosql zookeeper hadoop hbase mongodb strom spark java语言 语言语法基础 异常 泛型 内部类 反射 序列化 nIo 匿名类 包装类 优先级 引用 语言工具类库 容器类 集合 链表 map 工具类 系统类 日期类 数字类 字符串+正则 流 字符流 字节流 语言特性 继承 封装 多态 JVM 多线程与并发 GC机制 GC收集器类型 串行 CMS 并行 G1 算法 复制 标记清理 标记整理 分区 新生代 eden survivor 老年代(old区) 永久代(perm区) 版本变化 1.5 1.6 1.7 1.8 1.9 IO/NIO IO类型 同步阻塞 同步非阻塞 基于信号 多路复用 异步IO 类加载机制 双亲委派 OSGI 算法 搜索 二分 排序 选择 冒泡 插入 快速 归并 堆 桶 基数 常用算法 贪婪 回溯 剪枝 动态规划 数据挖掘算法 KMP算法 GZZ算法 HASH分桶 关联规则算法 APRORIVE算法 分布式 负载均衡 水平伸缩 集群 分片 Key-hash 异步 一致性hash 消峰 分库分表 锁 悲观锁 乐观锁 行级锁 分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip 柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 索引 锁 oracle db2 缓存 redis 数据结构 持久 复制 cas 单线程 memcache eacache Tair 消息队列 jms Queue Topic kafka 持久 复制 Stream Partition rocketMQ RabbitMQ ActiveMQ 常用开源框架 Spring Spring MVC Spring WebFlow spring tx aop ioc Struts ibatis Mybatis CAS Dubbo 工作能力 软实力 应急能力 创新能力 管理能力 分享能力 学习能力 沟通能力 解决问题能力 经历 技术攻关案例 程序开发案例 程序设计案例 设计 设计原则 单一职责原则 开闭原则 里氏替换原则 依赖倒转原则 接口隔离原则 迪米特原则 设计模式 结构模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 创建模式 抽象工厂模式 工厂方法模式 建造这模式 原型模式 单例模式 行为模式 责任链模式 命令模式 解释器模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方法模式 访问者模式 设计案例 UML 架构 系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 协议设计 二进制协议 文本协议 接入层架构设计 DNS轮询 动静态分离 静态化 反向代理 LVS F5 CDN 逻辑层架构设计 连接池 串行化技术 影子Master架构 批量写入 配置中心 去中心化 通讯机制 同步 RPC RMI 异步 MQ Cron 数据层架构设计 缓存优化 DAO&ORM; 双主架构 主从同步 读写分离 性能优化架构能力 代码级别 关联代码优化 cache对其 分支预测 copy on write 内联优化 系统优化 cache 延迟计算 数据预读 异步 轮询与通知 内存池 模块化 工程架构能力 开发语言 运维与监控 监控 系统监控 日志监控 流量监控 接口监控 数据库监控 业务监控 性能监控 告警 日志 设计模式 数据结构与算法 各种工具
提供典型应用案例,剖析JSP/Servret技术与Struts 2技术在Web开发中的不同 提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最新版本,紧跟技术发展的趋势 提供230个实例和4个综合案例,可以作为案头必备的查询手册 一线开发人员全力打造,分享技术盛宴! 重点内容及特色 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》介绍了Web开发中客户端技术的基础知识,包括JavaScript、CSS、AJAX等,这些技术都是Web应用中常用的客户端技术。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握的技术。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和事务管理等,Spring中的数据库技术与AOP等。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书相比,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》讲解由浅入深,涵盖更多内容,列举了大量典型实例具有超强的实用性,另外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》各篇独立,适合读者全面学习或对部分内容重点学习。 读者对象 有Java基础,想进一步学习SSH框架整合开发的人员 了解SSH整合开发,想进一步提高开发技术的人员 正在使用SSH整合技术开发项目,想查阅资料的人员 大中专院校的学生和老师,以及Java培训班的学员和讲师 需要一本案头必备查询手册的程序员 光盘内容 6小时多媒体体视频讲解 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》所涉及的源代码 布衣暖,菜根香,好书滋味长!清华大学出版社长期以来一直秉承为读者多出好书的宗旨,多年来为读者奉献了大量脍炙人口的精品图书。尤其在计算机图书出版领域更是形成了鲜明特色,所出版的各类计算机图书受到了广大读者的好评。本次出版的“原创经典,程序员典藏”系列图书是清华大学出版社的重点精品计算机图书,旨在帮助读者全面学习各类程序设计语言和开发工具,提高开发水平。同时也为广大程序员提供良好的技术参考,以便作为案头必备的查询手册。 内容提要 -------------------------------------------------------------------------------- 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean、Jdbc和Hibernate模板、事务管理、Spring AOP等)以及 Hibernate(会话、映射、标准查询API、HQL、事务管理、锁等)。除此之外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。SSH是目前最流行的Java Web开发技术。 《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》适合广大从事Java Web开发工作的技术人员、对SSH开发感兴趣的人员以及大专院校学生阅读,尤其是具有一定的Web开发经验的技术人员。 目录 -------------------------------------------------------------------------------- 第1篇 web开发基础篇 第1章 搭建开发环境 1.1 本书使用的软件和框架的版本 1.2 JDK6的下载与安装 1.3 Eclipse3.4 的下载与安装 1.4 MyEclipse6.5 的下载与安装 1.5 Eclipse:IDEforJavaEEDevelopers的下载与安装 1.6 Tomcat6的下载与安装 1.7 在MyEclipse中配置。Tomcat 1.8 在EclipseIDEforJavaEEDevelopers中配置Tomcat 1.9 小结 第2章 JavaWeb应用开发基础 2.1 Web技术的发展 2.2 JavaWeb技术 2.2.1 Java.Welb程序的基本组成 2.2.2 Java,Web程序的目录结构 2.2.3 JavaWeb程序的配置文件 2.3 MVC模式与MvC框架 2.3.1 JSP模型1和JSP模型2 2.3.2 Web应用程序需要的基础服务 2.3.3 MVC模式概述 2.3.4 常用的MvC框架 2.4 小结 第3章 Web开发中的客户端技术 3.1 常用的JavaScriptIDE简介 3.1.1 在MyEclipse中使用JavaScript 3.1.2 在EclipseIDEforJavaEE中使用JavaScript 3.1.3 在NetBeans中使用JavaScript 3.1.4 其他的JavaScriptIDE 3.2.1 avaScdpt语法基础 3.2.1 实例:编写第一个JavaScript程序:Greet 3.2.2 变量 3.2.3 原始类型 3.2.4 类型转换 3.2.5 函数与函数调用 3.2.6 类和对象 3.3 JavaScript高级技术 3.3.1 DOM技术概述 3.3.2 获得HTML元素的3种方法 3.3.3 实例:图像自动切换 3.3.4 正则表达式 3.3.5 实例:表格排序 3.4 CSS基础 3.4.1 CSS的基本语法 3.4.2 在Style属性中定义样式 3.4.3 在HTML中定义样式 3.4.4 在外部文件中定义样式 3.4.5 样式的继承 3.5 AJAX.基础 3.5.1 AJAX概述 3.5.2 实例:使用XMLHttpRequest获得Web资源 3.5.3 实例:使用XMLHttpRequest跨域访问Web资源 3.5.4 实例:AJAX的3种交换数据方法 3.6 小结 第4章 Servlet技术 4.1 Servlet的Helloworld程序 4.1.1 实例:在My Eclipse中编写Helloworld程序 4.1.2 实例:手工编写:Helloworld程序 4.2 Servlet基础 4.2.1 配置数据库连接池 4.2.2 数据库连接池的应用 4.2 -3实例:用doGet方法处理客户端请求 4.2.4 实例:用doPost方法处理客户端请求 4.2.5 实例:用service方法处理客户端请求 4.2.6 实例:初始化(init)和销毁(destroy)Servlet 4.2.7 实例:使用PrintWriter输出响应消息 4.2.8 实例:用ServletOutputStream显示图像 4.2.9 实例:使用RequestDispatcher包含Web资源 4.2.10 实例:使用RequestDispatcher转发Web资源 4.3 HttpServletResponse类的其他功能 4.3.1 产生状态响应码 4.3.2 设置响应消息头 4.3.3 实例:验证响应头设置情况 4.4 使用:HttpServletRequest获得请求消息 4.4.1 获取请求行消息 4.4.2 获取网络连接消息 4.4.3 获取请求头消息 4.5 处理Cookie 4.5.1 什么是Cookie 4.5.2 Cookie类中的方法 4.5.3 实例:用Cookie读写客户端信息 4.5.4 实例:用Cookie读写复杂数据 4.6 处理Session 4.6.1 什么是Session 4.6.2 HttpSession接口中的方法 4.6.3 HttpServletRequest接口中的Session方法 4.6.4 实例:通过Cookie跟踪Session 4.6.5 实例:通过重写uRL跟踪Session 4.7 Web开发的中文问题 4.7.1 Java的编码原理 4.7.2 实例:解决输出中文乱码问题 4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头中转输中文 4.8 小结 第5章 JSP技术 5.1 用MyEclipse编写第一个JSP程序 5.1.1 实例:编写显示服务器当前时间的JSP程序 5.1.2 调试JSP程序 5.1.3 改变JSP的访问路径和扩展名 5.1.4 手动发布JSP程序 5.2 JSP的运行原理 5.2.1 Tomcat如何处理JSP页 5.2.2 分析由JSP生成的Servlet代码 5.3 JSP基本语法 5.3.1 JSP表达式 5.3.2 在JSP中嵌入Java代码 5.3.3.JSP声明 5.3.4.JSP表达式语言(EL) 5.3.5 实例:用EL函数替换HTML中的特殊字符 5.3.6 JSP页面中的注释 5.4 JSP指令 5.4.1 JSP指令简介 5.4.2 page页面指令 5.4.3 include加入指令 5.5.JSP的9个内置对象 5.5.1 out输出对象 5.5.2 pageContext封装对象 5.5.3 其他的JSP内置对象 5.6 JSP标签 5.6.1 插入标签 5.6.2 转发标签 5.6.3 传参标签 5.6.4 创建:Bean标签 5.6.5 设置属性值标签 5.6.6 获取属性值标签 5.7 JSP的标准标签库(JSTL) 5.7.1 如何使用JSTL 5.7.2 条件标签 5.7.3 循环标签 5.8 小结 第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 第9章 Struts 2的* 第10章 Struts 2的类型转换 第11章 Struts 2的输入校验 第12章 文件的上传和下载 第13章 国际化 第14章 Struts 2的标签库 第15章 Struts 2对AJAX的支持 第16章 用Struts 2实现注册登录系统 第3篇 Hibernate篇 第17章 Hibernate的Helloworld程序 第18章 配置Hibernate 第19章 Hibernate的会话与O/R映射 第20章 Hibernate的查询与更新技术 第21章 Hibernate的高级技术 第4篇 Spring篇 第22章 Spring的Helloworld程序 第23章 反向控制(Ioc)与装配JavaBean 第24章 Spring中的数据库技术 第25章 Spring的其他高级技术 第5篇 综合实例篇 第26章 Struts 2与Hibernate、Spring的整合 第27章 网络硬盘 第28章 论坛系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值