香雨站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 123|回复: 20

一个IT老鸟的一些建议(专业选择、本科、读研)

[复制链接]

2

主题

4

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-20 17:57:16 | 显示全部楼层 |阅读模式
自己的开发经历,正在逐步补充,有兴趣的可以看看

在推送的问题里总有很多IT行业选择、学习、读研方面的问题,这些问题对于初入IT世界的人的确很多重要,说一些自己的感受,算是给大家的一些建议吧。
我92年毕业,一直在做软件开发工作,这些东西只是直接的感受。算是个人经验。
说一句,你有什么问题,都可以在评论中提出来,我尽量回答
1、本科选择哪个专业比较好?
一般来说,主要是硬件、软件、计算机科学,这是三个主要学科,其他的什么大数据、人工智能等都是细分学科。说白了,是为抓眼球的,所以不会细说。
计算机科学,侧重基础理论研究,数学功力要强,本质上讲,这个学科和数学专业差别不大,但对计算机方面比其他两个专业弱,算是数学和计算机技术的一个结合行业。这个学科出来的人,开始会弱一点,但后劲大,因为IT本质上和数学关系很大。之所以弱,是因为他们对开发工具相对不熟悉,所以工作后,开始上手会比较慢,但数学功底好,对个人的快速提升,好处很大。这里说一下,数学、物理专业这些对数学要求很高的专业,转行做码农的一般比较好,就是因为软件开发的核心是算法。如果你选择这个专业,最好掌握一些开发工具的使用。这样后边会比较舒服。
软件,正规的名字是软件工程,他有一堆孩子(自专业)比如什么大数据、AI之类的。其实,就是软件工程+基本行业初级入门课。基础而已,实际能力提升有限。软件工程出来是比较的码农,这个方向是数学知识(弱一点)+软件工程知识+开发工具使用,这个行业出来的更多的应该是工程师,而不是研究人员,谁是研究人员,没错,是计算机科学的那帮家伙。但现在很多本科代码量只有2000行,这是很大的一个问题,开发量不够,工具使用必然不熟练,很多书本知识和现实对不起来。于是出现了本科毕业不如外边的培训班的情况。悲哀呀,多说一句,本科毕业应该代码量是2-4万行,而且最好有一个程序是1万行左右的,如果你可以做到,你面试的时候说出来,可以看效果,(你找工作的时候就知道了)。
硬件,有时候叫计算机应用,说简单点是就是玩板子的,牛的芯片,做板子,软件会学汇编、C开发语言,硬件是线路设计,对现在的什么云,大数据一概不懂,但他们其实很牛。为什么,第一硬件的限制会妨碍软件的开发,或者说,有一些问题软件无法解决,硬件可以,这也是雷军为什么由软件转到硬件的原因,第二,对计算机的机理了解很清楚,他们中的一些牛人做的东西,效率奇高。你看计算机发展史,牛人都是软硬通吃的。
2外边的培训学校的作用。
说一句不客气的话,如果你是计算机专业的学生,理论上不要接受培训,为什么?原因很简单,学习能力是搞IT必备的能力,在大学本科,学些开发语言,环境配置等,这些东西是最好的训练你学习能力的东西,而外边的培训机构主要是对工具软件的使用的培训,而不是对计算机核心竞争力---算法能力的培训,所有很多非专业的人接收培训,即使进入IT行业,但走远的不多。而IT界使用的工具更替虽然现在放缓了很多,但比其他行业不是快的,所以,通过自己学习、体会、尝试来提高学习能力,是需要在本科阶段完成的。最后说一句,持续学习,高效学习,如果这个能力有了,即使不做IT,你的发展也不会差,反之,你在IT界也混不好。
3、女生时候可以学习IT?
哈哈,第一个程序员叫ADa,一个女性,我们的祖师奶奶,女生学习IT没有特别的问题,其实主要是一些外在的原因,另外是女生的生理和社会责任承担的比较多产生的问题,说几个问题
A:数学能力或者逻辑能力,这个真看出来太多的差异,每个人都有自己的擅长的方面,和男女关系不大,男生逻辑差,学的不好的也很多。但很多女生认为自己天生有问题,这个属于个人认识问题,
B:女生的仔细、认真其实一个加分项,编程需要仔细和认真,一般男生在这一点明显不如女生。学习能力其实很多女生比男生好,如果再加上认真,很多女神真是男生痛恨,
C:女生做IT有两个明显的弱点,一个是结婚、生子会产生一段很长的职业中断期,如果是刚毕业,则影响更大,而工作前三年实际是工作习惯养成期,对个人未来发展影响很大。另外一个,就是犯懒,很多女生,一旦有机会就不做代码,你看学校里,如果女生有了男朋友,一般都是男生coding,这个其实对女生能力养成影响很大。所以,如果你是女生,一点要注意工作经验的积累。
4、本科的那些学科比较重要
第一个就是我最痛恶的英语,所以在本科阶段你最好过6级,最其他是4级,为什么,现在IT的发展,中国不是最先进的,很多资料、工具的使用手册英语居多,如果等翻译,最起码晚1-2年,而且有时候根本就没有,所以,你要掌握最新技术,预测未来发展方向,最好会英语。
第二个是数学相关的课程,高代、高数、线性代数、算法等,方正只要和数学沾边的都是重要课程,
第三是软件工程,这个是软件开发的核心课程,你看它的名字就知道了,
第四,专业课,比如计算机原理、数据库概论等,这些功课很难学,主要是没有参照系,所以一旦要做一些小系统,这些理论对你未来的发展很重要,说一个玩笑,数据库结构设计,很少有人按照理论进行设计,结果经常把自己玩死。
第五,多看一些课外书,软件工艺、代码大全1,2,日月神话等经典的IT书籍
5、学习软件工程,就一定要做coding吗?
不一定,第一软件行业现在有很多细分行业,比如售前支持、需求调研、售后服务、系统运营,还有比较高级的产品经理和项目经理,甚至自己独立创业。这是作为行业内部来说的。
另外,可以跨行业,比如做咨询、媒体的,甚至我还遇到过去做蛋糕店的。所以说,软件工程专业未必一定做Coding.
需要说明的一个事情,IT界相对人员智商比较高,学习能力和耐力比较强,持续学习能力比较强,而且因为IT可以和所有行业结合,所以,转行的比较多,而且成功案例不少,这个是事实,当然,我也遇到过50-60岁左右的程序员,也是牛人。
6、学习软件工程,需要一个好电脑吗?
哈哈,估计你玩游戏、看电影的时间比开发的时间长,一般来说,搞软件的不用太好的电脑,因为开发的工具所消耗的资源比看电影需要的资源少很多。说一个真实的事情,有事情用低性能的电脑能发现很多隐藏很深的不够,这个你相信吗?
7、学IT要考研究生吗?
如果家庭经济可以,最好考,一个是技术生涯的问题,博士是要发现问题,硕士是要解决问题(从算法层面),本科是实现解决代码。基本可以这样理解,所以,博士、硕士、本科接收的训练是不同的,当然,很多人是通过自己的努力可以达到博士的级别,但如果有机会接收正规的训练,则时间会少的多,当然,你不努力,不能算。
另外一个就是,硕士现在是很多单位实际入门门槛,这个是一个现实,即使你再有本事,很多时候连大门都进不去,机会自然丧失,所以,如果可以最好考研究生。
8、如何有效的过大学四年的生活(软件工程专业)
说一下自己的方法,毕竟大学毕业时间太久了,只是从未来的工作角度对大学学习内容做一个总结,具体的学习安排,需要你自己根据实际情况进行调整。
第一年要快速打基础,主要解决三个问题,第一个解决英语,如果你在1-2年级不能解决英语问题,对你后边主力很大,要说明的是现在最新科技还是以英文资料为主,所以在第一年要争取过4级,最起码解决英语资料阅读的问题,后边虽然要持续学习,但时间可以相对缩短。第二个问题是数学,包括高数、高代,算法等,方正和数学有关的需要打牢基础,大量做题,无论是考研还是工作,数学思维能力和很重要,工作的时候,虽然一般代码不用太复杂的数学知识,但除非你不想提升自己的能力,否则,数学思维能力是你快速提升的关键。最后一个是尽量掌握一门开发语言,最好是类似C或者C++之类的,这些语言学起来不是很快,但比较接地气,一旦掌握后,后边的其他语言学习起来比较快。代码量最好有几千行,最大的一个程序最好超过1500行。
第二年,主要学习计算机相关知识,计算机原理、操作系统等,这些东西是软件和硬件结合的东西,也是基础,除了基础课程以外,多读一些软件工程相关的书籍,比如代码大全,软件工艺,硅谷发展史之类的书,打开自己的眼界。同时要注意代码的积累,可以编写一些实用的程序了,可以是课程任务,也可以是自己想做的小工具,锻炼自己解决问题的能力,代码量要在3000-4000左右。这个阶段编程你是很赚痛苦的,但可以为理解软件工程、数据库结构设计打下基础。
第三年,主要解决未来发展方向的问题,主要准备考研,要开始复习了,但主要是的选择自己的方向。课程方面要理解哪些枯燥的专业理论(这也是为什么大二的时候要编程,没有经验,不吃亏,很难理解工程性问题)。在方向性,要选择行业方向,大量寻找和阅读资料,最好在相关领域做一些实验性的程序。
第四年,是疯狂编程年,如果你不考研,全年都是疯狂编程,最起码后半年是疯狂年,要求最好掌握1-2门开发语言,做一个实际的,可用的系统,这个可以和毕业设计结合,但程序最好上万行,并且将学习的理论在这里实际使用,这个程序,需要你自己思考,设计,反复修改,这是对你自己的打磨,如果你真编写了万行代码(一个程序),而且是自己独立思考的,会归纳、总结问题(寻找真实需求),独立寻找解决问题方法(思维能力,解决问题能力),独立编程(工具使用能力、专业技能)都会有一个突破。读研,你会比较轻松,工作,你的能力一定超过同期的毕业生。
9、软件开发是青春饭吗?
真不是,那是因为客观因素,国外软件的发展也就几十年,国内第一批的软件工程硕士学位大约现在在58岁以上(当年很多人入大学时候已经20多岁了),我自己今年正好50岁,当年上学的时候,我们大学是很少的开软件工程这个专业的学校,所以,严格意义上说,现在的软件工程专业都应该在50以下。
那么为什么大龄程序员少,主要原因如下,这个行业刚开始的时候,我们本身是本科生,当时又是热门行业,所以机会很多,当时毕业的时候,如果去中关村买电脑,回扣可以给2、3千元(92年),如果你在公司,这无疑是一个快速发财的机会,很多人,直接转行了。另外,就是出国的多,当年,出国,可以拿几千美金,而在国内是几百元(我自己第一个月工资是162),当年,汇率是16:1.所以大量人员出国,(软件行业是最好出国的几个行业之一)。我们大学班是33个同学,毕业的时候,出国的是7个人,这还没有算后来出国的。如果是北大、清华、中国科大,比例更高。其次,转行机会高。当时,编写万把行程序,就能是一个不错的产品,很多人是在体系内完成初创,然后,出去成立公司。好的成为了公司老大,也有很多人转运营了,这样剩下的人就更少了。
那么,有没有一直在做开发的,有,我见过很多一直编码的,但更多的是,虽然不编码,但一直做开发工作的。拿我自己来说,工作前七年基本是编码,再七年是编码+项目管理,后来,跳出中科院,去了一个做交通的公司,但本质上还是开发,主要是研发管理,质量管理,但也总是和开发人员一起解决问题,这个时间大约有12、3年,很多实用算法都是我自己思考,然后让底下人去实现,至于讨论什么数据库设计、算法设计都是常事,帮手下找bug、优化代码也是我喜欢做的,最近3,4年,虽然不太做这些了,但主要是行业融合,和跨行业融合方面的事情,简单说,就是更高一个层面了,但掌握了软件开发后,这些事情做起来就比较优势,而且相对容易。
所以,做软件工程,如果你把它侠义地理解为编码,那么35-40岁是一个坎,主要是因为精力不能象年轻的时候那么去打熬,但如果你掌握了其核心方法,职业生涯的升级还是相对容易。而且,无论是作为项目经理、产品经理还是领域专家,其实对项目成功和企业的影响,其作用要远远大约程序员。
所以个人认为,主要持续学习,能力持续增加,你是很难被淘汰的。
10、软件工程未来的发展方向有哪些?
第一个是纯技术研发,这个就是造轮子的人。比如操作系统、编译器、AI算法研究。包括以后的量子计算机等技术。(个人感觉量子计算机编程与现在的编程改变很大,也许是一个弯道超车的机会)。原来国家在这个方面投入比较少,主要是生态圈的问题,当时是被国外压制的比较厉害的。现在国内企业(华为等)已经开始起步,以后这些地方改变是改变IT生态圈情况的一个地方。但这些工作,具有理论研究程度深、时间长,出成果难的问题,如果你进入这些领域需要有足够的情怀。
第二个是技术应用。这个方面就比较广了,因为计算机技术几乎可以和所有行业进行融合,也就是说所有行业都有计算机的影子,计算机技术原来最早是用一些科学家计算,后来进入了办公领域,开始仅仅仅是用于打字,后来逐渐形成了OA和一些专用的mis系统,再后来是各系统进行互联互通。随着无线通讯的发展,物联网设备发展。信息技术逐渐融入到所有的传统行业中。基本上形成了前端自动感应,网络自动传输,后台自动判断和处理。再后来是把所有收集到的数据进行处理,也就是现在所谓的大数据技术和人工智能技术。所以说信息技术的应用是一个非常广阔的领域,而需要的人才也是非常多的。这也是为什么?虽然有大量的人员涌入,而信息化技术人员却很难饱和的一个主要原因。
第三个是技术管理,随着信息化系统越来越庞大,将原来单靠个人奋斗所取得成功的例子越来越少,现在所有的项目都几乎要一个团队才能应付得了。孕育而生的就是项目经理和产品经理。产品经理是负责一个产品的设想、规划、研发、推广、运营、维护、退出市场的全面管理工作。而项目经理是负责一个项目的规划、实施、检查、调整、调整、结束。不要太纠结于项目经理和产品经理的职责。他们之间既有交叉也有各自的特点。这里就不再细说了,但好的产品经理和项目经理一定是技术和管理都比较优秀的人员。所以说一般开发人员5~7年后都需要学习项目管理的基本知识。而产品经理和项目经理是将市场管理技术相结合的人。综合能力要求非常高,也是一个不错的发展方向。
第4个是技术辅助工作,虽然是辅助性工作,但有时候也是非常需要和重要的。比如说市场支持需要懂技术、善交流,对行业的主流产品非常熟悉,可以快速的根据用户的需求系统的技术方案和实施方案。同时善于保护自己的公司,打击竞争对手。比如测试工作,虽然测试人员的存存在感并不高,但好的测试人员可以极大的减少系统的整体研发费用。而且让人吃惊的是,软件测试费用在整个项目费用中占有很大的比例,目前我国好的测试人员和测试管理人员相对稀少。另外一个是需求分析人员,软件项目失败有80%的原因是跟软件需求有关,而在前期,如果能减少这部分的错误,可以极大的提高热量产品开发的成功率。可惜的是软件需求人员这一职位并没有引起真正的重视,所以现在还是在使用拍脑袋决定需求的阶段。什么时候中国的需求分析人员成为一个重要的职位,也就意味着中国软件真正的成长起来了。当然其他的职位还有很多。比如UI设计、质量保证人员等等等等。如果你有幸做了这些工作,一定要记住,这些工作都是有很强的实践性,无法仅仅通过书本知识获得真正的工作经验,一定要将工作和书本相结合,一旦你成为了一个真正的行业专家,你的职业情景也是非常广阔的。
第5个就比较另类了,一般来说,It往往是跟某一个行业相结合。也就是在做某一个行行业特定产品的设计人员一定会对相关的行业10分了解,否则是不可能开发出好的产品的。这就出现了一个非常奇怪的现象,当开发人员开发出了一套真正NB的行业产品是,往往会给传统行业培养出几个专业人员,而且因为It人员精通数学和模型搭建,所以往往会被行业提出很多新的思路和方法。这些人员如果再去弥补一下行业的专业知识,往往会成为另外一个行业的技术专家。所以会出现一种从it公司跳到传统行业公司的人。这些人都是行业融合的结果。以后可以做咨询、做顾问,一般来说,可以两头通吃,舒服的不要不要的。哈哈哈哈哈哈
11、哪些神鸟是如何练成的
原来没有接触过编程的人员,在看到那些编程神鸟的时候,往往只剩下仰慕了。可是他们到底是怎么炼成的呢?说一点自己的总结经验,
第一下笨功夫,在很多电影中,那些神奇的黑客神鸟手指如飞,屏幕上唰唰唰的一行显示闪过,令人神往,要是做到这一点,你的指法要好吧?你的命令得记住吧?你的命令参数得记住吧。这些东西都是要下笨功夫的。所以你回去看看,你能否熟练使用所有的开发平台?你能否记住所有的类,类里边的函数和成员变量,类之间的关系图。等等等等。这些你如果能够随手敲出,你的工作效率会提高很多。
第二,多读别人的源代码,读代码是一个快速学习的过程,代码风格的形成,精致算法的理解,系统架构的设计,这些东西都可以通过读别人的源代码获得提升。当然你如果是读了那些糟糕的代码,就去给他们找问题吧。我见过最漂亮的代码是Unix的系统源代码,读那些代码真是一种享受。所以有时间去多读一些经典的源代码。
第三,算法,在软件行业中算法是最核心的,如果你没有数学思维的正确方式,那你很难成为一个大家,所以在数学和算法方面下多大的功夫都不为过。
第四,编码和调试,编码和调试是需要通过大量的时间来提高自己的能力,这的确是无法通过简单的书本来销售给其他人,有时候神鸟们经常有一种神奇的找错方法,其实说简单点儿,就是犯不了所有的问题,知道他会引起什么样的现象,这个时候看别人的Bug很快就可以原来的经验相匹配,从而快速的给你找出问题来,所以在敲代码遇到Bug的时候,不要急于去找别人帮助,而是要自己逐渐缩小范围,这个过程中会消耗大量的时间。但这也是从菜鸟到神鸟的养成的必然经历。所以如果你是在学生阶段,花两三天去找一个bug还是很值得的。
第五,读一些经典的计算机研发的图书,这些数据读起来很枯燥,但读懂任何一本都会使你有一个很大的提高。
12本科最重要的一件事情--确定未来职业方向
在大学阶段有个比较重要的事情就是确定自己的未来发展方向。如果在本科阶段能确定自己的发展行业,而且所选择的行业与自己的兴趣和能力比较匹配,那么后来的生活会容易很多,自己的一些观点,未必正确仅供参考吧
第一、对新鲜事物充满好奇的人,做事情喜欢自己上手的人,能够自己闷着头很长时间做一个事情的人,一般做开发不错,毕竟做软件是一个实践性比较强的行业,很多东西没有成规,需要自己去探索,而且,做软件需要大量的算法研究,需要一个人能够深入钻研,而过于活泼的人兴趣点不断转换,很难对问题进行深入的钻研。
第二、经过比较好的数学能力培养的人,做软件开发一般不会差,数学系统、高能物理等学科的学生如果转行的软件行业,一般不错,这个是很软件行业的特点相关,毕竟算法是软件开发的核心。数学能力最简单的检验方法是不见得是数学科目的成绩很高,而是在经过思考后,可以做所谓的难题,也就是说,个人的思考方式很重要,很多数学科目成绩好的,未必善于解决实际问题,而有一些所谓的差生,在实际工作却表现不错。道理很简单,考试主要考知识点,而思维方式却相对比较少,而实际工作中,你有时间去快速学习知识点,弥补自己的不足。
第三、喜欢偷懒的人比较适合做软件,软件实际主要将重复性的东西交给机器去做,好的开发人员总是有一个特点就是偷懒,思考事情的规律,不断总结,将那些可以重复的工作交付给计算机去做,也就是所谓造轮子的人,一个只能完成领导交付的任务,辛苦的996的人,未必是一个好的开发人员。(造一个轮子,可以成百倍降低工作量。而一个只会重复做一类事情的程序员,从本质来说才是真正的码农)。
第四、敢于放飞自己,不墨守成规的人比较适合做软件,初级程序员需要规范自己的工作方法,而高级程序员往往要敢于打破原有的体系,在系统架构设计、核心算法优化的时候,如果总是墨守成规,整个系统必然很难形成突破,大胆思考、小心求证是优秀程序员的特点。所以,没有自己的思维,总是因循守旧的开发人员,很难形成职业生涯的突破,而一个突破往往会提高系统的百倍效率,
说一下好的开发人员的一些特点,是否没有这些特点的人就不能做软件开发,其实不是,因为在软件开发过程中,核心的人员其实是少数,这些人是开发团队的精华,而很多工作需要一般的开发人员去做,比如:市场人员可以弥补开发人员的一些问题。而一些喜欢做重复劳动的人,做测试、质量保障、编码其实都是不错的。在这里,主要需要提醒你,如果你喜欢软件开发,可以在本科和研究生阶段,强化自己的技能,而如果你不是这方面的顶尖人才,可以适当加强自己其他的技能,做一个复合型人才。我自己其实也不能在纯软件技能上达到顶尖水平,在中科院的时候,不断被学霸和学神打压,对学霸还可以有翻身的机会,学神基本不可能。所以,我后来是向管理和技术结合的道路走,后来又结合了一个行业。这样,虽然在单一技能上无法打压学神,但可以有多种技能加成,这样也获得了学神们的认可。当然,这个道路是在工作以后逐步探索,浪费了很多时间,所以,提醒同学们,一定通过自己4年本科3年研究生了解自己的特长。规划自己的未来职业的发展。最后说一句,很多人,最后的工作和自己的原来专业方向没有任何关系,这没有什么。很正常的事情。
13IT本科需要学习几种计算机语言
说到这问题需要讲讲计算机语言的发展史。最早的计算机语言是二进制码,所有的指令都是0和1组成,有点是速度快,计算机容易处理,当时的计算机能力极弱,这个特点很适合计算机的使用,但无论是调试、编程都是极为繁琐的事情,后来随着机器性能的提高,于是人们想了一些偷懒的方法,有助记词来替代一些01指令代码。这就是汇编语言,在后来随着机器能力提高,人们将编写程序改成了近似于人类的语言和思维的语言,当然,这些语言计算机是无法读懂的,这个时候,人们编写了一些特殊的程序,将这些语言转变为计算机可以读懂的二进制语言,这个程序就是编译程序。所以我们现在一般都是在一个集成环境中,用高级语言编写程序,在进行编译连接,形成可执行文件,然后执行可执行程序。如果你看可执行程序,都是二进制代码,几乎无法读懂。
现在的高级语言有上万种,而且还会不断涌现,为什么会这样,主要是人们根据自己的需要不断开发符合特定需要的计算机语言以提高开发效率。比如在PC刚开始普及的时候,BASIC语言以易学易用得到飞速普及(盖茨的成名产品之一)。但这样语言实在不适合编写大型程序,我记得一个问题就是它的变量都是全局变量,哈哈,有编程经验的都知道这个是多大的一个麻烦。而PASCAL是在上世纪80、90年代比较好的一个语言,主要是因为编程环境和模块化管理做的比较好。作为教学用的工具深受教师和学生的喜欢。
还有一点要强调的是作为软件的专业人员,所有的计算机语言都是工具,而不是软件开发的核心,在以后的数据工作中,你会慢慢体会到算法是核心,而工程理论和方法是重点。计算机语言只是一个是否适用的工具,如果工具适用,则开发效果还好很多,否则会走弯路,但算法和工程管理出项目,项目失败的概率会很大。
此外,计算机语言很多东西是类似的,比如基础语法、数据类型等,而库函数、类库函数等很多东西概念也是相同的。精通一种语言后,在快速学习另外一种语言速度是很快的。我自己的项目经常是在项目开始后才确定开发语言和环境(没有办法,很多时候是客户要求的),而我自己在组织项目的时候,很多语言自己并不完全了解,但这并不妨碍我管理的项目的顺利进行。(开发语言,是初级和中级程序员必须熟练掌握的,而高级人员很多时候只要掌握掌握其核心和特点即可)。
最后说一下,熟练掌握一个面向过程的语言,一个面向对象的语言足够了,4年的时间大学学习时间,你如果能有C或者Java有4万行代码,最大程序超过万行代码,你对算法和工程理解会比同阶段的人员高很多,而你的价值一定远超所谓精通几十种开发语言的高级研发本科生的。
14大学学习的目的是什么
首先,本科毕业的大学生出路一般是两个,一个是读研,一个是工作。本科四年主要是为这两个事情做准备,这两个事情都需要什么条件才可以走的比较顺利。对于本科毕业的计算机类学生,企业其实不是寄予太多的希望,而是看你的发展潜力。
发展潜力主要包含:基础知识是否扎实和实战能力。是一个比较关键的事情。作为IT类的学生数学功底和英语功底是比较重要的。毕竟IT的核心是算法,其次是英语,这个不用多说,很多最新技术英文的资料还是比较新的。最后一个容易被忽视的是文字能力,说简单点就是语文。在工作后,文档是开发人员避不开的东西,而且随着职务的提高,文字能力就更加突出。不仅仅是技术文档,在用户交流用的技术和管理文档中,不说人话的文档比比皆是。这个问题是比较突出的。
在说实战能力,最基础的就是编码。现在的本科毕业生令人遗憾的就是代码量太少,很多只有2000-3000行。这个水平就是小玩闹级别的,基本不能解决实际问题,随着编程环境越来越好,从某种角度上限制了现在开发人员的培养。举一个例子。我们当初编写课程设计的时候,需要比较编写一些复杂的程序,比如图文混编编辑器,当时的编程环境不是那么方便,需要先设置成图形方式,然后设计这个编辑器的总体结构,然后设计图形元素的数据结构,文字元素的数据结构。各种元素的编辑方法,解决各种设计缺陷和冲突。最后还需要设计保存的文件结构。说实在的,当时基本上要3-4个人,干半年,代码量接近万行。当时的开发比现在开发难多了,效率也不高,但这些训练,让我们熟练掌握了开发语言、编程环境、程序的调试方法。对团队协作等方面也有很多接触,这样,在进入工作后,进入角色比较快。IT行业的学习,很多时候,很难做到理论和实践结合,通过一个万行左右的大型程序的开发,让我们遇到了后来工作中遇到的技术70%的问题。这是很可贵的经验。具体说一下:
A快速掌握一种开发语言,计算机语言是工具,我们后来在需要使用新开发语言的时候,一般搞三本书,一个是入门,一个精通,一个资源库。入门用于快速了解,按照书上的程序可以快速编写实验程序。精通主要根据项目的实际需要,看一些特殊功能使用说明,这种书看法是需要什么,看什么,通过目录了解内容,根据项目选择看的章节,资源库是用于对详细函数、类等资源的详细介绍,在编码的时候、遇到问题时候,调试时作为手册进行。这里说一下,开发人员要精通一门或者两门开发语言,其他的语言都可以快速进行映射(学习起来比较快)。掌握1到2门语言的事情,最好在本科毕业的时候完成,不要给后边的工作增加不必要的压力。
B程序调试能力。程序出问题了,会自己调试,会读代码进行分析。现在很多毕业的人员连打断点、看变量都不会。我也是无言了,作为软件开发人员,如果不能想明白程序在不同状态下变量的数值,那一定不是好的程序员,毕竟计算机只是你的思维的实现器,你都说明白,计算机程序一定乱的一团糊涂。程序调试能力没有办法学习,只能通过大量的编码是养成,代码阅读(分析)能力、bug产生原因的分析,程序功能冲突的解决,性能的提升都和开发人员具有的调试能力有比较密切的关系。
15说一点找工作的事情。
这个事情,如果在刚进入大学或者读研很少有人考虑,但真到了毕业的时候,往往发现自己的资历不够,或者盲目入门,对自己的未来的发展影响很大。所以,在选择工作的时候,根据自己的需求,对企业类型有一定的了解,是需要的,而在刚入学的时候,做一些功课还是需要的,这样可以有效避免现上轿现扎耳朵眼的现象。
先说研究机构,国家或者省市的科研机构,一般来说是提升自己能力比较好的单位,很多项目目前只有在一些科研就够在可能接触到,比如中科院、各类大学、很多大型国企比如航天科技等也有比较好的科研机会(注意,是参与大型项目的机会,而不是挣钱,当然现在很多国企的科研人员的机会还是不错的)。这类企业好的是项目机会、学习机会,很多人一头扎进入,十几年后,很可能成为某个方面的专家,另外,职称什么的,这类单位会比较好评,但要注意一点,这些单位也同时会很“毁”人,对那些有比较高的追求(情怀)的人,同时也能在技术学习主动的人会比较好。说简单点,就你给你玩命提高、干活的地方。所以很多从这些地方出来的人,到外企和私企都获得不错,毕竟有一手技术和管理经验。这些地方对情商、智商、学习能力等潜在的能力要求比较高,在这些地方,就是一群聪明人抢(好)活干,对人的磨练是很大的,所以,在这种单位干几年,有很多无形的好处。过去,很多人说国营单位人浮于事的现象。简单做一个说明,目前,国营单位很多都在改革,很多考核,不见得比私企和外企少。很多国营单位对老职工需要将人情,说简单点,我就见过因为工作原因,造成孩子的智商有问题,这些孩子可以说刚出生就为国家做了贡献,所以单位会对这些孩子做一些安排,(这种现象越来越少)。还有一个原因,很多单位的工作内容单纯从市场上讲,是一定亏损的,但国家需要,这算是一种比较普遍的现象,另外对于大型国营单位,很多职位是冗余设计,因为   很多时候时候,你无法指望其他人帮你完成,很多时候,即使你有钱都不行,这次疫情的时候,你看看是那些厂家可以快速生产口罩等设备,你就明白了按部就班容易,但在短时间内,出生产线,那可不是简单的事情,国企的很多人,在平时的确是吊儿郎当,但在这个时候却很管用,这也是很多国企说的,关键的时候,你能冲的上去就是英雄,所以,进国企的时候,不要轻视任何人,顺便说一句,国企的确是国企能人比较多的地方。
外企,原来去外企是一个好的出路,但现在最起码在it行业,未必是最优解,原来去待遇好,机会多,当时,很多外企在中国具有技术领先,本地化要求等方面的原因,的确是一个不错的选择,但也有一些问题,首先,大型外企也有国营企业的问题,比如机构僵化、责任归属。这些问题其实和企业规模有关,另外就是天花板问题,现在,国内企业起来后,面临的竞争更加激烈,技术领先已经不是那么明显,但企业的灵活度不够,很多时候打不过国内的私企。在外企的最要命的问题是,你就是一个螺丝钉,往往一个东西可以吃10年,15年,开始,你觉得自己很牛。但这个东西一旦被淘汰,你就是一无所有(指技能)。温水煮青蛙,是外企最容易遇到的问题,另外,现在很多外企裁人的人,也是很凶猛的,虽然待遇不错,但人的心理落差是很大的。
现在和上边的国营单位
16如果你是牛人,可以多学习那些知识。
这里说的一些对你未来可能需要的书籍。当然,在看这些书的时候,请先学好你的所有课程。
A首先来说,作为开发人员,设计能力要过关,这里是说的是设计,而不仅仅是编码,建议好好读读《代码大全》、《代码大全2》这两本书是对软件开发实战经验的最好总结,虽然时间很长了,但是经典。
B软件工程,软件开发毕竟是工程,而不仅仅是算法研究,算法很重要,但一个算法在实验室理论实现后,如何在工程中使用,一直是一个问题。很多时候,做项目不可能仅仅一个算法可以成功。
C看一下员原来的软件工程的经典图书,比如《人月神话》、《人件》这些书原来都是成套的,为什么开发人员喜欢完成工作,996为什么成为一个永恒的话题,这些书其实都有讲到。多这些书,主要是提高自己的认知能力。
以上三类书读明白了,基本可以对自己的外来的开发生涯都一个清晰的认识,可以提高你的工作效率(提高工作效率未来工作很重要的一个事情,这里说的是个人工作效率)
D项目开发是团队工作,PMP的pmbok是一个很好的东西,这个东西其实一个做项目的框架,说实在的对我的影响很大。在开发人员30-35岁的基本都会遇到中年危机。产生这个危机的主要原因其实是个人能力(技术水平、管理能力、个人精力等)和工作压力的失衡。pmp这个东西实际是让你如何进行判断和高效执行任务的方法论。单纯的使用,可以让你高效保证项目的成功,如果你理解深刻,其实可以渗透中生活的很多方面,而不是在危机到来的时候才后悔。
E:读读其他行业的书,比如《长尾理论》《免费》等,这也是系列图书,这些数揭示了互联网经济的核心实质。而我们的软件开发其实只是这些实质实现所使用的一个工具,这些书类似于如何种庄稼的教科书,而it本科学的东西相对于如何使用锄头的说明书,所以如果你如果希望进入互联网行业,对这些东西有适当了解,才能更充分发挥你手里锄头的作用,至于什么c还是Java那个更好的争论,其实是你用镰刀收割还是自动收割机收割麦子的问题。但前提是你要种出来麦子。
F:读读it历史,科学的发展史,人类的发展史。

说一下其他的吧,希望对新入坑的同学们有帮助,这些问题主要针对未来工作
1学会思维方法。方法比知识点重要,学习的方法、沟通的方法、初级程序人员、中级程序员、高级程序员、项目经理、产品经理、部门经理,公司副总不同职位的人,工作内容不同,方法不同,思维方式也不同,而很多人遇到职业瓶颈,其实不是知识点的缺失,而是思维方式没有更新,举一个例子,钱学森是我国一个著名的科学家,而其他科学家比较,他牛的主要是他的思维方式,如果你有时间读一下他的传记,看一下他的工作经历,工作方式,工作内容,和其他科学家做一个对比,就会发现区别了(没有拉踩其他人,只是说明一个问题)
2学会交流,学得屠龙术,卖与帝王家,在本科或者研究生的学习过程中,知识的学习和方法的学习,这个不多说了,说一点交流的问题,很多研发人员很轻视这个问题,总认为这是拍领导马屁,没有用,其实不是,交流让领导、同事、客户了解你的能力、做事方法、资源需求等。说简单点,做事情需要资源,你没有获得这些资源,很多事情就无法完成,通过适当的方法获得这些资源,才能保证事情的顺利进行。
3有经验的程序员未来可以做的岗位?
以下内容是从别人那里搬运过来的,我的建议放在括号里了
作者:安晓辉
链接:https://www.zhihu.com/question/418409537/answer/1460841237
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
业务类的架构师。如果你业务不错,擅长方案设计、沟通、演讲和PPT,可以考虑。(这个其实不是架构师,是售前技术支持,一般IT人员在一个行业做久了,可以考虑这个行业,好处是经验丰富,行业和IT结合,可以分别打压纯技术人员或者行业人员。坏处。毕竟不是行业内科班出身,容易用自己的爱好PK人家的专业,闹笑话。另外一个是丧失自己专业的敏感性。最后成为万金油式人员。另外,会长期出差、开会,进行一些开发人员认为无聊的活动。这个职位最好的进入方式,在这个行业做了10年以上,而且自己刻苦学习过相关专业知识,这样容易和行业专业人士快速打入,并可以行业专家们进行深入讨论,利用跨界思维方式,提出自己的建议,这样客户比较认可,而且,反过来,可以和开发人员进行技术讨论,如果你能把业务流程说的很明白,而且是用开发人员理解的语言,估计没有开发人员不会视你为珍宝。这个职位最大的核心是行业融合,跨界思维)
中高级的技术管理者。不要做一线的技术管理人员,多数时候依然需要写代码的。中高级的技术管理者,写代码的必要性,几乎就没了。(中高级开发者不编码,恐怕是所有人对软件开发的误解,第一个需要说明的是现在很多)
软件项目经理。你项目管理能力、计划、沟通、组织、协调、谈判等,都还不错的话,可以考虑转做软件项目的管理管理。
测试经理。开发搞得不错,补一下测试理论和技术,去带测试团队,也可以的。
软件质量经理。这个也可以的,主要是做软件过程质量控制流程和规范,进行质量监督和控制等。
售前架构师。主要调研需求,出技术方案等。沟通、协调、方案规划等能力不错,可以考虑。
售后技术支持或支持经理。有不少大型软件或软件结合的方案,会有这个岗位。比如华为的核心网,就有很多了。做过开发的伙伴,在技术能力上,做这个完全没问题。如果你有服务意识,能出差,会沟通,擅长甩锅,可以考虑。
产品经理。做一个懂技术的产品经理,也蛮有竞争力的。
增长黑客。主要是通过各种数据和程序手段搞定增长,拉新、促活、转化、留存等等运营上的事儿可能都要做。
数据库工程师(DBA)。你懂的,可以考虑。
IT讲师。能开发课程,能讲课程,就可以试试。培训机构一大把,都需要老师。有些民办大学,也缺有实践经验的老师。
技术顾问。你技术很牛的话,这个也可以考虑,给行业内的公司做技术顾问。
敏捷教练。很多公司都在做敏捷转型,这是个不错的方向,收入也不错。
互联网运营。工作内容主要是围绕着拉新、促活、转化、留存等做运营,做活动。
需求分析师。传统软件开发领域会有这个角色,项目制的软件开发项目,也会有这个角色。从甲方给的需求,分析转化成自己这边的业务需求或功能性需求,甚至是软件需求规格说明书(SRS)。
数据分析师。这个岗位,专门从事行业数据搜集、整理、分析,并依据数据做出行业研究、评估和预测。在不同公司,可能又有细分,有牵涉到算法、模型和编程的数据挖掘工程师,有靠近业务和商务这边的,主要是分析数据,挖掘数据,给方案、结论或建议,需要对业务很熟悉。
网管。稍微有点规模的公司,都有这个角色吧,新员工入职时整整电脑,配置网络,各种设置,公司内部网络环境维护等等。
IT经理。公司比较大,会有专门的IT部分,负责整个IT设备的采购、管理等等,这个部门的头儿,就是IT经理。
运维工程师。负责系统的运维,不过现在很多岗位,也要求写代码,起码Python要玩儿得起来。
配置管理工程师。比较大的、比较规范的软件研发团队,主要负责产品开发过程中的软件配置管理,如版本库、构建系统、文档管理等等。
技术图书作者。我也出版过两本技术图书,也认识不少专门靠写技术图书吃饭的程序员。如果你喜欢琢磨新技术的话,也可以做这个,写入门类的就可以了。
网课老师。自己开发技术课程,图文、视频、直播等,都可以。现在有很多平台。这个根据情况,会写一些demo代码了。
技术自媒体。嗯嗯,这个我有很多朋友在做呀,知乎上、公众号、B站、头条等,都有,起步很艰难,收入没上限。如果你乐意写东西,做运营,可以考虑了。
企业内训师。嗯,很多了,你在某个技术方向很厉害或者有很厉害的实践经验,都可以尝试。
照抄完毕

16不要歧视技术文档的编写
软件研发的核心是算法,重点是设计,编码其实在软件开发的工作中只占5%的工作量,怎么样是不是很意外,只占5%的工作量的代码编程工作确认码农们的工作需要996,讲一下原理吧。
A我们在本科阶段编写的大部分程序基本上是2000行内,主要是实现一些课内的题目,这类程序具有需求明确,算法简单,再加上一般能在大学学习IT类的同学智商尚可,基本将需求分析、设计和编码工作一勺烩了。100行代码需要写文档的哥们还是不要做开发了(真的,虽然和残酷)。所以,不是不应该写,而是因为问题太简单了,虽然我们已经思考过,但没有必要为了写文档而写文档。但你未来面对的代码是几万、十几万,甚至几十万,你就不能不写了。所以还是建议,大家在2000以上的程序,还是需要练习写一些文档(不要讲所有难点都都集中在一件事情上,会很麻烦的),开始学习编程,经历放在语法学习、环境熟悉、调试技能的提高上,编写几千行的代码,主要训练分析问题(需求),分解问题,降级难度(设计构架),这个阶段一个主要内容就是写文档。
B文档的出现其实是和IT的应用越来越广泛,系统越来越复杂相关的,现在的系统不说别的,几百个数据库表,几千个数据项是很简单的,之间的关系错综复杂,没有一个文件,很难通过程序看明白其复杂的关系,这还只是数据库设计,在架构、数据接口、算法设计上等很多方面,就更复杂了,这个时候,如果没有文档,团队开发几乎不可进行,在牛的开发人员也不可能记住所有的东西(有,原来红旗Linux的孙玉芳就可以,但那是人精,当年全国Linux前三位的主),我等凡人还是算了,与其大家吵得一塌糊涂,不如写下来,减少麻烦。
C文档设计本身也是分类型和层次的,类型主要是指文档由需求文档、设计文档、程序注解(可以替代详细设计文档)、测试文档、使用文档、维护文档,甚至还应该包括相关管理文档(这个就不多说了),而文档本身的编写也是分层次的,这样将一个复杂的问题不断进行分解、分层,让一个复杂问题编程了若干简单问题,这其实是一个通用的工作方法。
D文档的作用简单说一下,1理清思路,将复杂问题简单化,2供批判,用于进行技术讨论,防止讨论变成空对空的口嗨。3后续工作,比如编码和工作变更的依据。4一旦出现争议的证据。
建议读几书吧。
第一套是计算机程序设计艺术,学习软件的哥们,建议在大一的时候就要买一套,原因很简单,软件的核心是算法,这套书真正读明白了,你的大学就算没有白读。
代码大全2建议大二、大三的哥们好好读一读,这不是讲某种语言的书,实际是开发的经验总结,特点就是实战性强,很多东西开始未必理解,如果有个万把行程序打底,对里边的总结就会深有感触了。我的项目组是人手一本。对了,代码大全2的例子是面向对象的,代码大全1的示例是C语言,如果你学习C语言,是一本不错的参考书。只不过代码大全1已经绝版了,我去找找电子版
软件行业充满了各种新概念、定义,无数人在里边忽悠,我自己是工作了7年后,读了半年这本书,别的不说,反正想忽悠我不是那么容易的。同时,这本书可以说是承上启下的一本书,如果你想从软件研发走向软件研发管理。这本是一个不错的过渡读物。
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-20 17:58:02 | 显示全部楼层
还是关于电脑的,大概什么价位的笔记本够用啊
回复

使用道具 举报

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-9-20 17:58:16 | 显示全部楼层
请问软件工程专业新生,买轻薄本合适吗?dell的xps9380乞丐版
回复

使用道具 举报

1

主题

6

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-9-20 17:58:23 | 显示全部楼层
钱多,看性能高一点,内存大一点,硬盘大一点,钱少,4000-5000绝对可以,我们原来用的是286,都不影响学习,
回复

使用道具 举报

2

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2022-9-20 17:59:04 | 显示全部楼层
好的,谢谢!
回复

使用道具 举报

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-9-20 17:59:31 | 显示全部楼层
想要读研的话,本科选择什么专业,研究生选择什么专业呢?
回复

使用道具 举报

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-9-20 17:59:47 | 显示全部楼层
这一篇不错,感谢作者
回复

使用道具 举报

4

主题

7

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2022-9-20 18:00:08 | 显示全部楼层
这么好的文章竟然赞和评论那么少
回复

使用道具 举报

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-20 18:00:49 | 显示全部楼层
这篇文章写的很不错
回复

使用道具 举报

1

主题

5

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-20 18:01:47 | 显示全部楼层
C++好难学呀[捂脸][捂脸]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|香雨站

GMT+8, 2025-3-15 04:53 , Processed in 0.658448 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表