蜗窝科技

迷茫的程序员

蜗窝讨论区存档 · 灌水区 · 楼主 cuixiaolei · 2016-05-08 · 15 帖

本文是原「蜗窝讨论区」的历史存档(2016-05-08),来自版块「灌水区」,共 15 帖。讨论区已停止服务,此处仅供查阅。

cuixiaolei · 2016-05-08 19:16

这篇帖子写的可能比较长而且很随意,希望@wowo和@linuxer能够看到和看完,希望能得到你们的帮助。

    我是15年6月毕业的学生,电子信息工程专业出身,一个普通的二本院校,到现在工作已经快有一年了。我从大一开始做技术,大一学的C,参加了很多C的比赛,大二开始做单片机,从51开始,用51做过很多小东西,然后玩了飞思卡尔/stm32等单片机,大三的时候参加电子设计大赛,那年是四轴飞行器,省一等奖。我大学的时候想毕业了就做控制类的工作,快到大四的时候不想做单片机了,想做嵌入式,那时候只听学长说过嵌入式、linux之类的,大三下学期自己学了linux,用了实验室的2440,只停留在把系统烧进去,然后跑uboot,觉的很神奇。我特别喜欢技术,经常会因为自己做的东西而激动的睡不着。
    大三下学期我着手找工作,在学校的时候联系了南京的公司,大三考完试我拿着我的简历和证书去了南京,到了一家刚刚成立的创业公司,当时就老板,我,和我一起的同学三个人。公司是做路边停车场的。老板特别好,是一家上市公司的技术经理出来创业的,在公司做的是a20,负责把社区做好的系统移植到板子上,然后学的python,在开发板上做各种实验,公司小,需要什么我就要去学什么,然后做什么,学了php,html5,然后用html做的android和ios应用。整个大四都在这家公司做,一年学的特别杂,但是很充实,学了很多东西,对物联网的整条线了解了一些,毕业设计也做的物联网相关的。毕业以后留在了这家公司,但是工作了两个月后,很不幸,公司倒闭了。倒闭的时候我正在做ios应用,那半年我一直在做应用。我去找工作,找的是android和ios应用开发,没办法,别的都是了解,很久没看了,只知道理念了。机缘巧合,我去了一家做手机的外包公司做android驱动。
    15年9月初,去了新公司,我带着很大的激情,要努力,要使劲学习的这股劲到了新公司。但是去了公司我很快就迷茫了,前三个月我坐在那没人管没人问,也没人告诉我要做什么。我就想啊,我不能闲着啊,就上网百度android驱动相关的技术和内容,去买了很多书,给自己定了计划,多长时间把什么内容搞定,多长时间要达到什么水平。学习的过程中慢慢觉的android驱动好复杂,有时候根本都无从下手。过了两个多月以后心里很虚,感觉什么都不会,代码自己没有敲过几行,运行机制不知道是什么样的,只是知道android分为几块,每块干嘛的,大概啥样的,一道具体的就不知道了。看代码会看到很多函数,函数压根就不知道是干什么的,函数要不要往下去深追,深追到什么程度,到最后都是寄存器的地址,也不知道这些寄存器的地址是干什么的,厂商也不给数据手册。
    对问题我很想弄清楚,比如在看A问题,A问题需要用到B和C知识,B又需要用到B1和B2知识,C需要用到C1和C2知识,我想把这些东西都弄清楚,这样心里才会舒服,才会踏实,如果只把A问解决了,弄清楚了,但是心里还是有个疙瘩,心里很多为什么。延伸出来的东西我不知道哪些是重点,哪些需要我去弄清楚,越看越多,越看越复杂,越看越受打击,各种挫败感。
    每天想把某个东西弄清楚,但是又弄不清楚,对android或者linux,只能看代码,没有自己去动手写,很多都看不懂,自己又想弄清楚。这样的生活特别煎熬,自己特别想把东西弄清楚,但是自己又弄不清楚,一身的劲没处使的感觉。每天晚上会反思自己哪里不对,为什么会这样,接下来该看什么,该做什么才行,晚上会睡不着觉,很无奈。
    我经常找公司工作了很多年的工程师聊天,他们告诉我说不必深究,有些东西本身就很难,知道在什么地方改哪些东西会有哪些效果就行了。我是做单片机出身的,从电路图到硬件的搭建再到程序的编写自己非常清楚,心里做的也特别顺和开心。在什么地方改什么这样的方式压根就不能说服我,我总是想把东西弄清楚,晚上睡觉的时候才会很开心。
做android驱动已经七个月了,这七个月我过的很煎熬,自己没有学到什么东西,特别没有安全感,我总结的是下面几个原因:
1.自己没有敲代码,心里感觉少点什么,没有安全感。
2.自己想把问题和问题延伸知识都弄清楚
3.觉的现在学的特别虚,什么都会,但是什么都不精

我知道linuxer和wowo很厉害,都是从我这个阶段过去的,想请你们看看我的问题出在什么地方,我也给自己列了知识路线,在坚持写技术博客,希望你们能看看我到底怎么了。

cuixiaolei · 2016-05-08 19:19

http://naotu.baidu.com/file/fb17f67f5034c063b63874f5418fa9fd?token=618060eb452f9f2f 这个是我给自己定的学习路线。

wowo · 2016-05-08 20:13

我觉得你是一个不错的人、不错的工程师,有想法,有上进心,喜欢刨根问底,不喜欢黑箱子,这一切都是成为一个优秀而快乐的工程师的必要条件。 而你最大的问题,可能就是心急了点,迫不及待的想把自己变成自己所向往的哪种人,殊不知这是需要时间的。 你现在应该做的,就是快速而又高质量的完成领导交给你的、在你能力范围内的工作。从不求甚解,到有一点点自己的想法,再到有建设性的想法,能力就在不知不觉中增强了。 当然,你提到的三个原因,我的看法如下:

cuixiaolei 写道: 1.自己没有敲代码,心里感觉少点什么,没有安全感。

刚工作的人,很少能有机会自己写代码的。你能做的,就是等待。在等待的过程中,多看、多想,以确保机会到来的时候,你写出(或者模仿出)高质量的代码。

cuixiaolei 写道: 2.自己想把问题和问题延伸知识都弄清楚

我的建议是,不要太着急,不要给自己太大的压力。你没有做过那么多东西,没有那么多积累,试图去“延伸”,是非常困难的。 最好顺其自然,让自己在技术的路上,多开心一些,后面有的是机会。

cuixiaolei 写道: 3.觉的现在学的特别虚,什么都会,但是什么都不精

不要试图大网撒鱼,把学习的面变小,甚至变成一个点,然后在某一个点上深入。这可以给自己一些自信,减少一些迷茫。

cuixiaolei · 2016-05-08 20:35

谢谢,我对思考你给予的答复。

linuxer · 2016-05-09 00:05

其实在目前的中国,大部分的驱动程序员都是这样度过的,对驱动不求甚解,能work就OK了,有原厂代码,自己不需要写代码,只需要调试驱动。我认识的三星的驱动工程师,根本没有写过自己的一行代码,没有写过任何的设计文档,但仍然愉快的工作着,呵呵~~~~你的烦恼主要来自你的思考,对未知世界强烈的好奇心,对任何技术细节刨根问底的精神头,这也是蜗窝科技希望能够汇聚的那些工程师的特质。不要怀疑这些特质,这些都是成为一个优秀工程师必须有具备的特征。当然,在我看来,你的问题主要是在短时间内把“网”撒的太“广”了: 1、为何要学习那么多的编程语言?坦率的讲,编程语言我除了c之外,其他的都不会,我也从来不试图去学习其他的编程语言。如果C++还略知一二,那么Java、PHP、python......我更是一窍不通。 2.Android是一个庞然大物,不要试图把每一件事情搞清楚。人的一生非常的有限,就算是linux内核,你也不太可能全部吃透,也许一个简单的RCU子系统就足够研究一辈子了,当然,这是指深入的研究。如果你有足够的兴趣,想将大部分的内核子系统通读一遍,了解其基本的运作逻辑,那么也是需要4~5年的时间(我曾经有两年的时间,每天花12小时来阅读内核代码(2.4版本),浏览了60%的内核代码,考虑现在内核的复杂度,如果你能投入同样的时间,我推断是需要4~5年的时间)。而对于Android,坦率的讲,我也是一无所知,也就是知道这个名词,呵呵~~~~

一句话总结:对于我们这类属于“打破砂锅问到底”的工程师,不要搞太广的技术,会把自己逼死的,呵呵~~~最好focus在某一个狭窄的技术领域,这样才能让自己快乐的技术中徜徉。

最后,顺便说一句,也许现在你不太能理解:其实当你focus在一个狭窄的技术领域,对其比较精通的时候,你就会发现,其实所有的技术都是相通的,你有能力深入的理解了linux内核的进程调度系统,你也有能力设计出一个非常优秀的SOC上的图形系统。唯一不同的是在你人生的分叉点上,你选择了做软件工程师,选择了做linux kernel,如果时间可以倒转,回到你职业规划的那个时间点,你选择了IC设计行业,你也一样可以出类拔萃(当然,前提是你足够优秀)。

Codingbelief · 2016-05-10 23:36

看到上面“随意”写出的“较长”文字,我觉得我应该过来灌灌水 ~~

没有安全感是好事,有求知欲是好事,会去总结是好事。所以啦,稍微努力一点点就好了,不用太纠结 。

我也没有特别好的建议,就自顾自的写点东西吧~~

  1. 工作效率 不管做什么工作,尽可能的提高自己的工作效率。效率高了,你就会有盈余的时间,再利用这个时间,去深挖工作相关的内容。慢慢就会形成良性循环,效率会越来越高。到某一个阶段时,可能你半天就可以把一般人需要一整天处理的工作量完成了,接着剩下的时间你就想整什么整什么去了。 至于提高效率,动动脑筋应该可以想到很多。减少重复的劳动,别犯同样的错误,坚持总结反思之类的。

  2. 阅读与软件设计 上面你说到没敲代码,没有安全感,我倒是觉得不懂“敲代码”,不能优雅的“敲代码”才是真正危险的。不要纠结代码量有多少,更多的去关注设计,关注架构,关注美。@Linuxer 之所以是 @Linuxer 肯定不是因为他敲了很多代码 ~~ 更多的去阅读好的代码,去阅读经典的书籍,然后多思考,一定会让你更有安全感。

3 关于技术重点 对于 @linuxer 的观点:最好focus在某一个狭窄的技术领域,这样才能让自己快乐的技术中徜徉,我倒是有不一样的想法。我自己本人对于各种新鲜的事物还是充满好奇的,我觉得稍微放纵下这些好奇,也是能收获很多快乐和有意思的经历的~~ 当然,精通一个技术领域是必须的,最现实的理由是:这可是决定你作为工程师的身价的最重要指标啊。所以,我的观点是,有趣的东西花点时间也无妨,但是必定要选择一个自己喜欢并且擅长的方向,下苦功夫。

linuxer · 2016-05-11 11:36

搞技术的工程师有若干种: 1、需要focus在某一点上进行钻研,研发工程师大概属于这一类 2、需要focus在某一个领域进行研究,搞测试的(一般指系统测试)可以归于此类。 3、需要对某一个行业相关的所有的技术都有涉猎,不要求深入,但求能“吹几句”。搞技术支持的或者销售类的属于此类

如果一个人的性格特点适合做研发工程师,其实本质上我是不建议在初始阶段把学习目标放的太宽泛,因为在这个时候,还没有形成正确的学习方法,基本上都是在瞎搞,东搞搞,西看看,往往哪一个都不能精通。当集中精力在某个“点”上深入下去的时候,在这个过程中,伴随着对技术的掌握的同时,往往形成了良好的习惯和方法。这时候,如果对新技术好奇,那么可以义无反顾的去......在掌握了通向各种技术大门的钥匙之后,如果你愿意花时间,去一一打开并去逛一逛,有何不可呢?但是,人生苦短啊,何必太执着于技术?世界有那么多未解之谜,时间的起点是什么?宇宙的边界在哪里?人存在的意义是什么?......哈哈

tigger · 2016-07-28 10:38

我来灌下水 找个女朋友,买套房子。喜欢大城市就去上海北京,喜欢小地方就继续在南京,苏州呆着。 学习的能力不是跟学历成正比的。我公司一大把的研究生,做事情的方式与态度远远不够。 感觉你对底层比较感兴趣,是不是要挑一个IC公司比较合适? 想来上海,可以找我聊聊~~~~

wowo · 2016-07-28 18:29

tigger 写道: 我来灌下水 找个女朋友,买套房子。喜欢大城市就去上海北京,喜欢小地方就继续在南京,苏州呆着。 学习的能力不是跟学历成正比的。我公司一大把的研究生,做事情的方式与态度远远不够。 感觉你对底层比较感兴趣,是不是要挑一个IC公司比较合适? 想来上海,可以找我聊聊~~~~

点赞! :cool:

tab · 2016-08-19 10:53

15年6月毕业的学生,电子信息工程专业出身,一个普通的二本院校 大三的时候参加电子设计大赛,那年是四轴飞行器, 应该也是大三自学Linux。 好相似的经历啊,哈哈哈哈

叶念西风 · 2017-01-27 15:27

感觉是一模一样的经历

jackindata · 2017-02-20 13:46

楼主有这样的冲劲,坚持下去定有出头之日啊。

差不多一年过去了,楼主给大家说说进步如何呀?

cuixiaolei · 2017-03-08 11:16

一年后再看自己发的帖子,有很大的感触。 发帖后的这几个月,我去做了arm cortex-m0的单片机开发,没有停留在功能的实现,更多的是去了解arm的运行机制,CORTEX-M0权威指南看了很多遍,做好一件事后内心非常的充实。半个月前从单片机转向Android驱动的开发,这次不会再像去年那样,像个无头苍蝇一般。 过去这一年我自己的变化很大,对技术和人生也有了新的认识,唯一不变的是对技术的热情,我觉的当个工程师挺好,在做着自己喜欢的事情。 现在业余时间在跑自己的小板子(全志A20),跟着xproject在做kernel4.4和u-boot的移植工作。 “慢下来,享受技术”

wowo · 2017-03-08 13:19

cuixiaolei 写道: 一年后再看自己发的帖子,有很大的感触。 发帖后的这几个月,我去做了arm cortex-m0的单片机开发,没有停留在功能的实现,更多的是去了解arm的运行机制,CORTEX-M0权威指南看了很多遍,做好一件事后内心非常的充实。半个月前从单片机转向Android驱动的开发,这次不会再像去年那样,像个无头苍蝇一般。 过去这一年我自己的变化很大,对技术和人生也有了新的认识,唯一不变的是对技术的热情,我觉的当个工程师挺好,在做着自己喜欢的事情。 现在业余时间在跑自己的小板子(全志A20),跟着xproject在做kernel4.4和u-boot的移植工作。 “慢下来,享受技术”

:cool:

-n · 2018-02-02 11:08

一模一样加一!现在我很迷茫。电子信息工程专业出身,大一学C,大二开始做单片机,从51开始,用51做过很多小东西,然后玩了stm32等单片机,大三的时候参加比赛,智能手环,省二等奖。大三第一学期突然不想做单片机了,开始自学TQ2400,TINY4412,想做嵌入式linux驱动。然后现在大四在一家外包公司做 嵌入式linux驱动,RK平台,没有人带,虽然已经在实习4个月多了,但是感觉自己什么都不会,因为我想把某个东西弄清楚,但是又弄不清楚,对android或者linux,只能看代码,没有自己去动手写,很多都看不懂,自己又想弄清楚。这样的生活特别煎熬,自己特别想把东西弄清楚,但是自己又弄不清楚,一身的劲没处使的感觉。 看了cuixiaolei最后的做法,我在想自己是否也要换工作?不知道cuixiaolei还能不能看到我的回复,我想向您请教一下,你的做法或经历,给我参考一下。