0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

程序员在大学里应该学什么

工程师人生 来源:工程师吴畏 2019-06-20 17:31 次阅读

首先我们得知道这问题的答案是个变量,他依赖于你的目标和天资能力,绝不唯一。当然大学的课程设置往往是唯一的,所以会有点矛盾。

这里最关键的东西是目标,大学学习只是达成最终目标高度的一个环节,他应该为最终目标服务。

当然大学生很难清楚的知道自己的目标究竟在那里,但要总归要大致知道自己的方向。

这个之所以关键是因为,这直接决定你应不应该学习某个东西。我是在做了很多年软件后,才发现软件和软件的差别其实比马和牛的差别还要大。

用流行的分类方法比如:前端开发、后端开发、.net开发,Java开发等会让人迷失焦点,

所以我一直觉得Barry W Boehm在《软件成本估算:COCOMOII模型方法》里的分类方法对学习更有帮助。

在这个分类方法里软件被分了三层:最底层是基础结构型(平台)软件的开发;中间层次是开发工具、系统集成、中间件;最上层是终端用户编程,也可以理解为一般应用的开发。

同时作者还补充了份数据说:在2005年95%的美国程序员是在做终端用户编程。

这似乎把话题扯开了,但其实不是,关键要大致定位下自己的方向。因为对于目标是基础结构的程序员和目标是一般应用的程序员,他们要学习的东西差别很大。

Donald Knuth的《计算机程序设计艺术》不是没用,但如果你花了2年把他啃了一遍回头专门做应用开发,那它真的用处不大。

至少和一个精通具体语言、框架、设计模式、面向对象、UML的人比只是钻研了《计算机程序设计艺术》的人反倒是在劣势,虽然可能后者更花时间。

反过来讲则是在算法密集型的工作里,那优劣情形就会掉过来。

无疑的什么都精通最好,但人的时间是有限的,而软件相关的知识是无限的,所以把学习聚焦在自己的目标上非常关键。

而目标是什么则要根据自己的实际情形来定。

假设说你真的感觉自己的能力挺好,就想做基础结构型的东西,去做MapReduce,去做操作系统等等,那首先要认识到的是干这个的人很少,竞争很激烈。

如果说在2005年美国只有5%的程序员是干这个的,那我估计今天在中国也顶多是这么个比例。

个人感觉,大学的计算机课程还真都是往这个方向培养人的,一旦真的走这个方向,那么大学的计算机课程还真用的上。需要好好学习,天天向上。

当然只上课也不行,把课上学的东西实践起来也很关键(比如开源项目)。

这里麻烦的事情是,干这个的可能只有5%,很多人即使很努力也不一定挤的上去。

那么假设说一个人很现实,说:国内排名靠前的几所学校凑凑也就5%了,竞争太激烈,我不选这个目标方向,我还是95%里做做吧,那这个时候我应该学什么?

我个人认为主要要学好一些比较硬的,需要大块时间学习的东西,而不要在花里胡哨的东西上多费时间。

硬的东西是指:

数据结构和基本算法。

不管是不是做基础结构性软件,基本的数据结构和算法知识还是要有的。

很可能不太会有自己从头写数据结构和算法的机会,但如果复杂度不知道怎么算,链表、红黑树、哈希表的差别都不知道,那就怎么都玄。

精通一门编程语言

具体是那个可以根据实际情形来选。但这里强调的是语言,不是IDE和框架。可以通俗理解为每个关键字背后的含义要整清楚。

这里的陷阱是学一堆语言,但那个都不精。

精读一个有点规模的开源项目(至少要超过2万行)

要找那种规模不太大,又比较有名的项目,一定要精读,争取每行都懂。

累积一定的代码量

不算IDE帮助生成的,争取也在2万行之上。

面向对象和设计模式

这点最好配合着下一点一起做。

从头考察一下某个框架

考察某个框架的内存机制、线程机制等。

整个学习过程中最常见的陷阱是学会操作一堆IDE和框架的使用,但实际上这事儿价值不大,程序员的价值符合反木桶原理,啥都知道一点的,大多时候不如某个上精通的。

同时除非很特别的公司,大一点的公司并不期望毕业生过来就能干活。

有上面的基础后,再突击下,应该可以面对大部分公司的笔试和面试。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序员
    +关注

    关注

    4

    文章

    931

    浏览量

    29566
收藏 人收藏

    评论

    相关推荐

    薪资高、青春饭,是不是程序员=青楼?

    花期太短。技术迭代快,年龄大容易失业。 就这几年的互联网环境而言,不管是前端、Java、Android开发等等行业。已经感受到程序员不是太卷就是工作难找,薪资过低。以前高工现在拿着中低程序员薪资
    发表于 03-06 21:32

    1月18号“纯鸿蒙”千帆启航,程序员预备!

    。 如何正确看待鸿蒙? 我作为程序员来说,首先是看鸿蒙的发展、市场开发岗位、薪资以及前景。 这几年对鸿蒙的发展情况来分析,从2019年开始鸿蒙的出来今天,华为鸿蒙取得了很大的成就。从“不兼容
    发表于 01-16 22:13

    程序员表白程序

    电子发烧友网站提供《程序员表白程序.rar》资料免费下载
    发表于 11-21 10:41 0次下载
    <b class='flag-5'>程序员</b>表白<b class='flag-5'>程序</b>

    今天程序员节长沙出招 全国首个!长沙为程序员打造“1024街”

    命名为“1024街”。 “1024街”定位为全球首个完全展现程序员技术创新和引领行业发展的人文街道,有华为、湘江实验室、北京大学长沙计算与数字经济研究院、中科曙光、长沙知识产权保护中心等多家企业与机构入驻,是名副其实的程序员街。
    的头像 发表于 10-24 14:29 351次阅读

    程序员节 | 今年程序员们都想要的礼物竟然是……

    原文标题:程序员节 | 今年程序员们都想要的礼物竟然是…… 文章出处:【微信公众号:微软科技】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 10-24 10:35 265次阅读
    <b class='flag-5'>程序员</b>节 | 今年<b class='flag-5'>程序员</b>们都想要的礼物竟然是……

    移植ARM DHCP服务器版本1程序员指南

    这本书由ARM DHCP服务器服务器软件提供, 假定ARM DHCP服务器移植源可以作为参考, 也假设您可以访问程序员的 C 和 ARM 组装语言指南。 本程序员指南是为有经验的内嵌系统程序员编写
    发表于 08-18 06:46

    霓虹灯程序员指南

    如果您对ARM技术完全陌生,请阅读Cortex-A系列程序员指南,了解有关ARM架构配置文件和一般编程指南的信息。 ·霓虹灯技术是ARM高级单指令多数据(SIMD)扩展的实现。 ·霓虹灯单元是执行
    发表于 08-17 06:32

    ARMv8-A霓虹灯程序员指南

    程序员,如固件、设备驱动程序或android内核开发人员•希望为基于Arm的目标设备优化库或应用程序程序员•非常热衷于Raspberry Pi爱好者本指南涵盖了如何开始使用Neon,
    发表于 08-08 07:25

    ARM系统跟踪Macrocell程序员模型架构规范1.1版

    ARM 系统跟踪大型电池程序员示范建筑规格V1.1 建筑规格
    发表于 08-02 10:11

    61.[程序员小飞]如何在3分钟内安装好数据库MySql和Navicat,简单又易懂

    程序员
    充八万
    发布于 :2023年07月20日 09:16:19

    Neuron C 程序员指南

    Neuron C 程序员指南
    发表于 07-04 20:48 0次下载
    Neuron C <b class='flag-5'>程序员</b>指南

    ISI 程序员指南

    ISI 程序员指南
    发表于 07-04 20:47 0次下载
    ISI <b class='flag-5'>程序员</b>指南

    打开 LNS 程序员参考

    打开 LNS 程序员参考
    发表于 07-04 19:50 0次下载
    打开 LNS <b class='flag-5'>程序员</b>参考

    LNS 程序员指南

    LNS 程序员指南
    发表于 07-04 19:49 0次下载
    LNS <b class='flag-5'>程序员</b>指南