时间过得真快,一转眼,在研发这条路上走了都十多年了(1997-2013),回头看的时候,真是感慨多多啊,写下面的文字,也是给有志于软件产品研发的新从业者,起到一个参考作用。如果能让他们少走一些弯路,就善莫大焉。
这里说的学习路线,就不再包括在学校里学的计算机方面的课程了,当然,这些课程(例如操作系统、数据结构、编译原理、编程语言等等)都是很重要的。但是,它们的重要性不一定你现在就能体会出来。这里想说到的一句话就是千万不要因为暂时用不上而忽视这些基础。
其实开发是一个很累人的行当,辛苦,更辛苦,是这个行业的常态。如果不能吃苦,活着对开发没有兴趣,其实没有必要勉强自己,没有浓厚的兴趣,别说之后的加班再加班了,就学习期间,能否守在计算机面前,没日没夜的,只为测试一下自己新学到的知识和技术,就成问题。
说一说我认为研发工程师应该怎么学习吧。首先要学通C语言。不管此后的工作是否要用到C做开发,都应该花上一段专门的时间学习,弄懂C语言的语法、基本原理和各种表述等等。
开发工作本质上说就是让计算机来完成业务,两个关联最紧密的事务就是“业务”和“计算机”,而学习C语言,就是为了清楚,计算机是按照什么逻辑在工作,懂了这个,才能把自己所了解的业务内容,“讲”给计算机。从这个角度上说,学C语言,就是学计算机逻辑。
尤其是,C语言里,最困难,也最体现C语言精华的“指针”,如果不学通,那么,基本上等于没有学,呵呵,这是一孔之见:)。
第二,带着清晰的目的来编程。最好是有开发商用软件(项目或产品)的任务要求自己完成,在其中,会涉及很多的技术,甚至不止是一门语言(例如B/S系统开发就至少牵涉数据库的知识、Java、Html、JavaScript)。
在工作中学习最大的好处就是有压力才有动力,有明确的目标才能保证自己学习的知识都是有价值和意义的。通常,工作中进度和时间表的压力,会促使人释放出自己的潜能,激发自己学习的动力,这和自己捧本书啃书本有着巨大的区别(在我之前的经历中,捧着书本看通常都会犯困。。。。)。
在商业开发工作中学习的一个很大的好处,就是所有商业开发的团队,对规范性(例如编码规范)都有严格的要求,一开始就规规矩矩的做,对一个研发工程师来讲非常有意义,培养出好的工作习惯,以后受益无穷。
第三 要勇于承担有挑战性的工作,也不要忽视平淡的工作。这一条是上面一条的一个延伸。千万不要遇事向后退,和上面的道理一样,给自己压力,挤压自己,这是促进自己成长最好的途径。而平淡无奇的工作,也是磨练自己耐性的最好方法。
第四 经常回过头来看一看基础的东西。这和之前我的说法一致,在学校学习时,可能觉得书本上说得东西都是理论和教条,离实用很远,但是工作一阵就会有一些不同的感受,你会发现,实际工作中的某些东西实际上在书本上某章节讲到。所以工作一阵子,回来再仔细看一遍基础的一些书,例如学校的计算机教材,比如学Java,看看《Java 编程思想》,《Java 虚拟机规范》,都会发现很多之前没有发现的东西。
第五 关注自己沟通能力的提高。这是进阶话题。现代软件开发,不是个人英雄时代了,你无法避免和别人的沟通。作为一个开发人员,你要从别人那里获取到需求,不善于沟通的人,经常不能从别人那里获得全部的需求,或者得到的需求有很多谬误,这样的开发过程,因为偏离了目标,会带来工作大的偏差;作为开发人员,还会经常需要将自己的工作,表述给别人,包括给别人开发接口,或者工作中的配合,这在软件工程中叫做“可持续性”,因为一个产品,可能第一版、第二版会不断延续,中间可能会换几拨人来设计开发;一个项目,可能有一期、二期,中间也很难说一直由哪些人在做。后面的人看不懂前边人的东西,会造成工作上的弯路和浪费。
第六 文档能力。一是需要能看懂别人的文档;二是自己要能把自己的工作用文档清楚描述出来。
第七 职业素养的提高。职业素养的提高包含了很多方面,不单是掌握编程语言和数据库,通晓设计,更多的是,冷静对待任务,知道应该用哪些方法应对,出现问题勇于承当,不惊慌失措,不满怀愤怨,找到合适的办法解决,等等,不一而足。这些,没有固定的成法可依,能够在这里说的就是,不管在工作中遇到什么样的事情,预期的还是非预期的,都要平心静气应对,困难是成长的阶梯,职业素养是磨练出来的。
说到这里,做过小结。其实简单的说,就是 学习-->工作-->总结这样的一个过程不断迭代。
推荐几本书:
《深入理解计算机系统》
《C语言程序设计(谭浩强)》
<Thinking in C++》
《Java虚拟机规范》
《Java编程语言》
《Thinking in Java》
相关推荐
### 嵌入式学习路线图详解 #### 一、为何选择嵌入式? 嵌入式系统作为IT领域的核心组成部分之一,在技术发展和市场需求方面都展现出极高的潜力。随着智能化时代的到来,无论是智能设备还是物联网(IoT)的发展,都离...
2. **嵌入式研发方向职业生涯讲解视频**:这段视频则更具体地讲解了嵌入式研发方向的职业生涯规划,包括如何从初学者成长为高级工程师的过程。 #### 三、学习路线图 1. **ARM+Linux嵌入式底层内核驱动方向学习总体...
对于软件工程师来说,他们的成长之路通常可以分为几个关键阶段,并且需要面对各种挑战和抉择。 首先,对于软件工程师来说,认清自己的职业定位至关重要。如同案例中的AA先生和BB先生,他们分别面临着技术深化与转型...
### 华为研发之路的关键知识点 #### 一、华为研发的背景与意义 - **背景**: 华为作为中国通信设备制造领域的领军企业,自成立以来就致力于自主研发,尤其是在通信技术领域取得了显著成就。《华为研发》一书通过...
在百度,他作为一名资深研发工程师,积累了职场素养、技术能力和方法论,同时拓宽了视野,建立了初步的人脉。在阿里巴巴,他转变为算法专家,锻炼了技术迁移能力,并经历了思维和做事方式的碰撞。在人人车,他作为...
软件架构师是软件开发领域中的重要角色,他们承担着企业技术路线和技术框架的决策责任。在软件行业,架构师往往被视为技术的引领者,...对于有志于此的开发人员来说,持续学习和实践经验的积累是通往架构师之路的基石。
通过遵循这样的学习路线图,不仅可以快速入门嵌入式技术,还能逐渐成长为一名优秀的嵌入式工程师。 总之,嵌入式技术的学习需要系统性和针对性的方法论支持。希望上述内容能够帮助大家建立起对嵌入式技术的全面认识...
2. **持续学习与成长:** 不管选择哪条路,都要保持学习的态度,不断提升专业技能和个人能力。 3. **拓宽人际网络:** 无论在哪个领域,良好的人际关系都是成功的关键因素之一。 4. **适时调整规划:** 随着市场环境和...
### Linux-Arm嵌入式学习步骤详解 #### 一、为何选择嵌入式?...对于有志于此的IT人才而言,通过系统的学习和不断的实践,不仅可以弥补当前的人才缺口,还能在职业生涯中获得持续的成长和高薪回报。
此外,技术系统的岗位管理之路还包含了轮岗制度,如研发和制造部门在经理级以上可进行频繁轮换,工程师可以轮岗至质检工程师,但技术经理不能降级为工程师。 【财务系统】的岗位矩阵涵盖了从出纳、会计到财务总监的...
在电气工程领域内,个人的发展路线可以多样化,包括但不限于设计、测试、维护、研发等方向。对于从事电气工程工作的人来说,制定一个科学合理的职业生涯规划书,是个人职业发展的关键一步。 首先,电气工程师在制定...
晋升空间通常包括技术路线(如架构师、领域专家)和管理路线(如产品经理),但不论哪条路线,都需要持续的技术提升和良好的沟通能力。 2. **技能要求**:计算机行业重视实际能力和基础理论知识,例如算法、数据...
如下是C ++后台开发技术路线以及知识点,这里有很多细节,还需要不断完善。欢迎大家通过或者加我与我交流,一起成长一起进步! 以下没有连接的内容就是还没有写,笔者正在拼命赶草稿...。 C ++ primer B站视频讲解 ...
在具体的例子中,如【附图二(a)】的技术系统岗位管理之路,展示了不同部门和技术职务的晋升路径。例如,从研发副总到质检部经理,需要经历不同的岗位轮换和职务晋升。而在【附图二(b)】中,还提到了轮岗类和晋升类...
3. **网络安全与渗透测试**:实训者在智能业务本部担任安全研发工程师,从零开始学习WEB安全和渗透测试,强调了主动学习、解决问题和与导师沟通的重要性。作为实训负责人,还提升了组织协调和时间管理能力。 4. **...
华为的成长过程中充满了坎坷,但其始终坚持自主研发的路线,逐渐成长为中国的“民族企业”。华为初期的研发主要集中在通讯设备领域,从代理销售国外产品开始,逐步积累资本,同时通过自主研发提高技术积累和产品竞争...