您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
自学成才的程序员通常缺少哪些技能?
都是,原理,工作自学成才的程序员通常缺少哪些技能?
发布时间:2020-12-06加入收藏来源:互联网点击:
自学成才的程序员通常缺少哪些技能?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
这个问题看到时有点感慨自己学习算法这么久还是那么水。。自学成才的攻城狮们有个明显的优点——学习能力很强,一个新东西学个几天就可以上手。但同时也有个明显的缺点,基础不强,容易陷入某些未知领域的半知半解状态。
这就像三国志中一个角色只专注于某个属性学习不放,但其他方面实在是经不起敲击,一出场就露馅。实话说我觉得学习能力强又努力的人永远是香饽饽,为什么跟专业出身的人比会缺少点什么?那只是因为时间上的积累还不够,假以时日专业性强的那些人都是学习能力强且勤奋的那一群,这一群人才是金字塔尖,而不需去区分自学成才或民科。
说到要补充的知识内容,计算机专业的几大独门心经:数据结构/算法,计算机组成原理/体系结构,操作系统,编译原理,网络原理等。
数据结构/算法:在计算机科学或信息科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。(来自维基百科),这是修炼的内功心法之一。操作系统:了解了操作系统的原理以后,才能更好的操作我们正在使用的系统,属于计算机的必修课程之一;
编译原理:如果说计算机语言是魔法咒语的话,编译原理就是告诉你,这些魔法咒语是怎么生效的,是怎么通过机器码来告诉机器我们要执行什么动作;
网络原理:可以说网络颠覆了我们的生活方式,万物互联,所以在学习计算机时要了解一些常用的网络协议;
计算机组成原理/体系结构:这个很有趣,和操作系统有紧密联系,但这个是从硬件的层次上面(大部分来说)来解释计算机的组成。
既然别人已经赶在我们前面了,那么就要花更多时间弥补这缺失的50米。我推荐几本书吧,因为看书的进度可以动态调整,有问题也可以私信交流,我也可以复习下之前的内容哈。
书籍资源推荐
1.《代码大全》
这是一本神奇的书,读《代码大全》与读别的书不一样的就是,总能找到共鸣。书中所讲到的很多问题都是工作中实际会遇到的,很多经验都是从实际工作中总结出来的。很多东西都是以往所看的其他类技术书籍不会提到或者不会重点提到的,但却是自己工作中有深刻体会的。
2.《数据结构与算法分析——C语言描述》
3.《计算机系统概论(第2版)》
内容与《编码》相似,都是从底层到高层,一步步地带你了解计算机。 但是《编码》却更像是用来消遣、娱乐、科普的书。 而这本《计算机系统概论》,就是彻彻底底的教材书,一本很好的入门计算机的图书。
其他资源
上图是一张教人如何更好选择第一门编程语言的指示图,有兴趣的朋友们需要高清图请自行下载链接即可。
下载链接:
https://github.com/GraySilver/source
如果你对学习人工智能和深度学习感兴趣,可以订阅我的头条号,我会在这里发布所有与算法、机器学习以及深度学习有关的有趣文章。
(码字不易,若文章对你帮助可点个赞~)
回答于 2019-09-11 08:43:50
我的团队里就有这样很明显的例子。这个哥们在我团队工作已经有三年多的时间,在我看来,他的技术水平很不错,对具体指派的工作完成的也很好,但系统思维能力比较缺乏。理论基础不够扎实。往往都是遇到什么问题去解决什么问题,针对具体的问题,去整理相关的知识点。就造成他经常容易钻牛角尖。逻辑上转不过弯儿来。而反观那些科班出身的程序员,从他们的工作过程当中就可以看到,在理论基础这一块,确实是有相对优势的。往往在谈论一个问题的时候,经常能够触类旁通。能够系统性的去分析和解决问题,而不会过于纠缠某个具体事件的细节。
当然,这只是我工作当中遇到的例子,毕竟这个问题还是因人而异的,不能以偏概全,但我相信一点的是,无论是自学也好,还是科班出身的也好。要想能够有更高的成就坚实的理论基础还是很重要的。
毕竟投机取巧,只能领先一时要达到真正的最后目标,还是要脚踏实地,一步一个脚印的去学习,提升自己。没有终南捷径可走。
回答于 2019-09-11 08:43:50
一、知识体系不够全面,专注于编程语言
比如说,许多自学 C 语言的程序员,往往就执着于语言本身,一些关键字、语法掌握得很熟,却很少去了解与编程相关的其他知识。比如说,编译原理,计算机系统组成,等等。从表面上看,这些东西似乎与编程关系不大,但在实际应用中,系统地掌握计算机知识有助于我们更深刻地了解相关原理,更利于框架的设计和排错。另外,一些与计算机学科关系密切的学科水平往往不够高,比如英语。
二、不够规范
由于自学者通常是单枪匹马地独干,不用与其他团队设计的组件接轨,因此在许多方面编码往往不够规范。比如说,一些接口的设计,编码格式,注释说明,变量命名方法,第三方库的使用,等等,通常都是全凭个人的主观意志。有时候,当碰到困难时,甚至会编写一些极其“恶劣”的代码段,只要功能实现了,凑和能运行就行。
三、团队意识较弱,缺乏严谨的工作态度
同样,由于自学成材的开发者少有开发大型项目的机会,也缺乏磨合,在一些方面会比较偏执。在实际工作中,经常碰到一些程序员过份追求简洁,写出的代码坚涩难懂。还有一些程序员不注重代码的复用性,从不曾考虑将常用功能写成模块,往往接一个工程,就需要将相关代码全部从零开始写。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |