土木想往土木软件开发方向发展,应该如何准备
最近很多学生、做结构设计的想要转开发,请教我应该如何准备。作为一个土木专业背景的开发人员,一路走来走了很多坑,所以,我想把我的学习经验写在这里,希望对大家有用。
一、入门篇
如果你没有基础,可以先按照以下的专业课程进行学习。
1.学习C++。
很多土木软件开发公司用的开发语言都是C++,包括广联达、迈达斯、盈建科、PKPM。C++也是主流的开发语言,各大互联网的底层开发也都会用到C++,所以,建议大家首选的开发语言是C++。
C++也是被称为最难的语言,建议大家可以先学习C语言,学习C语言对后面学习计算机的体系课程有很大帮助。推荐阅读《C Primer Plus》,可以对照这翁凯老师的公开课视频 程序设计入门 。这本书虽然厚,但是都比较简单,也很全面,刚开始学习编程会很难,很多东西都觉得比较抽象,一定要在电脑上把书上的例子敲出来,编译运行,慢慢地入门后就会学的很轻松。
当你学习了C语言之后,再学习C++就会轻松很多,推荐阅读《C++ Primer》,把配套习题集《C++ primer习题集》也做一下,推荐课程唐佐仁《c++语言课程深度解析》。(ps:关于本文的提到的课程,这里并不是打广告,都是我学习后觉得好的课程)。
2.学习数据结构与算法。
做土木软件的开发,你不需要学习很高深的算法,但是基本的数据结构和算法必须得会,也是面试中必考的知识。推荐阅读 《C++数据结构与算法》,这本书我觉得是比较适合学习C++方向的学习的,也有很多人推荐《算法(第4版)》,个人不是很建议。还有算法界的圣经《算法导论》,个人也不建议看,难度较大,而且比较偏于理论。视频课程推荐慕课网刘宇波老师的课程《算法与数据结构》,用户评价100%好评,这辈子听过最好的课程没有之一。
3.QT或MFC
广联达一般用QT,迈达斯和盈建科等用MFC。QT不了解,这里暂不做介绍。
MFC看孙鑫的视频《孙鑫C++讲解MFC》及其书籍《VC++深入详解》。视频比较老旧,但也是比较经典的。网上鸡啄米的教程《VS2010/MFC编程入门》也很不错,我习惯把它当字典用,哪里不懂点哪里。
4.面试准备
C++面试书籍推荐《C和C++程序员面试秘笈》,算法面试书籍推荐《剑指Offer》。广联达的很多算法面试题都是从《剑指Offer》中摘抄的,可以好好看一看。
掌握了入门篇的知识,对于以为土木专业应届毕业生想要进入midas、YJK、PKPM做开发基本是没有问题的。对于已经工作想转开发的朋友,要求会比较高。如果你想去广联达,其面试对算法要求较高,当年毕业找工作时,在学校参加线上笔试,5道面试题,只懂了两道,难度极大。 建议看做《剑指offer》两遍,有时间也建议刷一下LeetCode。
二、提高篇
当你已经掌握了基础篇,或者已经开始进行开发工作,有了一定的开发经验,可以学习一下书籍强化自己的开发能力。
1.C++进阶
C++是开发中用到的主要开发语言,所以需要深入理解C++语言的各种语言特性。
a.推荐阅读《Effective C++:改善程序与设计的55个具体做法》,网上有言,有个人做java转做C++,立马上街买了这本书进行学习。这是一本非常好的书,也有助于一个新手程序员如何写出更好地程序,也避免了C++语言的一些坑。也推荐阅读其姊妹篇《More Effective C++:35个改善编程与设计的有效方法》
b.推荐阅读《泛型编程与STL》
STL是C++最强度的地方,可以学习了解一下,不过对于初级开发人员不建议太过于深究。
c.推荐阅读《深入探索C++对象模型》
这是深究C++特性的一本书,对于理解C++语言机制会有很大帮助。
2.MFC进阶
推荐阅读侯捷的《深入浅出MFC》。这本书在我刚开始学习编程时,看得一头雾水,但当我工作做开发半年后,再重新看这本书,有一种拨开云雾见天日的感觉。
3.设计模式
在开发中,单例模式、工厂模式、观察者模式是常用的设计模式,这里推荐阅读《Head First设计模式》,这本书以白话的方式讲述设计模式,有趣而又简单,及其推荐。
3.编程修养
a.推荐阅读《代码大全》,这本书是我工作半年后看的,及其精彩,看完后让我知道什么是好的代码,什么是垃圾代码,以及如何写优美的代码。这本书应该是开发人员必读的书吧。
b.推荐阅读《重构 改善既有代码的设计》,这本书也是一本让你如何写出健壮优美代码的一本书,以及教你如何重构代码,五星推荐。
c.推荐阅读《代码整洁之道》,为了不被领导骂你代码写得烂,赶紧看一下这本书吧。
三、专业篇
想要成为一名专业的开发人员,仅仅掌握入门篇和提高篇的内容是远远不够的,建议学习完整的计算机体系课程,也为以后转互联网或成为技术专家打下基础。
1.汇编语言
汇编语言对理解计算机底层以及后面的体系课程学习会有帮助,但也不是绝对的,在这门课上可以不用话费太多的时间,推荐书籍《汇编语言(第4版) 王爽》。
2.计算机组成原理
这门基础课很重要,不够是对后面体系课程的学习还是在工作中都会有很大的帮助,这门课属于内功的修炼。推荐书籍《计算机组成原理 唐朔飞 第三版》,课程推荐刘宏伟老师的《计算机组成原理》。
3.操作系统
对于土木设计软件的开发,操作系统不是很重要,但也推荐学习一下,构成完整的计算机知识体系。推荐书籍《计算机操作系统第四版》。
4.计算机网络
对于土木设计软件的开发,计算机网络不是很重要,但也推荐学习一下,构成完整的计算机知识体系。推荐书籍《计算机网络:自顶向下方法(原书第7版)》。
5.数据库和编译原理
这两门课也是计算机的基础课程,我学习后发现在工作中并没有体现出其作用,或者作用不大,可学可不学。
推荐书籍《数据库系统概念(原书第6版)》、《编译原理(原书第2版)》。
学习了以上的专业课程,几乎形成了一个计算机专业学生的知识体系,把基础学习掌握了之后,在工作中遇到什么就学习什么,有了基础了之后,不管学习什么方向,都会游刃有余。
写在最后:
上述是我的个人的学习历程,我觉得对我很有效,所以这只是我的经验之谈。谨希望此文对想转开发的你有帮助。
One thought on “土木想往土木软件开发方向发展,应该如何准备”
感谢分享!