首先要说一下,刚踏入IT行业的程序开发师被称为程序员。要想达到工程师的称号必须在经过专业培训,考试合格后获得国家劳动颁发的软件工程师职业资格证书。才能被称为工程师。
中国有北大青鸟和威讯这两个专业的软件工程师培训机构,但学费不便宜
你可以百度资讯相关信息,另外得和你说 学IT是很难的 想精通更是难上加难,这个工作需要非常扎实的数学和英语基础,搞软件这个行当也很影响眼睛视力。
但不菲的工资和无数的岗位缺口还是有无数人去攻读这个行业,但是成功并且就业成功的并不多,很多以为太难中途就放弃了。
另外 粘贴个网上软件工程师不可不知的10个概念
出色的软件工程师善用设计模式,勤于代码重构,编写单元测试,并对简单有宗教般的追求。除了这些,优秀的软件工程师还要通晓10个概念,这10个概念超越了编程语言与设计模式,软件工程师应当从更广的范围内明白这些道理。
1. 接口(Interfaces)
软件工程中最重要的概念是接口。任何软件都是一个真实系统的模型。如何使用简单的用户接口进行模型化至关重要。
2. 惯例与模板 (Conventions and Templates)
命名惯例和基础模板在编程模式中常被忽视,然而它可能是最强大的方法。
3. 分层 (Layering)
用分层来讨论软件架构是最容易的。John Lakos 曾出版过一本关于大型 C++ 系统的书。Lakos 认为软件包含了层,书中介绍了层的概念,方法是,对每个软件组件,数一下它所依赖的组件数目就可以知道它的复杂程度。
4. 算法的复杂性 (Algorithmic Complexity)
关于算法的复杂性,软件工程师需要理解这样几件事。第一,大O标记法(big O notation);第二,你永远都不应该使用嵌套式循环(循环里面套循环),你应该使用 Hash 表,数组或单一循环;第三,如今优秀类库比比皆是,我们不必过分纠缠于这些库的效能的差别,我们以后还有机会进行细调;最后,不要忽视算法的优雅及性能,编写紧凑的,可读的代码可以让你的算法更简单,更干净。
5. 散列法(Hashing)
Hashing 的目的是加速访问速度。如果数据是序列存储的,从中查询一个项的时间取决于数据列的大小。而散列法对每一个项计算一个数字作为索引,在一个好的 Hashing 算法下,数据查找的速度是一样的。
6. 缓存(Caching)
缓存对现代 Web 程序不可或缺,缓存是从数据库取回,并存放在内存中的数据。因为数据库直接存取的代价非常高,将数据从数据库取回并放在缓存中访问就变得十分必要。比如,你有一个网站,要显示上周的畅销书,你可以从数据将畅销书榜一次性取回放在缓存中,而不必在每次访问时都去数据库读数据。
7. 并发 (Concurrency)
并发是软件工程师最容易犯错的地方,这可以理解,因为我们一直遵从线形思维,然而并发在现代系统中非常重要。
8. 云计算 (Cloud Computing)
RWW 最近的关于云计算的文章 Reaching For The Sky Through Compute Clouds 讲到了云计算如何改变大规模 Web 应用的发布。大规模的并行,低成本,与快速投入市场。
9. 安全 (Security)
随着黑客的崛起与数据敏感性的上升,安全变得非常重要。安全是个广义的概念,涉及验证,授权与信息传输。
10. 关系数据库 (Relational Databases)
关系数据库因为在大规模 Web 服务上缺乏可扩充性而颇受微词,然而,关系数据库仍然是近20年来计算机技术中最伟大的成就。关系数据库对处理订单,公司数据方面有着出色的表现。
软件工程不等同与软件开发,软件工程是一个工程学科其指导意义更多。一个比较贴切的比喻:把一款软件比做一座大桥,那么软件工程师相当与施工总指挥,而一般的开发人员相当与建筑工人! 一般揣着软件工程师文凭的人一辈子也就只能做建筑工人。