个人背景:非科班,大学基本在玩,毕业时只会一点java语法和sql语句,毕业后在传统IT行业工作了两年,基本上写了两年业务代码。
由于事多钱少加上自身观念与公司文化不符,今年年初的时候萌发了跳槽的想法,但是一直没有提离职。主要原因有:1、公司把我当成重点培养对象,在年初的时候让我和另外一位核心骨干开发一个大数据的项目,我想再多攒点经验,等到做完这个项目再提。2、我没有明确的职业规划,担心跳槽后进的是差不多的公司,不知道自己真正想要的是什么。
近期我提了离职,不打算马上找工作,计划学习几个月。因为我觉得我想要的并且适合我的是专注于代码的技术路线,基本放弃转管理方向的想法。以前有人和我说很多问题都不是技术问题,很多技术问题也可以用非技术问题去解决。这种话很对,但重点是,卧槽,很多技术问题依然摆在那。需求不明不白,开发效率低下,测试完全靠手工成本高而且没有保障,由于开发流程不规范、文档不全、代码质量低导致花费大量时间维护系统,系统出现性能问题无法找到原因。
学习期间要看的书主要参考知乎上的编程入门指南,目的是补充一些计算机基础知识,提高计算机方面的素养。
以下我说明一些详细原因:
1、不知道有更高效的处理方式。公司曾有一个涉及页面上表格计算的项目,当时开发该项目的同事处理计算问题都是采用js的onchange方法,具体计算的规则写在onchange方法内,效率非常低而且代码很丑,但是没有人觉得这么做有什么不妥。这些同事为了赶这个项目上线连续加班了两个多月,加班强度比996还要高。
以下我简要说明一下当时处理表格计算的问题
比如有以下表格
A1 |A2 |A3
A1和A2为必填项,A3不可编辑,A3的值根据A1和A2自动计算出来,要求A3=A1+A2
当时代码实现A3=A1+A2的方式为:
A1的onchange方法为A1_onchange()
A2的onchange方法为A2_onchange()
函数具体方法:
function A1_onchange(){
A3.value = A1.value + A2.value;
}
function A2_onchange(){
A3.value = A1.value + A2.value;
}
我在该项目上线三个月后偶然间发现了excel中对表格计算的处理方式
A1 |A2 |A3=A1+A2
一种是纯面向过程编程,一种是声明式编程,开发效率差距不止一点。
2、工具落后。公司制作版本还在用ant,并且需要手动从svn抽取代码,我帮做版本的妹子写了一套脚本包括自动从svn抽取代码,自动打包,发布版本到服务器上。之前妹子每天要用2小时发版本,现在只要点点鼠标就行了。后来我看了关于maven的书,感觉我写的那套脚本也是垃圾。
3、自身意识差。我以前没意识到自己代码写的有多烂,因为两年了基本没有认真的进行过代码走查,也没人说过我。直到最近,一起做项目的同事一看到我的烂代码就一副难受的样子,我看了点关于如何组织代码的书,我自己看着那代码也挺难受的。
4、没有自动化测试。测试完全靠人工测试,不能对修改的程序的正确性提供有效的保障,我有几次修改bug导致其他bug产生的经历。
5、代码难维护。我负责4个重要系统的代码维护,其中有一个已经运行7年左右了,经常出问题而且只能人工介入处理。虽然代码维护的经历对我debug能力提升很大,但有时候想想自己大量的时间被这些系统bug所吞噬也是一件心寒的事情。
6、边干边学对我而言不太适合,每天都有很多事要处理,不加班就不错了。加上注意力不集中、精力有限这些问题,我现在每周总的学习时间很难超过20小时。边干边学的意义只有那份稳定的工资而已。
7、很多IT公司都很水,好的公司我现在没有底气能面试通过。
8、项目经验也大多是扯淡的事,做1个只要增删改查的项目和做10个只要增删改查的项目对人的提升差别不大。
9、我还有个小算盘是想借此次离职的机会转为自由职业者或者加入远程团队,这样能更自由地安排时间。
感谢阅读,欢迎吐槽^ ^。
1
bingxx 2015-07-26 08:11:15 +08:00 via Android
"4、没有自动化测试。" 这里说的没有UI自动化测试吗? 测试金字塔:单元测试>接口测试>UI测试 。开发应该自己做好单元测试,后两个是测试的活,然后接口方面优先做好自动化,UI自动化只做核心功能。很开心开发离职原因能带上测试小伙伴,测试小伙伴不想只点点点,整体忙于业务,也想提高自己能力,自动化测试落地很难。不能自动发版,公司缺少架构师吧,现在自动编译和发版的工具不少的,公司现在使用的是teamcity+git。
|
2
nevermlnd 2015-07-26 08:29:30 +08:00 via iPhone
工作的想辞职自学;正在自学的想去公司快速学习。
我是后者,本科CS专业没好好学,毕业后玩了半年多,现在自学iOS三个月,不知道自学到什么程度进公司比较好? 请问大家觉得怎么平衡这个时间点? |
3
irgil 2015-07-26 08:44:17 +08:00 via Android 2
给楼主看下我给我同学定校招的计划。他本科是生物,有一点Java基础
http://fromwiz.com/share/s/1Mqim02zV4sZ2phe3U2ic95Z0PmJtS0UXkKk2tk2Os3Nac8V |
4
swirling 2015-07-26 08:49:11 +08:00 via iPhone
尝试自己想做的吧。最坏俩月没工钱呗。
|
5
caixiexin 2015-07-26 09:01:23 +08:00 via Android
跟lz 的处境非常像。 。
|
6
hellogmh 2015-07-26 09:41:00 +08:00
支持你!但是你辞职学习期间所做的一定要对得起你的这个决定!千万别半途而废!
|
7
imn1 2015-07-26 10:00:23 +08:00
我个人不太认同这种做法,不过这是个人选择,不好说什么,前面一帖忍住不说,居然还有第二帖
这些事情最好找身边了解你的性格,又敢直言的朋友问意见 个人觉得这是一种惰性使然,辞职没问题,学习也没问题,但不应该“休息”着“学习” 要么完全休息,去旅游什么的 理应学习并且继续找新的工作,个人觉得不冲突,“等学会了”、“等水平提高了”只是个借口~ |
8
hustlike 2015-07-26 10:20:51 +08:00
你确定你辞职了学习的效果比现在更好么?
在实际的项目中学习收获更大吧。 |
9
feiyuanqiu 2015-07-26 10:27:29 +08:00
tldr;
对知乎的内容要批判性地看待 裸辞学习的压力很大,效果没有想象中好 可能还没到必须要学习基础的阶段 --- 只有一点意见,我觉得那个编程指南不太好,用它做学习计划有几个问题,一是学习量太庞大,不是一两个月就能看完的;二是学完之后不会对你的实际能力有显著的提升,你面试的时候肯定被问得更多的还是java方面的问题 一般裸辞之后也就只有一到两个月时间,再久家里面都要开始催你了。真要有心想打好基础还不如去考研。如果已经想好要裸辞了,我是建议辞职后先找家公司面试去,根据面试情况,从面试中反馈出来自己欠缺的地方调整学习计划,比盲目地一头扎进基础的坑里好很多 你也是有几年开发经验的了,相信你对自己现在欠缺什么都有很清楚的认识。我想问的是你现在真的已经到了计算机基础成为瓶颈的阶段了吗?你的代码风格、程序结构、模块设计都很完善了吗?你对你使用的框架的实现和架构都了解地很透彻了吗?你对自动构建、持续集成自动部署都能在实际开发中应用了吗?你能配置好tomcat、jboss、MySQL、nginx这些运行环境、维护好服务器吗?你对你们公司的业务逻辑了解地很清楚吗?...完了,我不懂java |
10
mcfog 2015-07-26 10:44:31 +08:00
学习是自己的事
你能找到10条理由为什么没办法一边上班一边学习,就能找到20条理由为什么辞职在家也没学好 |
11
HerrDu 2015-07-26 10:52:43 +08:00
不是想转行或者考研的话,还是边工作边学吧。
|
12
ys0290 2015-07-26 10:54:11 +08:00 via iPhone
工作上你有一堆测试环境你不用,非要辞职自己回家捏造测试环境
|
15
skyshit OP @bingxx 我说的“没有自动化测试”其实包括你说的那三种测试,在测试方面我原以为只分为开发的单元测试和测试人员的集成测试,谢谢你的科普 ^ ^。现在公司没要求开发编写单元测试,开发自测也是靠手工操作。我个人认为自动化测试非常重要,主要是因为自己在自测的时候感到手工测试非常繁琐而且低效,开发和测试在这方面都要做大量的重复劳动,看过一些敏捷开发的书籍基本上都会提要实现自动化测试才能实现快速迭代。我在单元测试方面做过一些尝试,感觉相比完全手工测试效率提升很大。自动化编译和发版方面teamcity没怎么了解过,我在书上接触过maven+svn的例子,也是java平台成熟的解决方案,但公司并没有引入maven的想法。
btw:我也很喜欢<越狱兔>里边的普金 ^ ^。 |
16
skyshit OP |
17
skyshit OP |
18
skyshit OP @feiyuanqiu
谢谢这么耐心的回复,裸辞压力大这点我有考虑过,效果怎么样我没有报乐观的态度。 做出这样的决定我的出发点主要有两点: 1、无论结果如何我都会认为这是我一次特殊的经历,在这种比较极端的条件下更容易看清自己是个什么样的人; 2、我感受到需要补充基础知识了。我有看过<算法>一书,里边的内容都是最基础的常用算法和数据结构,但是当时都给了我惊艳的感觉,比如我之前不知道为什么重写hashcode()的时候一定要重写toString(),当我真正知道了哈希表的实现后这个问题的答案就很显然了,基础知识让我在看一些问题时能想的更清楚。另外,现在面对性能问题基本上一筹莫展,因为不知道底层究竟是些什么因素导致了性能问题。 对于那个编程指南中的内容实际上我没有把握完全学完,但是我的计划是至少学完<csapp>和<sicp>。看到很多人安利过这两本书,我对这两本书是心向往之,曾经有学习过csapp前几章,内容很棒。但是因为没有一点汇编语言的知识,在汇编那部分完全学不下去继而放弃了整本书的学习。 你提到的那些关于代码组织、系统架构、软件应用方面的问题都是很好的而且在实践中很重要的问题,我想好好解决这些问题,这次我是想通过扩充计算机知识面、巩固基础来尝试从理论的角度理解并解决这些问题。 |
19
skyshit OP |
20
caixiexin 2015-07-26 16:09:19 +08:00
已经提离职了,不过交接要有段时间,也是裸辞,跟你的情况蛮像的。
打算休息一段时间,出去走走,调整下心态,重新整理下自己的知识,学点以前想学的东西,争取下一份工作让自己满意。但是空窗期不想太久。 共勉吧,加了个油~ ps:v站不能私信呢,我们处境太像了,都想加你好友了23333 |
21
OneAPM 2015-07-26 22:31:47 +08:00
如果是系统出现性能问题无法找到原因,我们可能可以帮到你
|
23
saltedyu 2015-07-27 09:57:06 +08:00 via iPad
专注学习效率高,边工边学效率低,可能会被工作拖累。人的精力有限,专注做一件事,更容易做好。
|
24
xylophone21 2015-07-28 17:59:24 +08:00
然后下一家一定会问你(或者心里想),你这两个月干什么去了?
|
25
skyshit OP @xylophone21 摆明说感到自己基础薄弱学习去了咯。反正三观不和的公司进去后也会各种不爽。
|
26
xylophone21 2015-07-29 09:33:29 +08:00
@skyshit 基础薄弱,在面试里可不是加分项啊。
|
27
feikaras 2015-07-29 12:29:15 +08:00
@xylophone21 这有什么好问的。说出去玩了半年都没啥问题吧
|