很多来达内学习安卓课程的同学都会问这样的问题:在真实工作中的编程是怎么样的?与学校里有什么不同?今天达内安卓培训专家就给出了如下的解答。
首先,一言以蔽之,用两个字来概括,就是“残酷”,但是,好在是加引号的。有的不但残酷,还很无奈;有的则是在残酷的同时,还很有趣。搞工程和学校里的象牙塔大不相同,这也许老早就知道,但是绝对不是七八年前我想象的模样。你可以把它当成我没睡醒的呓语,也可以当成我喝多的胡话,或者是心情太差的时候写的吐槽檄文。反正,它们就在那里,事实就在那里。
总的来说,学校里面编程,或者在工作之余编程,是很有趣的,没有manager给你各种压力,也没有各种大神(比如TMP、PM、SE等等我都搞不清楚干嘛的职位)给你指点江山,你可以自己爱咋弄咋弄。当然,没有了这些“残酷”的痛苦,你没法进化,没法超脱,没法升华。
先说面试,国内的公司很务实,会问更多知识性的问题。而外企则在考察80%的算法+数据结构,以及一点点系统设计,以及沟通交流的能力等等。其中前80%东西都是可以准备的。而应试,恰恰是中国人最擅长的东西。
说道算法,残酷的事实是,绝大多数软件工程师的日常工作,和算法的关系其实并不大。当然,和data analyst这样的职位比我们还是好很多,那个职位简直就是仅次于产品工程师的神级角色了,学经济学宇宙学物理学化工的,只要数学属性可以,只要会讲故事,就可以扯到伟大的数据分析上面,就可以表示“本人具备成为优质数据分析师的潜质”。
工作后很多时候,我们将会面对各种各样的问题,发现各种乱七八糟奇形怪状的问题,各种在学习新技术的时候,看着那些玩具代码和hello world的时候,根本不可能想到的狗血问题会全部冒出来。就改了一行代码,居然这东西就不work了?就加了一个小小的feature,整个系统居然就挂掉了?于是,从外往里连分析带搜索,连Google带StackOverflow地试错方能解决问题。代码修改了要反复测试,测试的时候要考虑各种情形,调用一个API的时候说要接收一只老鼠作为参数,必须要考虑如果对方传过来一头大象怎么办。搞完这些东西,才可以去尝试code review这个苦难重重的关卡。最后很可能面临着更加繁复的修改与调试。
到了线上,还会有更多挑战在等待着。比如项目发布,比如on call(改线上问题)。总之,当一旦遇到问题,你就必须及时的给予处理,看看是不是service又挂了?是不是又不能访问了?所以不用怀念学校里那些美好的熬夜打游戏的美好时光,你会迎来新一轮的熬夜改问题的美好时光。
来回折腾若干次以后,环境终于搞定了,code review终于审过了,代码终于push了,集成测试终于跑过了,部署到线上终于没问题了……这个时候你才会获得满满的成就感,作为一个安卓工程师的满满成就感。