下周就要去新公司报道了,换城市(离开北京)+换职业(不做开发),这个决定下得其实还是蛮艰难的。最近一直在反思自己毕业后的这五年工作,自感惭愧,找个地方记录下(主要是这里谁都不认识我),也算是自己的一种反醒以及给过来人提点建议,少走点弯路吧。
08年顶着名校硕士的光环加入了一家非常有名的非软件公司做软件开发,刚开始一切其实都很美好。大外企的各种好在头一年给自己带来了很多光环,当然自己也学到了很多(主要是非技术的东西)。可是从第二年开始,当自己被各种邮件,开会和扯皮的事包围后,技术能力急转直下。然而自己当时还没意识到这个问题,感觉钱还行,也不忙,再加上本来就很迷茫,就得过且过了。直到去年,很多清华北大同事的离职,日复一日的简单重复工作,明显的天花板,不涨的工资,以及家庭原因的集中爆发才让自己后知后觉,才开始反醒,才开始下决心做转变。
然而转变是痛苦的,这五年技术上主要是在windows平台上做一些企业内部业务的处理和展示,主要用一点c++/c#,还有MFC,Winform,WPF,WCF。技术基本上是做的皮毛,一般问题用MSDN,google和stackoverflow就能基本解决。用不到数据库,也用不到什么数据结构,用到一点点网络知识,主要精力都在业务展现上。这一切在我看来招个应届生用一年也能有和我一样的开发能力,唯一懂的多的业务,也长进不多,都是繁杂的重复。所以在自己开始面试和找工作时被bs了很多次,顶着光环人家一般都给你面试机会,但是一旦聊到技术细节,自己很多都答不上来,也曾经一度非常沮丧。庆幸最后找了个技术相关的职位,能够兼顾到家庭和自己后面发展的想法,还算可以,这是后话,暂不讨论。
总结这五年不成功的开发经验,现在想想主要问题如下:
- 目标不明确,由于学的专业不是纯软件,自己误打误撞的进来做软件开发,自己一直没想清楚自己的目标,结果导致自己浑浑噩噩的做了5年开发还停留在原地。
- 缺乏坚持,没能坚持一件事情做到底,自己其实在这五年也自学了一些东西,包括HTML,JavaScript,CSS,Python,Java......也看了不少技术的东西。可都很肤浅,一样也没有深入坚持下去,什么都懂一点皮毛,结果就是什么都不懂。
- 不够勤奋,我从小成绩优秀,学习能力很强,缺乏需要非常勤奋投入才能做成事情的锻炼,所以养成勤奋的习惯,到了工作中才发现要取得成功无不需要加倍的努力才行。
此外从一个非科班出生搞软件的角度,谈谈自己对软件开发的了解:
- 做上层开发学了这么多所谓的语言,框架,技术,其实现在想想万变不离的却是底层的数据结构,操作系统,网络通讯和一些其他的基础的东西。自己也算半路出家,以前总是不屑基础的东西,总认为我懂了WPF,能画出很炫的界面什么就很好了。其实却是认识太肤浅,只有掌握了不变的东西才能应付好上层的技术,否则只会被微软牵着鼻子走。所以对新人来说,打好基础是多么重要,可惜我后知后觉了。
- 除了基础的东西,我认为其次重要的是软件架构,好的架构可以让事情事半功倍,让下面实现具体代码的感觉很轻松。说得过分点,一个好的架构师可以带一群实习生的干活都能出好东西。软件开发越来越不需要我们懂底层的东西,很多现成的轮子可以用,但是要知道怎么搭积木就需要好的架构师了。所以我觉得平常要多看好的开源架构,多学习框框的东西,当然轮子和积木知道哪里能拿到。最怕的是像我一样,只会google找积木搭,这就是所谓的纯码农了:(
- 其次是业务,开发很多时候要懂业务,很多开发的很不屑业务,认为技术才最重要。其实很多时候业务才是王道,软件开发在我看来大部分时间都是给业务做服务的,做支持的,公司都是靠业务才能赚钱的。所以开发人员也要懂业务,特别对那种不是很想一直做开发的来说,懂业务又懂技术也许会给你更多的机会。
- 最后是软件开发的职业发展,个人的看法是码农能爬上去做架构师和经理的其实很少,基本一个萝卜一个坑,我见到开发能一直做到退休的都是老外,人家基本没有title的,这样的我观察无非两种人。一种是对业务很精通,同时对技术系统又很懂的,公司少不了他。一种是对技术很热情很钻研,能力很强,又不想去要什么title的,基本可以挑大梁。我想国内的情况虽然不太一样,不过基本可以借鉴下老外。当然不做开发还有很多可以做,我想说的是开发是可以做一辈子的,就看个人的想法了。这个问题我自己也一直在想,目前只有一条模糊的路,也得摸石头过。
以上是作为一个经验尚浅的码农对工作五年的反思,基本是想到什么就写什么,思路有点乱,敬请谅解。
补:早上过来看到居然上首页了,也看到好多同行的点评,谢谢大家的鼓励,我会加油的!
转载:http://runfeel.iteye.com/blog/1873170
相关推荐
### 计算机软件开发实习报告总结中的关键知识点 #### 一、角色转换与适应社会 - **从校园到职场的转变**:实习生从学生身份转变为职场人士,需要学会适应不同的社会角色。在学校,主要任务是学习知识;而在职场,则...
"2019年软件开发工程师工作总结" 本文总结了软件开发工程师的一些经验和感悟,从中可以看到,作者强调了努力、坚持和学习的重要性,并提出了五点经验教训,分别是: 1. 学历代表过去、能力代表现在、学习力代表...
五、软件开发计划书的重要性 软件开发计划书是软件开发过程中不可或缺的一部分,它可以确保软件开发的顺利进行,提高软件开发的效率和质量,並帮助团队协作。因此,软件开发计划书的重要性不言而喻。 六、软件开发...
本资源摘要信息涵盖了软件开发与项目管理的基础知识点,包括软件开发模型、软件生命周期、软件工程、软件危机、软件生存周期模型等。 一、软件开发模型 软件开发模型是指软件开发过程中各种活动如何执行的模型。...
### 软件开发考核指标详解 #### 一、引言 在软件开发过程中,合理的考核机制对于确保项目顺利进行至关重要。本篇文章基于给定文件中的信息,详细阐述了软件开发考核的重要性和具体实施方法。 #### 二、软件开发...
软件开发课件之数据字典五个定义 软件开发课件之数据字典是软件工程中一个重要的概念,涉及到数据字典的定义、数据元素、数据流定义、存储文件定义和外部实体定义等多个方面。下面,我们将详细介绍这些概念,并阐述...
#### 五、总结 通过上述详尽解析,我们可以看出该软件开发管理规范旨在通过规范化、标准化的管理流程,有效提升软件开发的质量与效率。从软件项目的立项、组织架构搭建、开发计划制定到最终的测试与发布,每一个环节...
编码开发阶段是软件开发流程的第五个阶段。在这个阶段,需要严格遵守公司内部的《软件编码规范》,并根据详细设计文档中的要求进行编码。这个阶段需要输出《XXXX 项目技术归档》,并记录编码过程中发现的难点以及...
软件开发安全管理规定是为了加强软件开发的安全管理,保护软件开发中软件和信息的安全。本规定适用于软件开发过程中的需求分析、设计、开发及测试等阶段的安全管理。 第一章总则 * 软件开发安全管理规定的目的:...
软件开发规范文档模板大全.rar 软件业务建模/ 软件分析设计/ 软件实施/ 软件测试/ 软件环境/ 软件部署/ 软件配置管理/ 软件需求/ 软件项目管理/ 一、可行性研究报告.dot* 七、测试计划.dot* 三、需求规格说明书.dot*...
模块集成测试是软件开发过程的第五阶段,旨在对软件的每个模块进行集成测试,以确保软件的各个模块能够正确地集成和运作。 1.6 系统测试 系统测试是软件开发过程的第六阶段,旨在对软件进行系统测试,以确保软件的...
软件开发社会实践心得体会是一篇关于软件开发实践活动的心得体会文章,通过作者的实践经历,总结了软件开发实践中的经验和体悟。以下是从这篇文章中提炼出来的知识点: 一、实践的重要性 实践是学习和工作的重要...
尽管文章写作于1996年,但对于当今的软件开发领域仍然具有深远的意义。本文将深入分析该文中的几个关键点,并结合现代软件开发实践进行讨论。 #### 二、软件开发的本质 1. **心智活动**:文章开篇便指出,软件开发...
软件开发综合项目验收总结报告是软件开发项目的重要组成部分,旨在对软件开发项目的实施过程和结果进行系统的总结和评估。本报告的目的是为了对软件开发项目的结果进行评价和认证,以确保项目的实施符合客户的需求和...
五、软件开发管理规范的实施注意事项 在实施软件开发管理规范时,需要注意以下几点: 1. 需要根据软件开发的实际情况和需求,制定适合的软件开发管理规范。 2. 需要确保软件开发团队成员都能理解和遵守软件开发...
优秀则需要满足五个条件:材料完整、软件可正常运行、实现项目软件需求说明书要求的各项功能需求、软件界面友好、软件功能新颖,有较强创新。合格则需要满足三个条件:材料完整、软件可正常运行、实现项目软件需求...
### 软件开发的哲学思考 #### 一、引言 在《软件开发的哲学思考》这篇文章中,作者深入探讨了软件开发的本质及其面临的挑战。尽管文章撰写于1996年,但对于当今的IT行业仍然具有重要的启示意义。作者通过对软件...
### 软件开发管理规范知识点详解 #### 一、总则 - **目的与适用范围**:旨在规范公司的软件研发及其外包管理活动,适用于公司总部的软件开发管理,分公司可参照执行。 - **开发类型界定**:明确了新系统开发与现有...
软件工程师优秀的自我总结范文 软件工程师是一份需要不断学习和总结的职业,对软件工程师来说,学习和总结是非常重要的。以下是软件工程师优秀的自我总结范文,总结了软件工程师的八点经验教训。 一、学历代表过去...