首先感谢各位能够在百忙之中点开这个帖子,逛了很多年各种论坛第一次发帖,还请多多包涵。
我是一个 2017 年从一个成都三本层次的网络工程专业毕业的学生,由于当时想找一个 C++方向的工作,所以在校期间也做了点准备吧:
编程语言
主要是以 C 和 C++为主,从大一开始把《 C Primer Plus 》、 《 C++ Primer 》、《 Effective C++》中的大部分内容都通读了一遍以上,并完成了大部分书上的练习题,也零零散散了读了很多 C++方向的技术博客。
其它编程语言,学的比较杂,诸如 Web 方向的 PHP,前端( HTML,CSS,JS)就学的比较浅了,只是过了道基础语法和教学项目。没有往 Web 方向发力,就暂且不提了。
数据结构
学的时候是把《大话数据结构》通读了大部分一遍以上,能够把线性结构(链表,栈,队列),各种排序,二分查找等比较简单的知识点随手用代码实现。
数据库
只能用 SQL 比较熟练的进行 CURD 来为业务服务,对关系型数据库的底层概念没有深入研究过。
计算机网络
由于本身就是网络专业,计算机网络的概念有过系统性的学习,但是 Socket 编程没有深入学,当时只学到了调用 Socket API 写局域网通信程序的地步。
操作系统
只能说为了考试和面试了解基本的概念吧(比如进程线程概念,一些 CPU 调度算法,生产者消费者问题等),没有对底层的实现进行深究。
算法
比较弱,只是简单的在 leetcode 上刷了几十道以数组,字符串,链表为主的中等及以下难度的算法题。
框架
在校简单的玩过 MFC,太复杂和古老抛弃了。Qt 的运用比较熟练,实习期间能够用 Qt 和公司内部的业务框架完成领导安排的业务代码。
项目
在校时网上查音视频理论知识,然后利用 ffmpeg 和 Qt 提供的模块做了点简陋的音视频播放器。
其它
英语过了四级。技术上学了其他很多很杂的东西,但是不够深入,比如说设计模式,Linux 环境下的开发,Git,Shell,Python,以及一些计算机底层的理论知识等等,都学的比较泛,没有进行过深度的思考和具体项目的反馈。买了《深入理解计算机系统》,《代码大全 2 》等知名书籍也只是泛泛的看了前几章,对这些砖头书没有足够的毅力坚持看完。
以上基本概括了我 17 年毕业时的技术能力吧。我是在 16 年 11 月的时候开始进行所谓的实习(实习的工资,社招的活),在成都发现 C++的工作真的难找( 11 月中旬校招基本结束了),很慌忙的就去了一家和学校合作的军工项目人力外包的小公司,通过了某个研究所的笔试面试之后就开始正式上班了。
期间做了一个项目,从头开始完全一个人负责,功能是在嵌入式系统的平板电脑上对飞机的各种设备进行数据检测,状态监视,语音实时通话,参数设置等功能。当然底层是依托于操作系统提供的 API,研究所里现有的业务框架,硬件商提供的 API 等实现的。通过这个项目熟悉了 Qt 框架的应用,Linux 上的常用命令,巩固了 C++语法,也加深了对计算机底层概念的理解。
但是由于我所在的那家小公司承诺的加班费分文不给,甚至拖了 20 天工资不发,再加上驻场在研究所里开发有一种外来人的感觉,我在拿到毕业证后立马离职,来到了现在工作的这家公司。
( PS:直到现在,拖欠的 20 天工资和半年的加班费依然没能要回来,由于当时没有签订任何实习的合同,所以也无法通过法律途径要回来了,这算是给刚踏上社会的我一个深刻的教育吧)
现在我所在的公司是成都一家以军工项目外包为主要业务的公司(非纯外包),我由于之前实习期的工作经历匹配度高很顺利的进入到了这家公司,从毕业开始加入到现在已经半年多了,工资到手还是刚进来时的 5000 元左右,没有其它任何金钱上的补贴和福利,除去房租和伙食,存不了几个钱。
在这半年间,我和几个同事共同完成了一个用于科研软件的项目,我还是负责的用 C++通过 Qt 框架写客户端,客户端大概有两三万行的代码。这个项目的核心功能是算法,但这些算法是外包给了几个大学的教授来实现的,我们公司只是负责调用他们提供的接口来实现客户要求的业务功能。而我负责写的客户端个人觉得并没有啥技术含量,都是些业务功能,界面美化,SQL 语句 CURD。但也不是完全没有收获的,除了更加熟练的应用 Qt,主要是我能应用一些面向对象的思维去把代码封装的更好看更好用,也能应用一些设计模式到项目上了。总而言之,相比于上一个项目,我在代码的质量上提升很大,但技术的广度提升很小。
公司的规模在成都算中等吧,和直属领导以及同事们的相出也很愉快,双休,几乎不加班,有自己的时间去生活,去学习。但是我所在的岗位所用的技术面太窄,市场太小,感觉这会限制我未来的发展。即使我也在工作之余自学其他编程语言,看计算机经典书籍提升内功,leetcode 刷算法题,但在当前公司做的项目经验与互联网公司的技术栈没有交集,这让我对未来的职业生涯产生了巨大的担忧,毕竟 C++ PC 客户端开发的市场实在是太小了。
这一次过年回老家和两个朋友聊了很多,给了我挺大的刺激吧。这篇帖子的出现也正是因为这次聊天,以下为交流得到的内容:
朋友 J:
16 年成都某三本通信工程毕业,在校期间参加了培训结构和他们学校合作的 Java 培训班,大四去了成都一家给政府做外包的公司写 Java 以及简单的前端页面,工资 6K * 13。毕业后觉得做外包对个人技术的提升有限,遂离职进入一家成都的家具互联网公司做开发,工资税前 4K !但是在这家互联网公司的工作经历和他自身的努力,让他熟练的掌握了 Java Web 开发的各种常用框架的应用,前端也能用 Angular 完成公司布置的任务,工作大半年后,因工资太低在 2017 年新年后离职。离职后独身前往上海,在面试 11 家公司之后进入了现今工作的公司,工作内容是给银行做项目,他也是前端后端都写,现如今已经具有了独立负责一个项目前后端的能力,还能够为公司招聘进行技术面试,工资也由最初的税后 8.5K 涨到了现在的税后 12K。
今年他在网上花了 7000 报了大数据网课班,公司的业务也会涉及到区块链技术,他准备通过一年多的努力向一线互联网公司跳槽,从此走上人生巅峰。
朋友 D:
和我同一届,17 年成都某普通二本水利工程毕业,在校时签订了 XXX 局的这种国企,因毕业后工资仅 3000 多,工作辛苦,觉得前途渺茫,工作一个月后遂离职。然后离开成都去了广州做代购维持基本生活,闲暇时间准备考研,经过几个月的努力,今年考研分数 365 通过了他报考的天津的一个一本大学的初试,年后进行复试。他希望通过考研进入更好的学校,将来能够进入更宽广的平台得到更好的发展。
我的这两位朋友都是毕业时处于较低的起点,通过自身的努力+正确选择,让自己的生活变得更好。而反思我自己,从实习到现在一年多的时间里似乎在原地踏步,一些大学完全没有计算机基础的同学利用大四通过参加培训班和自学 Java Web 或者前端几个月下来也找到了工作。
因此我很迷茫,我所掌握的技术短期内不能给我带来更好的生活,而且 C++学起来也不是那么容易。要是在校期间付出相同的努力去学 Web 可能不是今天的这种局面。可是没有如果,在现阶段我只能继续努力的学习和写项目,我计划了几个努力的方向,却很迷茫不知走哪条路,希望得到指点:
边工作边准备考研
似乎进入大公司最简单的方法就是校招,94 年的我今年 24 了,如果考研能顺利的话,最快毕业时已经 28 岁了,期间没有工作带来的收入了(我的家庭是四线城市的工薪阶层)。
转方向,去学 Java/前端 /Go/Python 进入互联网公司
工作之余通过看培训班视频入门,看书加深理解,学会相关的编程语言基础,框架的应用,期间做一些个人项目方法 GitHub 上,发博客进行知识反馈,然后转方向向互联网公司跳槽。
我把我的这个想法告诉朋友 J后,他告诉我他们公司招人首要还是看真正的商业项目经历与本公司业务的匹配度,计算机基础知识掌握得好只能算加分项,个人项目在面试时很可能不会被认可。
继续深入学习计算机基础原理,向 Linux 下 C++服务器开发转
这一条路,是我在这次和朋友 J,朋友 D 交谈之前自己正在选择走的路,按照牛客网上那些拿了 n 多 C++ offer 的人的面经来进行学习,深入的去阅读和理解计算机经典书籍,特别要掌握好操作系统,数据结构与算法,具体的技术上阅读《 APUE 》、《 Unix 网络编程》等。
还是继续加深当前 Qt 工作方向的学习
能让我有活路,但工资低,市场小。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.