码农和架构师的差别在哪里

从题目看文章,大家的第一想法是本篇文章是一篇讲述计算机基础知识和编程之间的关系,但是为什么开篇是这样的呢?当然这样的开篇并没有多大的意义,唯一的目的就是吸引读者而已。

纵观计算机专业的学生在毕业之后大多数会走向编写程序的道路,当然也会有部分同学有自己更感兴趣的事情,从而在毕业之后选择其他的职业。在这里根据我个人在毕业之后的编写程序的道路,写下一点总结,希望能和大家交流,有什么不对的地方,希望大家能给我指正,因为我个人觉得“三人行必有我师”是一句很有道理的话,每个人对同一件事情都有自己的看法,也就会发现别人没有发现的但是又有一定道理的观点。

上面的话说的有点模棱两可了,主要也是受到自己最近所阅读的书籍的影响,废话不多说,接下来进入正题。

这一节的题目有点大,码农和架构师的区别在哪里呢?如果问你自己你会怎么回答呢?对于我来说,主要的区别在于以下几个方面,相比与码农来说架构师具有更加扎实的基础知识、更好的抽象能力、更丰富项目经验。

扎实的基础是必备的而且是最为基本的条件,但是就我个人看来,目前的大部分学校的计算机相关专业的学生基础都是非常的薄弱,不是为了应付考试就是为了应付面试,才去把相应的计算机的基础课本翻出来看看背背,应付完了之后一段时间之后就忘记了,因为觉得这些东西没有什么用,而且枯燥乏味,不如动手写两行程序更让人有一种满足感。于是我们放弃了计算机基础知识的学习理解,慢慢的转向机械式的调用API,虚假的成就感挡住了我们前进的道路,限制了我们思考的深度。越是在这种情况下,我们反而会自我感觉良好,觉得好像自己如果毕业之后马上就能大展手脚,成就一番事业。然而一切的一切都是一叶障目,挡住了我们本来应该前进的步伐,而停滞不前,大学的时光就这样被白白的浪费了。只有当我们真正的参加到工作、接触到了更多的真实的项目、更多有经验的人的时候我们才发现原来自己在学校引以为豪的东西只不过是井底之蛙眼中的那一小块天空,在这个时候我们的眼光慢慢的打开,看到了我们以前一直没有注意但是又熟悉的东西。但是我们基本上只是熟悉而已,在这种情况下才明白计算机的基础知识是多么的重要,它是你理解更高层次的概念的引路石,没有它们做铺垫完全就没有办法理解程序语言中的很多概念,不能很好的掌握其中的设计思路、设计理念,就没有办法写出高质量的程序,一旦出现问题就像无头苍蝇找不了前进的方向、然后就病急乱投医,花了大把的时间却没有得到多大的成果。慢慢的慢慢的感觉如果自己不把那些基础知识恶补起来,那么在自己职业前进的道路上会非常的艰难。

刚才上面的那些都是我个人的真实的写照,那段经历也是我为什么一直强调计算机基础知识重要性的原因了,当然后来我自己也恶补了基础知识,并且将其应用到了我的日常工作中,对我自己的提升是非常显著的,包括在源码的阅读上,以及重要框架的设计上,都有着举足轻重的作用。

在恶补计算机基础知识的过程中,我发觉有一些概念是很抽象的,文字没有多长,但是就是很难将该段文字总结的场景或者是过程在大脑里面清晰的还原(对于抽象的概念,我会通过翻阅其他的资料将它和某个场景或者过程联系起来,这样对抽象的概念的理解会更加的深刻,而且不容易忘记),在这种情况,需要的是翻阅相关的资料,以及思考,在现代这个互联网的时代,我们渐渐的喜欢快节奏的东西、喜欢上不用太多思考的东西,所以我们离思考也越来越远,但是很多深刻的东西仍然需要我们不断的思考才能理解其本质,才能真正的唯我们所用,只有唯我们所用了,我们才能在其基础上创造更多更好的东西。

项目经验当然也是必不可少的,项目经验带给我们的思考是技术和需求的一个契合的问题,什么样的需求用哪些技术能更好的完成,以及技术之间如何搭配使用可以达到更好的效果,这就有点感觉想厨师通过不断的试菜完成自己的菜谱一样,通过项目的锤炼,总结出自己的菜谱。

计算机基础知识包含哪些?

在这里说计算机的基础知识有点妄自菲薄了,毕竟自己接触计算机的时间也不是特别久,而且也没有什么建树,不过抱着分享的态度在这里陈述一下我个人的理解。

首先不得不说的是《计算机操作系统》,计算机操作系统是非常重要的基础知识,建议在学习操作系统的时候,仔细去了解一下操作系统的启动流程,操作系统的启动流程对于真正理解什么是操作系统有着特别重要的作用。里面进程、线程概念一定要深入的理解,建议配合《Linux内核源码的分析》来看,这样可以有一个比较直观的感受,当然还有内存的管理机制也是非常重要的,如果对于以后想要从事操作系统底层开发的人来说,还需要了解可执行文件的格式相关的信息,如果想要自己动手写一写,可以先从修改和编译Linux内核开始,当然还有一本书籍也不错《30天自制操作系统》,这本书呢必须得有一定的硬件基础才能看懂,建议看一些系统结构相关的数据,还有就是不得不参考的《intel80386》的手册。

还有就是《计算机网络》,在现在这个互联网的时代,计算机网络是根本,所有必须的好好的学习,这些基础知识不论是对以后写程序,还是以后生活中的使用都是至关重要的。

最后就是《编译原理》、《数据结构》,这两本书籍建议好好的品读,比如说《编译原理》能帮助我们理解为什么程序从源代码到可执行程序的过程,还有就是不同语言之间如何相互调用的(同时也必须了解可执行文件的格式)。比如《数据结构》可以帮我们理解数据库的实现原理,文件系统的实现原理等等,建议可以看看《Linux内核的设计与实现》中的ext2文件系统的实现源码!

最后还有就是好好的把数学学好,什么《高数》《线数》等,特别在图形图像里面用的很多

多的就不多说了,如果把计算机的基础知识学好了,其他更加高级的技术只是在基础知识上的重新组合!

技术
©2019-2020 Toolsou All rights reserved,
华为认证HCIA-AI人工智能NOI2019 游记消息质量平台系列文章|全链路排查篇过拟合和欠拟合的形象解释Unity 场景异步加载(加载界面的实现)Faster RCNN系列算法原理讲解(笔记)纽约年轻人计划“重新占领华尔街”:维护散户利益用C++跟你聊聊“原型模式” (复制/拷贝构造函数)初识python之技巧总结篇中级JAVA程序员应该掌握的数据结构知识