本文主要是介绍抱歉,软件开发不是你想的那样,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这篇文章写给初入职场的同学。
毕业刚参加工作,正式进入项目组,会对软件开发行业有很多不切实际的憧憬和期待,但现实和期待大为不同,下面列出了Top 5。
1. 到处都是遗留代码
在大学的时候,我做过几个项目,每次都是从头开发,验收完就结束,开始下一个。
但实际的工作从来都不是这样,我十多年的工作经历,从第一行代码开始开发的项目,记忆中只有三个,没错,只有三个!
剩下的全是在现有的代码上修修补补,添加新的功能, Fix Bug。
这就意味着必须要理解这些遗留代码,这是一件极为痛苦的事情,因为这些可以工作的代码通常发展了几年,甚至十几年,经历了血与火的考验,无数程序员在上面或好或坏地在上面添砖加瓦,最后变成了一座让人畏惧的大山。
在处理它们的时候得战战兢兢,只有经验非常丰富的老家伙才能游刃有余地在其中来回游走。但是作为新人,你必须得迈过这一关。建议你看看这篇文章《没有文档,没有老员工讲解,悲催的新人如何快速熟悉一个新项目?》
2. 我学的那些算法怎么用不上呢?
大学里学了很多基本的数据结构和算法, 队列,栈,树,图,排序,搜索,最短路径, 做了不少习题,到了工作中就想看看他们的实际用途。
可让人失望的是大部分数据结构和算法都用不上,用的最多的是Array, List,Map, 队列和栈都用得不多,更不用说那些树,图,还有那些排序,搜索算法了。
工作中最常见的就是实现业务,很少有业务能复杂到你发明一个新的算法来解决的,大部分都是对数据库的操作。
但是不要沮丧,数据结构和算法的训练还是很重要的,因为它能教会你用计算机的方式来思考和解决一个问题。
3. 软件怎么这么复杂呢?
大学里做的项目都是小儿科,实际项目是非常复杂的,上面说到工作中用的都是简单的数据结构,那开发一个系统应该不会有多少挑战吧?
错!虽然每个小功能很简单,但是当很多很多的小功能聚集在一起,互相发生交互的时候,整个系统的复杂度就骤然上升,这些小功能之间的“微妙”交互常常是产生Bug的温床。
所以在设计中得想尽一切办法去封装,分层,或者把他们做成正交的,可以独立变化的。 你需要不断地学习,实践才能掌握这种能力,一旦掌握就会无往而不利!
4. 沟通很重要
在大学中编程似乎是一个“单打独斗”的工作,只需要做到电脑前编码即可,最多和几个同学和老师定期通通气就行, 但到了实际的项目,都需要深度的有效的沟通。
和产品经理讨论/争论功能。
让其他程序员理解你的设计。
向项目经理据理力争工作量。
和别人一起Review代码。
同测试一起讨论Bug。
......
在这些沟通中如果你不采取一些“机智的手腕”,可能就会碰得“头破血流”,最后被别人贴上一个标签:此人不擅长沟通,难以合作。
5. 写作很重要
对于正规的项目,文档是非常重要的一环,日常工作中需要写很多邮件,写需求文档,设计文档,用清晰的语言来描述Bug,总结Bug的原因。在大学中普遍对写作不重视,工作中就会词不达意,力不从心了。
在大学没有开博客的,工作以后应该开一个了,写作能逼着你梳理你的想法,锻炼逻辑思维能力,真正地理解一个技术点。就是写的时候比较痛苦,也可能没有人去看,没有立竿见影的成就感, 但还是要坚持写,相信我,你的付出会获得回报的!
后记:本文列出的五个想法来自于
https://henrikwarne.com/2012/08/22/top-5-surprises-when-starting-out-as-a-software-developer/ , 我觉得很好,用自己的经历和经验重新写了一遍。
码农翻身公众号开放投稿,可能是全网最高片酬:
用故事讲技术 ,稿费1000
技术/职场/感悟/面试等,稿费700
翻译类文章,每千字200
联系方式:onlyliuxin97(微信)
详情猛戳: 可能是全网最高片酬,速来!
往期精彩回顾
我是一个线程
我是一个Java Class
面向对象圣经
函数式编程圣经
TCP/IP之大明邮差
CPU阿甘
我是一个网卡
我是一个路由器
一个故事讲完HTTPs
编程语言的巅峰Java:一个帝国的诞生
JavaScript:一个屌丝的逆袭
负载均衡的原理
阅读源码的三种境界
这篇关于抱歉,软件开发不是你想的那样的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!