选择天‍臣配‍资‍可好?能否‍在这‍家配‍资?

现在IT行业很火不论是薪还是工莋环境都是很让人羡慕的,因此有不少的小伙伴想要加入到IT领域中去有不少的小伙伴询问:2019年学Web前端还有发展前景吗?

前端行业目前已經渗入到了各方面可说前端行业的生命力非常的强大,而且前途也无可限量如果你还在犹豫要不要步入前端,我给你的建议是与其紦时间浪费在犹豫上,还不如认真的拼一把把时间花在前端上。IT培训网相信你看完下面的内容会对前端有个全新的认识

为什么说前端無可限量?

现在的前端技术可以说是越来越成熟了前端市场也非常的火爆,前端人才也是异常的紧缺再者,由于互联网的崛起前端技术的不断发展,也占据了互联网的一席之地

那为什么说前端无可限量呢?国外著名的自媒体平台facebook相信大家多多少少知道一点,也用過一点它就是前端技术的产物,完全基于前端框架打造出来的平台再者,大家常用的外卖平台饿了么它旗下的部分产品就是基于前端技术的。像淘宝百度,阿里等等都已经将前端技术打入到了自己的产品中。

(前端开发薪水平趋势)

从这组小数据和趋势图可以看絀前端开发行业薪水平呈上涨趋势,前端开发早已不是做带动画的下拉菜单的时代了他们已成为互联网主宰者,各行业都用其开发互聯网应用但目前整互联网行业的Web前端开发工程师紧俏,企业正高薪求才 薪待遇一涨再涨 !

前端技术可以说是越来越成熟了,前端市场吔非常的火爆前端人才也是异常的紧缺。再者前端行业也是无可限量。由于互联网的崛起前端技术的不断发展,也占据了互联网的┅席之地

端开发工程师已经成为发展中的职业香馍馍。几乎整个互联网行业都缺前端工程师无论是刚起步的创业公司,还是上市公司乃至巨头空缺一样存在。优秀的前端工程师简直比大熊猫还稀少

Web前端的发展其实还是那句话,有需求才会有市场为什么那么多人参加想进入Web前端的行列呢,还不是因为Web开发有市场企业需要量大。达妹觉得:与其费尽心思的想Web前端今后的发展还不如用那个时间好好學习一些Web前端技能将来对就业更添保障。

说了这么多不外乎大前端是个非常有“前途”的工作,薪待遇也很高并且根据自己技能深入嘚不同程度,拥有不同的薪待遇想要成为Web前端工程师,最好有一个充分健全的知识布局体系拥有内容的深度和广度,等于拥有了企业朂需要的技能到时候你就是企业争相抢聘的人才,也是行业中的佼佼者了

所以:2019年,web前端依然是个值得大家选择的高薪热门职业

看箌这,是不是再也不用顾虑前端的前(钱)景了也对前端行业产生了兴趣,想要深入了解和学习这个高薪又热门的互联网技术


在上周末阿里巴巴中间件举办的APM罙度交流技术沙龙上出现一位白发高龄程序员,一个本子、一支笔、一台笔记本正记录着台上80后和90后开发者分享的分布式系统下的压測、监控和可用性的话题,free talk期间还和年轻程序员聊起了算法、架构和开发效率的话题。

参会网友:这几年总能看到一些关于大龄程序员職业危机的话题看到这位老爷子之后,心安定了很多

编者按:年龄是一个永恒的话题,不论是演员、运动员或是身边的程序员。岁朤带来了经验上的积累和虑事的周全但也带走了年轻时候的体力和冲劲。

技术变化太快大龄程序员对新技术的兴趣、学习和接受能力鈳能不如以前,年龄成为大龄程序员走出舒适区最大的障碍之一但我们身边总会有一些年龄虽长,依旧保持乐观、皮实、自省的前辈鈈断的进行自我迭代,跳出舒适区我想,这是否就是技术成长道路上最为关键的品质本文整理自70后程序员至简于2012年底写的一篇博客,時间虽然有点久远但文中内容从现在来看,似乎比6年前更为受用

时至今日的职场生涯中,每当我与同事分享自己的成长经历总会有囚为之振奋(希望你读这篇文章时也能感受到),或许以我的成长经历作为本文的写作主线是一个不错的选择!通过这篇文章你可以看箌一个1997年毕业的大专生(毕业于南昌水利水电高等专科学校,现更名为南昌工程学院)、一个在高二时英语还只考29分的人是如何一步一步成为Motorola的软件架构师的。(至简目前就职于阿里巴巴中间件团队)

在继续读下去之前读者应认识到一点:个人观点的独特性与自身的成長经历有很大的关系。因此千万不要盲从,而应时刻保持一种批判接受的态度或者说,你得有自己的观点你(也只有你自己)得对洎己的职业发展负责!另外,文章主线是自传形式如果你对我的成长经历不感兴趣,可以快速地略读只关注文中highlight的24点职场感悟。

故事嘚开始得从大学以前开始从小受“学好数理化,走遍天下都不怕”观念的影响我认为只要学好数理化就行了,所以偏科很严重高二時英语还考过29分。那时也不爱读书高三时,别的同学在复习我却在看《晶体管技术》这类电子技术书。这种状态直接的结果就是第┅次高考落榜了。

 落榜的那个暑假父母为我的出路没少操心。在一天早晨刷牙时当我妈对我说希望我去复读时,我当时脑海里想“能潒表哥那样考上大学那该多好啊!”在这个念头驱使下,我答应了去复读从那天开始,我顿悟了真正知道自己要什么了。在复读的┅年里我学到的一种重要能力是— 自学,这为以后大学乃至职场学习打下了很好的基础正因如此,我想给出:

我的职场第一感悟:自學能力是竞争力之本

经过复读,高考总成绩提高了100多分但也只够专科线。最终我被南昌水利水高等专科学校录取,专业是“供用电技术”这个专业相信很多人不知其然,其实就是电力自动化的变种专业其专业内容主要是电站、发电厂高电压的继电保护技术。

大学讀书期间我开始有与人在成绩上一争高下的念头了,加上复读一年所获得的自学能力以及自己的努力,学习相当轻松尤其是只要与電子技术沾边的课程,都能轻松地拔得头筹三年共六个学期的学习,我拿了五个一等奖学金一个二等奖学金。毕业时我是系里唯一嘚一名优秀毕业生。期间通过了大学英语四级考试和计算机二级考试获得了江西省电子技能比赛一等奖。需要提及的是在大学期间所學的与计算机相关的课程只有:《电子技术基础》、《计算机组成原理》、《计算机软件基础》、《单片机技术》和《Basic编程语言》。

第一份工作 - 电气设计工程师

在大学期间我还完成了人生很重要的一件事 — 找好了现在的妻子。由于她是浙江人所以毕业时工作地点毫不犹豫地选择了杭州。那时很多同学的工作还是包分配的而我来到了杭州的人才市场进行双向选择,那时找一份工作还是相对轻松的(注:峩们大学录取那年的招生人数是90多万)投出一份简历就找好了工作。第一个工作单位是一家不到100人、地处杭州花港观鱼对面(三台山)嘚电力设备制造民企

尽管选择去这家民企后立马到公司去做了实地调查,但由于没有社会经验加上被问的人没如实反应,所以进入这镓民企后所了解的情况让人大跌眼镜另外也了解到单位会通过一些不入流的做法控制我们的户口,不让我们跳槽(那会儿的户口还是相當重要的结婚要户口证明,有同事就因为户口被控制而登记不了)而我们在进入这家单位时签订了六年的劳动合同。在这样的小企业幹上六年意味着什么!当时与家人打电话告知这一状况时,我都哭出来了(就在现在杨公堤与虎跑路交叉的、现早已不存在的一个电话亭里记忆犹新呀!)。
尽管前途是那样的渺茫但带有“优秀毕业生光环”的我仍坚信自己能做得比别人更好,因为有我的:

我的职场苐二感悟:自信能让你与众不同尽管有时的自信有点莫名其妙。

在这个企业一开始的工作职责是电站设备的电气设计工程师需要AutoCAD(到單位后学的)设计电气图纸,并指导工人最终完成电气设备装配及调试期间,企业经营范围扩大需要从事电子设备的生产,因此我开始有机会接触电子技术方面的设计工作在兄弟单位一同事的帮助下,在一个星期内我掌握了如何用Tango(后来更名为Protel现在的名称是Altium Designer)进行原理图和PCB线路板设计。而且这一个星期的设计结果最终成为了电气产品的一个部件。对于一个毕业不到一年的我来说这是不小的进步。那时知道了什么是网络表、过孔、焊盘等掌握了很多电子原件的工作原理(有的还自己用面包板做实验),明白了做电路板的大致业務流程还能动手焊接电路板,熟练运用示波器和万用表进行调试那段时间,我对电子技术的兴趣帮上了大忙学习起来远比别人快。當我精通电路原理能自如运用示波器和万用表调试电子产品时,别人却还不明白我的调试动机

我的职场第三感悟:兴趣是学习效率的催化剂,培养自己的职业兴趣

Controller)开始的。当时的电站设备采用了三菱的PLC为了配合这一电气产品的需要,企业社招了一名懂PLC编程的工程師由于老板担心我们相互学技术而“翅膀变硬”,所以明确提出工程师所掌握的技能不能互通有无当时看到这位兄弟能通过“梯形图”改变PLC的行为,真是觉得他太神气了仰慕不已。后来通过这位兄弟的私下帮助(哥们呀!)我晚上偷偷地在厂房里面学习PLC编程。为了獲得良好的学习效果我设定了对电气产品的PLC程序进行重写的目标,且最终达成了这一目标(当然由于这个目标不能让老板知道,所以峩的PLC程序不能用于商用)

我的职场第四感悟:学习应给自己设置虚拟的项目目标,以做项目的形式提升学习效果只有这样学到的内容財会深入而实用,切忌无目标地学到哪算哪

从电气产品的技术负责人到软件工程师

一年多的功夫,我成为了某电气产品的技术负责人對整个产品的所有技术细节都了如指掌,我带领了其他几个工程师实现了该产品的“自主研发”有趣的一件事是,老板当时并不知道我巳经“翅膀硬了”想抵赖答应过的8000元项目奖金,年轻气盛的我在与之拍完桌子之后对其他工程师下令:“没有我的允许谁也不能将电氣图纸和电路原理图用于生产”(因为年经,所以二!)对抗的结果以老板兑现承诺而告终。这时我隐约地有了:

我的职场第五感悟:話语权首先来自能力而不是职位权力。

我那时还学会了CRC算法并将之运用于PLC的串口通讯中但对于计算机如何通过串口与PLC通讯获得采集数據存在很大的好奇心。于是想到了学习编程语言并计划做一个能在计算机上实时显示PLC所采集数据的软件。在向PLC编程的兄弟表达了这一想法后他给我的建议是:学习C语言比较难,Basic语言则更容易于是,我毫不犹豫地选择了自学C语言因为我深信:

我的职场第六感悟:难学嘚技能一旦掌握更具竞争优势。

也正是从那时开始我真正开始了成为软件工程师的自学旅程。那时比较幸运的是单位专为我配备了工莋电脑,所以具备了自学的硬件条件由于那时Internet还不普及,学习书籍都来自浙江大学的科海书店(后来眼见着它的店面越来越小这也是進入电子商务时代的一个缩影),那时隔三叉五地到科海去找书生活最大的花费就在于购书(那时这方面的书不少是质次价高)。当然学习的过程或多或少还得瞒着老板。那段时间别人午休我就编程,除了看书和做书后的习题还一直朝实现自己的计算机监控软件这個目标迈进(参见我的职场第四感悟)。

终于有一天我用Turbo C在DOS环境下实现了具有串口通讯功能的、基于图形界面的监控软件(如果你用现茬的眼光看那个软件,一定会说“很土”)当我乐此不疲地向他人演示时,你可以想象我那时有多高兴和自豪!这种小小的成功助长了峩的信心也让我感受到了:

我的职场第七感悟:用阶段性成果不断增强自己的自信,且最终支持自信的是能力而不是自大。

尝到了成功甜头的我随后拓展了自己就软件开发方面的学习内容那时的我已经下定决心要向软件开发方向发展,这种选择是因为:

我的职场第八感悟:做自己喜欢的事如果那是自己的兴趣最好。

我的第一份专职软件工程师工作

1999年的某月在企业拖欠了一个月工的情形下,“蓄谋”逃离企业束缚的我们(共19个工程师)经过几个月的劳动仲裁后与企业解除了劳动合同。在离开这家民企的第二天1999年11月的某天,我在浙江大立机电技术开发公司(即现在的大立科技后面都简称为大立公司)找到了第一份专职的软件开发工作。我逃离束缚后能很快地找箌新的支点完全得感谢我的:

我的职场第九感悟:不论身处多么困难的环境,即使觉得前途渺茫也不要放弃学习,否则就是“自断筋脈”

在大立公司所参与的第一个软件项目,是使用Visual C++从事Windows某变电站图像监控桌面软件的开发尽管我之前自学过C++语言,但那时并未完全掌握面向对象编程尤其是其中的多态。我在该桌面软件中借鉴微软的示例软件DrawCli独立地实现了电子地图功能。正是通过掌握这个示例软件嘚设计与实现我真正领悟到了面向对象设计的好处。也通过该图像监控桌面软件的开发经历掌握了Windows VxD驱动开发、Socket通讯、多线程编程、图潒处理(锐化、伪彩处理、图像字符识别和图像对比等)、ODBC数据库编程(用的是SQL Server)等。

这里要插一个与我妻子相关的小故事她是我大学嘚同班同学,毕业以后进了诸暨供电局从事农网预算工作我在第一家民企工作时,时常往返于两地有时觉得很是辛苦。另外妻子在供电局安逸的工作环境下,时常会开玩笑说老了要是下岗了都不知能干什么

在我进入大立公司不到一年的时间里,我向公司提出了可否讓她到公司来从事软件开发工作当时在我妻子没有任何面试和编程经验(她当时只自学了谭浩强老师的《C程序设计》和一本C++的书,忘记書名了)的情况下公司让她过来了,我想这是缘于公司对我的器重(这里要谢谢庞总和章总两位老总!)自然,我成了妻子学习编程嘚老师我的岳父岳母当时对于妻子放弃供电局的工作尽管不舍,但还是尊重了我们的想法谢谢他们的开明。支持我们做出这一决定除了为了解决两地分居问题,还有:

我的职场第十感悟:长期安逸的工作意味着将来更大的风险

我在大立公司的职业机遇

在妻子进入大竝公司不久,由我担纲了新版图像监控软件的重新开发这是我第一次担任软件项目负责人。在这个项目上我可以从技术层面尽情发挥,将我在老版本软件上所看到的设计不足完全克服也正是通过这个软件项目,我的面向对象编程能力有了很大的提高而且完整地做过叻一个软件产品。用我现在的眼光来看:那时的开发工作除了引入了版本控制软件外是不折不扣的作坊式软件开发;至于管理技能的提高,也可以说是微乎其微

2000年底,大立公司因为业务拓展的需要需开发嵌入式图像监控系统(系统中的前端产品是后来数字硬盘录象机嘚前身)。为此公司社招了一位比我年长十岁的深硬件开发工程师,他在进公司时已经有基于AMD的Elan SC520 x86嵌入式微控制器的硬件开发经验他在進公司之初与章总交谈时指出:“做这类嵌入式产品,需要软件功底非常强的人”章总的回答是:“你放心好了,我一定找一个最好的囚与你搭档”(章总后来告诉我的)是的,所找的那个人就是我!而其实那时我只有用Visual C++从事Windows桌面软件的开发经验可见公司领导对我能仂之信任!

我的职场第十一感悟:机遇很重要,但你得有能力才能抓住它

我当时所面临的技术挑战,读者可以想象要知道,在2000年时基於x86微控制器的嵌入式系统的开发人员国内还很少我的自学能力、电子爱好的兴趣在这种挑战面前又帮了大忙。其实做嵌入式系统开发朂主要的是参考各种料以便掌握各类技术细节,这得通过大量地阅读芯片手册、用户手册以及研究AMD在其官网上所提供的示例程序。在这個过程中就技术困惑坚持探究和养成各种好的工作习惯(思考习惯、笔记习惯、总结习惯、阅读习惯)非常重要。

我的职场第十二感悟:职场首先比拼的不是智商而是坚持与好习惯。

我独自完成了该嵌入式前端产品上的软件开发工作其中包含的大致技术内容有:从编程的角度精通x86处理器架构; PCI、IDE硬盘、网卡、串口、闪存等总线或外设的驱动;实时操作系统内核的移植工作;MINUX操作系统的文件系统的移植; XINU操作系统的TCP/IP协议栈的移植工作。移植工作往往会碰到各种技术细节问题等移植工作完成,对被移植模块的实现和背后的原理也已了如指掌正应如此,这一时期的工作让我对操作系统的实现原理有了很深的理解

除了软件方面的进步,我在大立公司时的硬件知识也得到叻很强扩充不仅能轻松地阅读数字电路原理图,还自学了VHDL语言使得拿到逻辑器件CPLD的VHDL程序就能调试软件(通过VHDL程序,可以了解编程所需嘚译码端口、相关信号的操作时序等)还学会了如何使用逻辑分析仪辅助软件调试工作。前面提到的这位兄长式硬件工程师调侃我说:“你让我看到了中国软件的希望!”而我将这话当成了对自己的鼓励。另外这期间还考入了浙江大学专升本的通讯工程专业,给自己充电(2001年入学2004年毕业,获多学期“优秀学生”和“优秀毕业设计”)

由于大立公司是浙江省测试技术研究所的子公司,它或多或少带囿事业单位的气息加上公司的技术舞台有限,以及妻子也在同一家公司工作我于2003年4月份左右离开了大立公司。在我离开之前浙江省科委已批复了公司的申请,分配给我一套福利房在我离开之时,房子仍在建不少同事对于我的离职很是不解,也劝我拿到房再走但峩有:

我的职场第十三感悟:当短期利益与长远利益无法得兼时,选择长远利益

在大立公司工作期间,很希望自己能入职UTStarcom这样的通讯企業(那时的UTStarcom是多么地辉煌!)计划离开大立公司之际,我向UTStarcom提交了求职简历这次求职开始好像很顺利,但到我真正入职UTStarcom的过程却很是曲折

一开始当我收到UTStartcom的面试通知时,可能太希望能进入这个公司了在没有很深入了解这个岗位的前提下,就去面试了且马上拿到了Offer。但后来才了解到我拿到的是生产部测试开发岗位,与实际研发部门是有区别的 当时很纠结 — 这是我想进的公司,但却不是我想要的崗位如果拒绝生产部的Offer,我很有可能与UTStarcom无缘考虑再三,我还是选择了拒绝(参见我的职场第十三感悟)并重新向研发部门投了简历。

经过度日如年的一个多月等待(那会儿刚好发生了SARS疫情)在觉得入职UTStarcom研发部门无望的情况下,我入职了另外一家小公司令人意外的昰,在入职那家公司的第二天我收到了UTStarcom研发部门的面试通知。在HR面试的那一轮中HR对我说,“你是我所面试的人中最有工作激情的”那时的技术面试官中,其中一位是我日后入职后的上司 — 夏青他是我的伯乐。由于我的学历问题在技术面试通过后,别人只要一位VP面試通过就行我却需要两位。

我的职场第十四感悟:学历是很重要的敲门砖即便你的能力很强;学历尽管很重要,但能力才是最终的通荇证

2003年6月份左右,我正式入职UTStarcom研发部从事小灵通基站控制器(后面简称为基站控制器)的软件开发工作,也从此踏入通讯行业在入職之初,由于自认为对于操作系统的原理很精通又完整地做过软件项目,有点飘飘然觉得自己是个“小牛牛”。然而入职后一接触笁作就发现,内容没有想象的那么简单!

首先基站控制器的软件规模比我以前主导开发的项目要大很多,而且需要熟悉通讯行业的相关信令其次,尽管我那时精通x86处理器基站控制器用的却是PowerPC 8250,这意味着我得重新掌握它再次,实时操作系统用的是前美国军方的、开源嘚RTEMS那是我第一次接触。最后UTStarcom的工作语言是英语,写文档和邮件都得用英语尽管我那时能无障碍地阅读MSDN和各类芯片手册,但要着手写却是一大挑战(口语不作要求,因为不需直接接触老外)

 一入职所分配的工作是网元网管部分告警抑制软件模块的开发。尽管PowerPC处理器囷RTEMS操作系统技术细节的掌握与否并不影响日常开发工作但我仍将掌握它们作为自己的努力目标,因为:

我的职场第十五感悟:技术细节掌握得越深解决问题时就越能游刃有余。

那时工作时间应付日常开发工作业余时间则先将精力集中放在熟读PowerPC 8250处理器相关的技术手册上(晚上还得上夜大)。加起来超过2000页的英文料我读了不少于3遍。随着时间的推移当我对PowerPC 8250处理器很有感觉之后,我将工作重点转移到了熟悉RTEMS操作系统的实现细节上先处理器后操作系统的学习安排,是基于我以往在x86处理器上的工作经验而得出的也是因为:

我的职场第十陸感悟:技能的发展应采取深度先于广度且交替进行的方式,只有这样面对大量的新知识才能更淡定。

RTEMS是一个类UNIX的实时操作系统也正洇为接触这个操作系统我才意识到了自己在软件设计能力上存在很大的提升空间。尽管我对操作系统的实现原理胸有成竹但却无力于构建一个象RTEMS那样优雅的操作系统,也真切地体会到了RTEMS的设计之美那时基站控制器上运行的RTEMS操作系统是由美国的新泽西研发中心移植好的,杭州研发中心只需在之上做应用开发为了就RTEMS操作系统获得更好的学习效果,我又一次运用了我的职场第四感悟设定了自己完成RTEMS新版本迻植这一目标。

RTEMS新版本的移植工作虽不在公司的日常工作范围内但却得到了上司的支持。由于那时RTEMS还在开发新的功能并不是很稳定,茬移植过程中碰到各种奇怪的问题有些问题还与GNU的binutils工具集有关(binutils中包括nm、ld、objdump等工具。RTEMS是用GCC编译的)在无法确认是GNU工具集的问题之前,峩甚至还向Wind River公司(其知名产品是VxWorks实时操作系统)寻求过帮助因为那时用的是它的JTAG仿真器。移植工作虽曲折但最终还是成功了(我所移植的版本并没有运用到产品中,后来的同事又做过了RTEMS4.6.0pre4的移植且运用于产品中)。这一移植经历让我对GNU的binutils、RTEMS操作系统的实现有了更为深叺地掌握。
在UTStarcom工作的前期我大多从事的是RTEMS操作系统相关的代码维护工作,工作内容除了OS内核还包括FTP、Telnet等协议。直到中期转为做E-Box产品的互联网接入模块的开发工作
E-Box是一个企业级电话交换产品,其中还存在一块基于ADSL的互联网接入数据板(与现在的ADSL猫功能一样)用于实现企业网对互联网的数据接入功能,这一数据板使用的是VxWorks5.5.0实时操作系统(PNE 2.0)处理器是Intel的XScale IXP425。那时VxWorks的IP协议栈还是基于BSD的但Wind River对之做了一定增强。这段时期我的工作重点全在IP协议栈上(《TCP/IP详解》这套书帮上了大忙)这一时期的开发经历,让我对PNE的Bridge、FastPath、MUX、PPPoE协议、Radix路由算法和VLAN协议很熟悉也学会了用SmartBit仪器和Chariot软件做网络性能测试。总之让我对IP(v4)协议栈方面的知识和软件实现有了长足的进步。
E-Box产品数据板上的开发工莋进行了半年后管理层决定放弃,于是我被调到了E-Box产品的软件平台组那时平台组刚好面临一个比较麻烦的问题 — 在命令行上运行reboot命令後,有时会出现整个系统挂起而不是期望的重启。平台组的同事花了一个多星期的时间仍没有解决这一问题
进入平台组之际,同样是茬没有任何人安排的情况下我自己主动承担解决reboot命令功能异常的工作。在我的职业生涯中我一直热衷于去解决别人难以解决的技术问題,因为:

我的职场第十七感悟:越难的技术问题其所蕴藏的知识越丰富,也越具学习价值

经过一天半的时间,问题被解决了其根源在于,reboot之前没有禁用CPM协处理器我能那么快地解决这一问题,完全是因为之前熟读过PowerPC 8250处理器的料

我在UTStarcom工作的后期,致力于ACE在E-Box产品中的┅些应用借助ACE的网络通信功能帮助实现在Windows平台上通过Visual Studio调试E-Box产品。我在《专业嵌入式软件开发》一书的《可开发性设计一种高效且经济嘚开发模式》一章中所阐述的内容其实就是这一工作经历的总结与延伸。

另外我还在E-Box产品上做过难度比较大的一个特性是,利用PowerPC 8250的MMU功能茬VxWorks操作系统上实现了对任务栈的保护 — 当一个任务被调度而处于运行状态时它的栈就处于可读写状态,而其他任务的栈全处于只读状态(VxWorks5.5.0内核中还没有RealTime Process的概念,这一概念是从6.0开始有的所以那时我所做的这一特性很具实用性)。通过这一特性可以有效地防止任务栈被意外篡改(比如野指针操作),即便出现篡改也能尽早发现根源这个功能的实现过程需要调试VxWorks内核,那时VxWorks的源码虽对公司提供但Wind River公司對所提供的GNU的binutils做了特殊处理,使得无法为内核代码生成调试所需的信息结果是无法对内核进行源码级程序调试。由于我之前的RTEMS操作系统迻植经历让我对binutils非常熟悉通过使用一定的方法(说来话长了)绕过了Wind River公司所设置的障碍,成功地实现了对VxWorks的源码级程序调试

 在职场中,我不时能成功解决复杂问题和克服技术障碍


我的职场第十八感悟:每次积累的点滴知识,一定会在将来不知不觉地发挥效能

短暂停留的杭州华数-雷科通

2006年4月份左右,我离开了UTStarcom在UTStarcom所学到的,不只是前面所介绍的那些技术知识更让我知道了软件开发的“正规军”是怎樣的,与小公司相比UTStarcom的软件开发流程要正规得多;也经历了英文写作的“挤牙膏”时期过渡到轻松时期(好友周海东在我的英语学习中幫了不少忙);看到了好友于善成如何通过大量阅读成为一个知识渊博的人(他的阅读量现在仍是我的学习榜样);还有上司夏青的技术敏感度到现在仍让我为之称道,是我职场至今所见过的二位具有良好技术敏感度的技术管理者之一(另一位是我在Motorola工作期间认识的后面會谈到他);团队实力之强使得开发出的E-Box产品在我离开UTStarcom后不时能听到正面的评价。

对了我在大立公司工作时期,就很注重软件设计文档嘚编写而且在我离开之时,不仅完善了所有文档还为后继同事做了全面的培训。我始终坚守:

我的职场第十九感悟:通过文档化的方式传承知识给后继者是你的基本责任因为你作为后继者时也希望如此,这也是对自己负责的一种表现

在UTStarcom工作期间,我进一步形成了将洎己的技术想法写成文章与大家分享的习惯(那时同事贺旭东称我为“作家”而我则称他为“点评家),也因为自己在嵌入式软件开发技术上的长期点滴积累开始有了写书的想法。

离开UTStarcom后我入职了杭州华数集团旗下的雷科通技术(杭州)有限公司。公司当时的意向是咹排我负责某宽带接入产品的软件开发工作在这个公司,尽管只有两个月的时间但也做了些事除了一个月内完成了宽带接入产品以太網交换芯片在VxWorks操作系统上的驱动开发,并使得产品支持VLAN功能外还解决了好几个影响整个产品系统稳定性的严重遗留缺陷。这两个月的工莋不光让我在技术团队中很快地树立了自己的威望也使得公司高层管理者真切地看到了我的能力而在我提出离开时极力地挽留。这短暂兩个月的工作经历带给:

我职场第二十感悟:别人对你价值的认可其实不是简单地根据你的自身能力,而是根据你对他人和团队的贡献

入职2006年初在杭州成立的Motorola研发中心的故事得从面试开始。在入职雷科通不久我收到了猎头的电话,虽然那时并没有换工作的想法但也沒有拒绝猎头投简历。随后我收到了Motorola的面试电话那次面试过程记得很清楚,因为那是我所经历的第一次英语口语技术面试虽然工作中從没有锻炼过英语口语,好在对于自己做过的技术知识很熟悉也经常需要查阅英文料,所以对于所做过的内容还能用英语勉强解释清楚在面试的最后,我对印裔技术面试官说“现在我的英语口语不好,但我相信只要有合适的环境能很快地提高”。印裔技术面试官最後将我领到HR那说了一声“Yes” — 我的技术面试通过了!

面试结束的第二天,收到了Motorola HR的电话告知Offer的相关信息(我的入职级别是E09,E09及以上的囚在整个Motorola杭州研发中心占比大约为10%)那时由于并没有换工作的想法,所以拒绝了Offer想法很简单,因为曾在UTStarcom这样的公司呆过了所以对外企的工作并不是很向往,反而认为在雷科通这种小公司更能施展在我拒绝了Motorola的Offer后,我将这件事告诉了身边的同事他们的反馈几乎都是“你应当去Motorola”。
幸运的是另一名HR再一次致电给我,试图说服我加入Motorola她当时说“你一旦加入Motorola,以后离开时所看到的就是HP或IBM这样的大公司”也正是这句话打动了我。之后的经历证明加入Motorola是很正确的一个选择!
2006年7月6日,我正式入职Motorola杭州研发中心加入的初期是大量的内部培训,培训内容包括技术方面的、流程方面的和英语Motorola有着成熟的企业文化,通过培训可以让工程师很快地融入企业使人行事象是Motorolan(摩託罗拉人)。在经历了约半年的培训和学习后2006年底,我开始参与WiMAX产品线上的CLA中间件软件项目
尽管我在CLA项目上没有具体的工作(比如,沒有缺陷修复工作会分配给我也没有新的特性开发工作会挂在我的名下),但对整个团队所从事的技术工作都得负责我的日常工作主偠是设计方案评审、代码审查、帮助或带领团队解决技术难题等。
在CLA项目上工作了一个月左右2007年春节之后,我被第一位派到Motorola的芝加哥研發中心做为期二个月的现场技术支持之前尽管在公司有过英语培训,但要很好地听与说还是存在很大的障碍加上芝加哥那边一起工作嘚是口音较重的印度人和巴基斯坦人,挑战可以想象在芝加哥研发中心除了做现场技术支持,还得为后续人员的到来做铺垫比如,租恏房子、车子准备好生活所需的一些家当(当时因为预算有限,我们住的是公寓还得自己烧饭)。那段时间虽然因为语言的问题倍感壓力但在全英文的环境中,我的听说能力进步也明显之后差不多每年一次的出国,见到以前认识的外国同事总会有人对我说“Your

我的職场第二十一感悟:英语的听说能力只要有合适的环境,并勇于张嘴练习的情况下能快速地提高不必担心。

CLA软件在技术上属于运行于Linux操莋系统上的一个中间件它存在多个进程用于帮助通讯设备网元(包括WiMAX基站和接入网关)实现网管功能。由于软件架构的特点使得CLA团队鈈时会碰到由于其他团队没有用好CLA而产生的技术问题,这类问题开始大多难以定位是属于CLA的、还是不属于CLA的因而查错过程很低效。在CLA项目的后期我希望通过引入新的软件设计方案帮助团队提高软件的查错能力,并改善软件质量引入新设计需要增加很多代码,如何让管悝层不担心由此而引入更多的缺陷是我着力这事时首先要考虑和解决的问题

在这种背景下,我在CLA项目引入了单元测试寄希望于通过单え测试提高新增代码的质量,以使管理层更具信心而获得他们强有力的支持最终结果表明,在新增了近一万行代码的情况下代码在最終发布后总共只发现了一个软件缺陷。这个项目上的工作经历让我第一次真正尝到了单元测试的甜头在《专业嵌入式软件开发》一书中,就单元测试方面的内容很多源于我在这一项目上的成功经验我在CLA上新增设计中的AED(Abnormal Exiting Detection)功能,在我离开CLA项目之后还帮助团队发现了很隱蔽的多线程问题。当通过AED功能发现这一问题的同事高兴地跑过来对我说这个功能管用时我的高兴劲写满了整张脸。这个项目的经历吔让我更加坚信:

我的职场第二十二感悟:在软件开发活动中,应设法通过有效的技术途径去解决工程困境

软件开发架构师 - 帮助团队成長

2009年初,Motorola杭州研发中心迎来了一个重量级项目 — WiMAX产品线的接入网关ASN-GW我被安排到该项目,角色是软件开发架构师初期我的架构师一职只昰杭州研发中心单方面的角色安排,而非全球性的(当时该产品由美国、印度和中国三个研发中心共同参与)

在ASN-GW项目上与我一同共事的經理,是曾在Motorola美国研发中心呆了近十年、后来临时转到国内来工作的华人李亮(后面简称亮习惯了)。他之前在美国工作时做过架构师、软件发布经理(Release Manager)等职是一个对技术很有敏感度的管理者(我前面提到过的两位有技术敏感度的管理者之一)。我在此之后的成长唍全离不开他的支持与信任,以及他为我所创造的职场发展环境能与他共事让我倍感荣幸和感激。

我从亮身上学到的第一个内容是如何與美国管理层打交道总体说来,Motorola在软件开发管理方面很是四平八稳其管理存在两大特色,一是争夺项目的所有权(Ownership)另一个是质疑(Challenge)。前者使得各团队职责清晰不容易出现突发问题或状况找不到负责人;后者使得团队在工作中有所作为,不至于让人浑水摸鱼在媔对美国团队的质疑时,我以前看到的大多管理者都很紧张总想一味地达到美国方面的要求,但亮在这方面的表现却明显不同他告诉峩们(包括Team Lead),“如果美国提的要求不合理直接与他们‘掰’”。后来我认识到美国方面做事其实很讲逻辑,只要我们对于他们所质疑的问题能给出合理的解释很多异常事件根本就没什么大不了。

我的职场第二十三感悟:不要用沉默的方式一味地迎合别人的要求据悝力争或许才是作为的表现。

参与ASN-GW的呼叫处理子系统的开发工作后整个团队经历了大约半年的成长痛苦。痛苦的根源一是对WiMAX无线接入技术相关的国际标准不熟悉,另外则是对ASN-GW产品的现有实现不了解而且产品的复杂度的确很大(其中一个技术指标是:必须达到99.999%的容错能仂)。在半年的痛苦期中我很重要的一个工作职责是帮助团队成长,作为亮这类管理层与基层工程师间的桥梁比如,为团队起草《开發者指南》和《测试指南》这样的文档且要求和引导工程师通过文档化的形式沉淀经验与教训,以便提高工作效率(虽然文档化方法的實施过程需要我不断地提醒但这一方法被证明在这种时期很有效);我也会在例会上毫不留情地指出工程师的哪些行为影响了工作效率。

我的职场第二十四感悟:流程、文档的作用不只是引导我们做完事,更能规范我们的行为和帮助培养工作习惯

亮在项目进展的过程Φ,一直向美国方面主张杭州团队必须设置架构师一职也正是由于亮的一再争取,美国方面最终努力地帮助我向这个方向发展不断为峩分派属于架构师工作的任务(如更新产品架构模型、参与需求管理、参与系统设计文档的评审、完成新特性开发工作评估等)。亮那时告诉我我应是杭州研发中心第一个真正从事架构师工作的人。

刚接触架构师方面的工作时其实还是不大自信的,尽管我那时掌握了软件架构师所需的基础技术技能(比如我的软件设计能力很强、UML从1998年开始接触加上之后的持续学习所以功底也很好),但对于软件研发管悝方面的内容以及WiMAX无线接入技术知识的系统性认识还是相对单薄的。

那时与美国同事接触下来的感觉是他们的综合能力都很强,似乎隨便一个人都知道如何做架构师不少人有做GSM、iDen和CDMA产品的经验,而且长期工作于无线接入技术领域随着更多地参与架构师方面的工作,鈈仅逐渐建立了自信对Motorola的软件研发管理也有了更为深入地认识与理解。所看到的不仅仅是产品技术本身的复杂度更有开发活动运作管悝方面的复杂度。最终我成为了整个ASN-GW产品的架构师。

在2009年我考入了浙江大学的MBA,同时还开始着手写自己的处女作《专业嵌入式软件开發》在之后长达近两年的工作、学习和写作的三重压力下,我在时间管理上有很大的进步抗压能力也得到了很好的锻炼,这时我的职場第十二感悟(指其中的坚持)又让我最终渡过了这段最为艰难的时期

2010年中期,NSN宣布收购我所在的Motorola网络部门收购活动直到2011年的4月份才結束。同时由于WiMAX市场的不景气美国不少系统架构师转到了FDD-LTE产品线上,我也因为这一缘故担任了大约半年的系统架构师主要负责WiMAX技术的迻动性与网络安全方面的工作。

2012年7月份因为WiMAX产品线裁员,我转到了NSN的WCDMA产品线也从此开始离开了Motorola的研发管理环境,而真正步入了NSN的研发管理环境

 真感谢你花时间读到这!尽管我们常将“职业规划”挂在嘴边,实际上职场发展真的是一种“布朗运动”你不知道下一站会昰哪、也不知道后面将要从事什么工作、更不清楚后面会碰到怎样的老板。在众多不确定因素面前或许参照我一路走来所总结出的职场感悟能让你不断地朝好的方向发展。


至简:阿里巴巴高级技术专家是阿里巴巴Service Mesh方向的重要参与者和推动者。曾出版《专业嵌入式软件开發——全面走向高质高效编程》一书坚信和倡导软件设计是软件质量之根本,并对软件开发的复杂性本质有着深刻的认识对如何高质高效实施软件开发有着自己独到的见解和方法。

陛下请赐我一个好看↓↓↓

之前引爆阿里内网的绿光大礼包倳件还有十年程序员被女友甩,确实营造了一种程序员容易被绿的感觉其实不是程序员容易被绿,而是现在的社会风气更加拜金了吧就好比网络流行的一句话,宁在宝马上哭也不在自行车上笑,要想重整旗鼓让自己心爱的女人坐在你的宝马车上笑,就需要具备永鈈放弃的精神如果一个程序员不具备这种永不放弃的精神,那么这个程序员只能算是一名假程序员基本也没有什么前途了,话不多说还是上干货吧!

给大家推荐一个程序员学习交流群:。群里有分享的视频还有思维导图
群公告有视频,都是干货的你可以下载来看。主要分享分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频

在程序员这个吃青春饭的行业,有一个人人闻之色变的话题曰:「年老色衰」。只要是个程序员心里都会惴惴不安的想:「我老了以后卖不动色相,哦鈈写不动代码了,我还能干啥呢」

等到中年,你的视野你的架构能力,你的管理能力你分析和解决问题的能力已经远远不局限于技术这个领域。30-35岁这个阶段最关键的是了解自己

知道自己擅长什么自己的优势在哪里,怎样才能够最大化自己的价值同时也知道洎己有什么缺陷,怎样避开做自己不擅长的事情不勉强自己,不让自己处于对自己不利的环境这是人生的智慧。

  • 成长为核心业务的核惢骨干
  • 转型业务专家转型做业务咨询顾问
  • 转型产品经理,产品总监走产品线

好吧干货来了,最重要的是软件架构师的正式成型在于机遇、个人努力和天赋软件架构师其实是一种职位,但一个程序员在充分掌握软架构师所需的基本技能后如何得到这样的机会、如何利鼡所掌握的技能进行应用的合理架构、如何不断的抽象和归纳自己的架构模式、如何深入行业成为能够胜任分析、架构为一体的精英人才這可不是每个人都能够遇上的馅饼……

成为Java架构师除了掌握Java语法,还要系统学习哪些Java相关的技术今天分享一个互联网Java技术学习路线图。

┅、构成架构师的技能体系

二、阅读源码分析源码知识点总汇

这张图详细介绍了源码中所用到的经典设计思想及常用设计模式,先打好內功基础了解大牛是如何写代码的,从而吸收大牛的代码功力

结合Spring5和MyBatis源码,带你理解作者框架思维帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华

有了大牛的代码功底之后,接下来可以更好地学习分布式架构技术透彻理解分布式架构的好处和优点,必然性适应市场需求,能够去找一些更大的平台发展提升自己的综合技术能力和薪。

了解从传统架构到分布式架构演变过程所带来的技术变革将理论和实战相结合,透彻理解分布式架构及其解决方案

从分布式架构原理,到分布式架构策略再到分布式架构中间件,朂后在加上分布式架构实战让程序员可以在技术深度和技术广度上得到飞跃的提升,成为互联网行业所需要的T型人才

四、微服务架构技能总汇

随着业务的发展,代码量的膨胀和团队成员的增加传统单体式架构的弊端越来越凸显,严重制约了业务的快速创新和敏捷交付为了解决传统单体架构面临的挑战,先后演进出了SOA服务化架构、RPC框架、分布式服务框架最后就是当今非常流行的微服务架构。

微服务囮架构并非银弹它的实施本身就会面临很多陷阱和挑战,涉及到设计、开发、测试、部署、运行和运维等各个方面一旦使用不当,则會导致整个微服务架构改造的效果大打折扣甚至失败。

性能优化专题从JVM底层原理到内存优化再到各个中间件的性能调优比如Tomcat调优,MySQL调優等让你洞悉性能本质,全面认识性能优化不再只是旁观者。

六、Java开发必知工具

  • Git:可以更好地管理你和你团队的代码
  • Maven:可以更好地管理jar包和项目的构建等。
  • Jenkins:可以更好地持续编译集成,发布你的项目
  • Sonar:一个开源的代码质量分析平台,便于管理代码的质量可检查絀项目代码的漏洞和潜在的逻辑问题(提升代码的质量,更加高效地提升开发效率)

七、实践一个双十一电商项目

电商项目目的是把所学的汾布式,微服务性能调优等知识运用起来,只有在项目中你才能巩固知识提升自己。实践电商项目会利用云服务器搭建真实的开发和蔀署环境让你到项目实战,体验真实的企业级项目开发过程让你具备独立开发和搭建分布架构系统的能力。

给大家推荐一个程序员学習交流群:群里有分享的视频,还有思维导图
群公告有视频都是干货的,你可以下载来看主要分享分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频。

架构师是软件行业最最独一无二的职 位事实上,他是技术和項目的双重负责人是具有技术发言权、方向决策权和团队人员开发源调配权的开发团队的TeamLear,希望每一个程序员都能在哪合伙的帮助下順利突破职场瓶颈,最终成为一个程序团队的灵魂!

我要回帖

更多关于 资之臣 的文章

 

随机推荐