这周的工作还算顺利,在我看来解决了几个问题。但是,解问题的背后,不知我学到了什么。
总结下来,工作几年以来,自己最擅长的就是加打印,其实就是断点调试。但是在安卓系统上,不知道要怎么断点调试,只能一步步加打印。看出现问题的情况下代码跑到了哪里。然后修改一下判断条件,强制让代码执行到正确的步骤。但是问题背后的真正原因,我分析不下去了。简单的可以,复杂的完全就没有头绪了。
在上家公司有代码管理的时候,还擅长倒代码,就是把软件倒退到问题出现之前的版本。如果是很早的版本是没问题的怎么办,呵呵,那就用二分法,慢慢找到第一次出现问题的版本。找到了导致问题的代码块后,能删掉的删,不能删的加判断条件,同上。
上面两种方法都解决不了问题的时候,那就直接反馈问题给原厂,让他们去解决。但是,这时的工作就是帮他们加加打印,验证他们提供的patch。这背后的原理呢,有的自己会去琢磨,但很多时候就那样过了。如果对方解决不了的时候呢,那就要开始扯皮了,然后有的问题就那样推不动了。
上面是说解bug的,那开发新功能的时候怎么做呢。虽然这部分很少,但还是有。首先当然是参照以前的做过的平台,能用的直接挪过来,有差异的地方修修改改,缝缝补补。背后的原理懂吗?估计也是一知半解。如果是没做过的呢,那当然是先打开百度,搜索,找别人做过的直接复制下来,怼进去。瞎搞搞,只要功能实现了,就可以划划水了。
所以我也不敢说自己是什么程序员,我都没写过几行代码。不,按照上面这样描述的我是没做过几样东西的对吗。那倒也不是,自己也还是从头到尾做过一些应用。但就是不专注某一块,这里搞搞,那里搞搞。
所以在面试的时候老是碰壁,自己以前没反思过自己这些问题。以为自己上班很勤奋,工作都做完了,很厉害。学习也是看两篇博客,书随便翻一翻就完事了。从没想过自己要往哪个方向发展。害,算了算了,写着写着又变成自我反省了,这方面我倒是挺擅长的。
毕业以后就被工作推着走,自己也没有全面的补过计算机软件相关的基础知识。所以老感觉心里没底,即使工作已经五年了。虽然上面说的有点调侃,但是实际情况是环境有一部分关系,更大的原因是自己。以前好像也说不上对这些代码有兴趣,好像就是混口饭吃。混着混着就不行了。
但是现在不一样了。自己确实想要有一些改变,但是这习惯是真的渗透进骨头了。自己一直没进入状态,那种真正搞技术的状态。难道真的是自己没兴趣吗,只是为了谋生而去学那些东西。但这社会上,有几个能做自己真正感兴趣的事业呢。所以还是硬着头皮上吧。已经买了块嵌入式开发板,决定往底层发展,往Android驱动的方向走。也不知道这个决定正不正确,但目前来看是最接近于我的自身情况了。先做看看吧,想象自己如果真的在做驱动工程师的工作,我该做些什么。如果做不到的话,我还去面什么试呢。
其实想要换一个行业并不难,看中的还是基础以及处理问题的能力。自己老是想的那么难。严格来说也不算换行业,一样都是软件工程师,只不过自己做的是电视,没有那么深入罢了。实际上只是想换换产品线,去那种能独立自主研发自己产品的公司。虽然那种要求确实高。
聊着聊着又脱离技术了。其实遇到的每个问题都是可以去深究的,每个原理我都懂了,下次别人问起的时候也就不会讲不出来了。
接下来还是想补一下C语言,然后把Linux各个例程敲一遍,看能不能做出一些东西来。然后书也是要看的。每天要是能抽出三四个小时来学习那就好了。保持学习的持续性,那样才会进步。