`

关于《如何塑造自己成为一名合格的软件工程师》的讨论

阅读更多
毕业十年了,正值班级十周年聚会之际,我要回母校看看,同时也应邀做一个关于《如何塑造自己成为一名合格的软件工程师》的讲座。

各位都是从学生时代过来的,相信有很多经验与建议要说,我就要听听各位的意见。

我个人的一些先说一说:

1、对编程着迷,好奇,有兴趣,乐趣编程,快乐编程;

2、编码编码再编码,最好的编码都是从实践中得来的,努力增加自已在校期间的有效代码行;在学校里不要除了老师布置的作业之外,却很少自己动手去写程序;要自己多动手;创作从模仿开始,模仿不是创作;

3、要认真学好基础理论,特别是操作系统,数据结构,算法等等;

4、逻辑思维要强,思考问题要严谨,自学能力要强;

5、性格和特长,做程序员的要沉下去,静的下去,不能轻浮,眼高手低;

6、团队协作,现在的软件工程都是团队协作的结果;尝试与同学一起合作完成程序等等,传帮带的作风要继承。

7、一定要多了解用户体验,不要只顾闭门造车,挖掘用户的真正需求;

8、钻研解决问题最简单的办法,而不是“最高级”的办法;

9、多参与一些技术活动交流,比如:开源的工作。。。21世纪什么最重要,人才,通过活动可以结识圈内圈外的人。

最后,在学校里能做的就是,要把基础打好,培养出强劲的自学能力,严谨的思维能力,只要基本素质练好了,在今后的工作当中,再投入相当的时间,自己的成长就很快了。就可以从一名合格的软件工程师向优秀的软件工程师迈进了。。。

暂时想到这一些,慢慢补充。各位一起来吧:)
分享到:
评论
46 楼 darkjune 2007-11-08  
对于国内项目而言,跟用户沟通可能比较多, 但外资公司和外包公司基本和用户是没什么沟通的
45 楼 ssuupv 2007-11-07  
j2ee开发,编译原理,操作系统,系统结构在啥地方能用到???
如果针对如j2ee上层应用开发,我觉得 行业业务知识,跟非软件用户沟通能力,需求分析能力,设计模式运用,数据库设计更重要些.
44 楼 tv9 2007-11-07  
要合格,我觉得必须经过项目的洗礼,在项目的周期中,用心去做和体会,要有坚韧不拔的精神。
43 楼 VerRan 2007-11-05  
上面有大哥也说了,模仿是创新的开始。
很多在校学生不知道怎么去作,怎么去开始,怎么去完成一个系统。
所以可以先从模仿开始,甚至可以找一个自己能够看懂的例子,然后从设计到代码编写重新来一边,慢慢的自己也就可以设计然后开发了。 创新是从模仿开始的又抄袭别人的话了呵呵。。。
42 楼 InnocentBoy 2007-11-05  
liangwj72 写道
不要在乎重写代码,写出来的程序不要能用就算。当自己完成一个程序后,通常总可以有更好的实现方法,如果时间允许,不要怕麻烦,用你觉得更好的方式重写一次,你将发现每一次的重写,都会有很大的收获。

非常赞同这个同仁的说法,实际过程中也遇到过。不过也有一些其他看法。交际能力也是平时要培养的一部分!
41 楼 xingyue 2007-11-04  
我觉得我敲程序太少了,我必须赶紧多多练习,虽然理论知识还可以,但是我不太会用它们,逻辑不是情绪,只是行动才可以,这样才可以使自己在程序方面更加的阶进
40 楼 xingyue 2007-11-04  
那么我也应该多多敲一些程序,灵活运用它们,想一想有没有更好的方法可以代替,熟练使用它们,举一反三,这样我们的技术的手平才会不断的增长,逻辑不是情绪,只有行动才可以.理论知识再好,也要好好的运用它们,这样才是最好的.  
39 楼 ljf9201314 2007-11-04  
我觉得应该告诉他们,别把编程太当回事情,也别把编程不当回事。程序设计语言他就是一类语言,有着自己的文法和语义,也有让人赏心悦目的程序,也就有又臭又长的作品。从学英语中学到了,学好语言得多练,多写有自己思想的代码,当然在自己什么都不会的时候就从记忆开始吧,有些简短的程序段是人类智慧的结晶,是万万不可抛弃的。当然最重要的是要热爱编程!
感谢CCTV,感谢MTV,感谢司令给我这个机会在这里有个板凳边缘坐坐!
38 楼 JavaPanFeng 2007-11-04  

  一开始就要养成编写规范的可读性好的代码的习惯。个人认为可读性非常重要,毕竟维护工作几乎要占据70%的软件开发过程。

  相信代码规范了,可读性好了,对于后期的改进代码质量和提高性能都会有很大的帮助。

  

 
37 楼 bnulz 2007-11-03  
我是在读本科大三的学生,既然lz的讲座面向的就是我们学生,我也提一点。
在学校大体可以把学软件的人分为以下几类:
1。搞ACM,这些人算法和数据结构研究的很多,但大多没有参与过项目。
2。作项目,从网站到企业级应用,有纯学生项目,也有老师的项目。
3。游戏开发,人数比较少,大多数都是兴趣所致,激情很高
4。当然也有混日子的。
我想lz不防针对不同目标和追求的人提出些建议。
36 楼 corlin 2007-11-03  
哈哈,声明,One team One dream是sohu的口号,我只是抄袭,不过本人也深表赞同这个口号。。。很合心声。。。
35 楼 security 2007-11-02  
浏览了一下上面的高论,实在惭愧。
算法,体系结构,编译理论是程序设计的三大基础理论,不过,无论是熟悉任何一样,都足以能做点有意义的事情出来。
不过,还要面对工作和生活的时候,只能先适应工作,日后再补基础,边做边学,理论应该从不断实践中总结....
34 楼 nihongye 2007-11-02  
一句话:读书不是目的,做你喜欢的.
33 楼 wl95421 2007-11-02  
virtualsolo 写道
很重要的一点一定要自信,相信自己的感觉,大胆尝试。很多事情并不一定要有100%的把握才可以去做。个人感觉只要到60%就可以大胆去做,尽全力完成目标。
这话俺不太同意呢
俺是感觉人容易把自己估高
也就是你认为60%的把握,其实只有40%
就算没有100%,至少要有个90%这样才好做的
32 楼 virtualsolo 2007-11-02  
很重要的一点一定要自信,相信自己的感觉,大胆尝试。很多事情并不一定要有100%的把握才可以去做。个人感觉只要到60%就可以大胆去做,尽全力完成目标。
31 楼 dlee 2007-11-02  
其实读书也是很重要的,不过自己一定要勤于思考和消化,并且逐渐养成选择的眼光,清楚知道哪些书对于提升自己的境界是有帮助的。相同层次的书不必读的太多,读上两三本足够了。
例如GoF的《设计模式》和Martin Fowler的《重构》这两本书对于应用软件的开发人员非常重要,读过的和没有读过的理解面向对象设计的能力差别非常大。
读过《设计模式》之后,其余的《Java设计模式》、《C#设计模式》之类的书大多是以不同的语言重复圣人之言,没有必要再读很多这一类的书。

读完了一本书并不是终点,一定要勤于思考和消化,在适当的时候学以致用,最终将其中的知识真正转化为自己知识体系的一部分,并且融会贯通。当然不是说读了一本书之后这本书中的内容一定要在任何地方都用到。其实《设计模式》中对于每种模式的适用场景都讲的很清楚。具体某种模式是否适用,需要靠自己的思考来判断。

以前看到过一个笑话,一位读者写信给GoF的老大Erich Gamma说他最近在一个项目中使用到了GoF 23种设计模式中的21种,还有两种模式没有用到,感觉很苦恼,希望Erich帮助他解决这个问题。

这就是一个非常极端的本本主义教条主义的例子了。另外以前看到某位同学罗列10余本他所认为的软件架构设计方面的经典图书,希望一年之内读完这些书成为一名“优秀的软件架构师”。这种学习精神值得鼓励,但是具体的做法不值得提倡。一下子注入这么多的真气进来,这些真气还有可能相互排斥,运气好的人可能最终像令狐冲一样能够全部化掉,运气不好的人可能很快就会死掉。
30 楼 YuLimin 2007-11-01  
学习编程,必须动手。
29 楼 一名小鹰 2007-11-01  
庄表伟 写道
楼上的诸位都说得很不错了,我就说说我的经历吧

在读书期间,我大一、大二在学校里搞推销,卖各种各样乱七八糟的东西。这个就不提了。
到大三的时候,我们系主任给我找了个活,用foxpro,开发一个饭店的点菜系统。为此我还赚了2000块钱。在此之前,我从来没有学过foxpro。
后来又去做另外一份兼职,是用一种叫做Toolbook的类似于VB的教育软件开发工具,做教育课件。在此之前,我从来没有学过Toolbook。
再后来,我兼职去另一家公司做他们的项目经理,做一个行政办公管理软件。也因此接触了以前很多自己从来不知道的领域知识。为了保护自己的软件不被盗版,还去研究软盘的防copy加密技术。

因此,我的经验是,找一家有事做的公司去做兼职,搞真正的开发,写真正的程序,面对真正的需求。这样对自己的帮助是最大的。

明年,要是我升上本科的话,很可能会向您说的“找一家有事做的公司去做兼职,搞真正的开发,写真正的程序,面对真正的需求。”这样去做。目前正在为以后能这样做做准备呢。:)
28 楼 心无旁骛 2007-11-01  
实践和总结是最重要的,哪怕书看的再多,能积累下来的经验也是源自实践。
研究生阶段参与的数个不同项目,是我的经验得到爆炸式增长的前提。
还有就是一定要勤快,就算参与了老师的项目,自己也最好能出去接项目回来做,我最多的时候同时参与三个项目的开发,感觉学的真不是一般的快。
27 楼 kevin1236 2007-11-01  
补充下面几点:
1、沟通很重要,要学会有效的沟通
2、算法数据结构是基础,但实践同样重要,在大学要学好软件开发最重要的一环就是实践,找一个系统(或者跟一个老师做一个实际的应用系统)定一个计划去实现,保证能学到很多东西。
3、思维方式进步的基石,要多借鉴别人解决问题的方法方式,特别是要培训自己独特有效的思维方式。

相关推荐

    如何成为一名优秀的软件测试工程师

    成为一名合格的软件测试工程师,首先需要具备一定的计算机基础知识和技术。这包括但不限于操作系统(如Windows、Linux等)、数据库管理(如MySQL、Oracle等)以及编程语言(如Java、Python等)。这些技能将帮助你在...

    如何成为优秀的工程师.pdf

    要成为一名优秀的工程师,需要掌握多个层面的技能与知识,包括代码编写、系统设计、团队协作、持续学习等。本文主要就代码编写和系统设计两个方面展开讨论,重点在代码编写阶段的语义表达、代码注释、代码的可读性、...

    软件工程师具备的能力.doc

    1. 明确职业定位:理解自己的目标是成为一名软件工程师或未来的管理者,而非仅关注科研。这有助于他们在选课时更侧重于实践性和技术前沿的课程。 2. 提升语言表达和沟通技能:积极参与讨论、演讲等活动,锻炼口头和...

    软件测试工程师培训教程

    - **软件测试人员职业要求**:列举了成为一名合格的软件测试工程师所需具备的专业技能和个人素质。 - **软件测试流程**: - **需求测试**:确保软件的功能需求被正确理解并实现。 - **单元测试**:针对软件中的...

    软件工程师面试常见问题

    ### 软件工程师面试常见问题解析 #### 一、处理发现的Bug争议 ...这些知识点涵盖了从发现Bug到解决争议,再到具体的测试方法和技术工具的应用,为成为一名合格的软件工程师提供了重要的指导方向。

    论述一名合格的总监理工程师应做好的关键工作.doc

    本文主要讨论了合格的总监理工程师在工程项目管理中应承担的关键工作。总监理工程师是整个监理工作的核心,其能力和素质直接影响着项目的质量和效率,以及监理单位的形象。根据2014年实施的《建设工程监理规范》,总...

    IBM中级软件工程师(结业考试)答案

    理解这些核心概念对于成为一名合格的软件工程师至关重要。通过深入学习和实践,考生可以巩固自己的技术基础,为解决复杂问题做好准备。这份考试不仅测试了对Java语法的掌握,还评估了解决实际编程问题的能力,体现了...

    软件测试工程师指南助你轻松找工作

    本文将为你提供成为一名合格的软件测试工程师的指南。 首先,你需要具备以下几项核心技能: 1. **软件工程技能**:这包括对软件开发流程的理解,比如需求分析、设计、编码和测试。你应该熟悉至少一种编程语言,...

    软件工程师实习报告3000字.pdf

    这篇软件工程师实习报告详细记录了一位实习生在产品开发过程中的学习和体验,主要涉及测试、代码优化、软件开发流程及问题解决等方面。以下是对报告中关键知识...这些都是成为一名合格软件工程师不可或缺的知识和经验。

    C语言软件工程师笔试题大全.pdf

    了解C语言的基础概念和技术细节是成为一名合格的C语言软件工程师的关键。 首先,我们来看一下C语言中的关键字`static`。`static`在不同上下文中有不同的作用: 1. 在函数内部,声明为`static`的变量在函数每次调用...

    一级结构工程师习题

    《一级结构工程师习题》作为备考工具,其价值在于它能够帮助考生将理论知识转化为实践技能,通过大量习题的演练,增强分析和解决问题的能力,从而在考试中取得理想的成绩,为成为一名合格的一级注册结构工程师打下...

    一个工程师的硬件之路(致初学者)

    成为一名合格的硬件工程师,需要掌握一系列的专业技能和知识。文件中提到的几个关键点包括: 1. **数字电路与模拟电路**:这两门学科是硬件工程师的基础,涉及到信号处理、电源管理等多个方面。深入理解电路原理,...

    电子工程师自学速成 入门篇 +设计篇+提高篇_电子工程师_fpga_模拟电路_数字电路_

    这些关键知识点是电子工程领域的基础,理解和掌握它们对成为一名合格的电子工程师至关重要。 首先,我们从“入门篇”开始。这部分内容通常会介绍电子工程的基础概念,包括电路理论、电子元器件的基本性质和工作原理...

    北大青鸟.软件工程师.4.0.ORACLE教学指导书源代码.rar

    软件工程师.4.0.ORACLE教学指导书源代码.rar》是一个压缩包文件,其中包含了北大青鸟软件工程师4.0课程中关于ORACLE数据库的学习资源,特别是源代码部分。这个课程旨在为学员提供深入的ORACLE数据库理论知识与实践...

    经典硬件工程师培训教程

    【经典硬件工程师培训教程】是一套全面而深入的硬件工程师学习资源,旨在帮助初学者以及有一定基础的工程师提升...通过深入学习和实践,学员将能够独立完成从概念设计到产品实现的全过程,成为一名合格的硬件工程师。

    北大青鸟.软件工程师.4.0.教学PPT和源代码

    总结起来,本课程的重点是理解和掌握C#中的线程管理和数组、集合对象的使用,这些基础知识对于成为一名合格的软件工程师至关重要。通过学习这些内容,开发者能够编写出高效、安全且易于维护的多线程程序,并能有效地...

    数据库系统工程师教程-带书签

    数据库作为现代信息系统的核心组件,其重要性不言而喻,因此,理解并熟练掌握数据库系统的工作原理和技术是成为一名合格的数据库系统工程师的必经之路。 本书涵盖的内容广泛且深入,可能包括以下几个主要方面: 1....

Global site tag (gtag.js) - Google Analytics