关于程序员成长的一点思考

一、程序员应该打好基础

1. 现在开发工具众多、语言泛滥,经常听人说”不学C++神马都是浮云”、”C++才是万王之王”,C++就真比PHP、Lua、AS、JAVA牛吗?

其实不在于语言本身,而在于C++依附的平台。因为最靠近操作系统,所以能发挥其它语言不具有的性能优势,而且很多数据结构、算法、特殊功能类,C++是不提供的,需要自己实现。这时就需要自己去温习”数据结构”、”算法”、”TCP/IP”、”操作系统原理”、”编译原理”等这些知识。正因为如此,我们学习的东西被沉淀下来,也正因如此,C++经过定制的功能比封装好的功能性能高。

我上大学做项目时,用的是.net平台C#语言, 因为我本性好专研,老师都是把需要研究、比较难的问题交给我。但C#无论是性能和功能都是都是无法跟C++比的,记得当时是要做一个”远程控制”软件,配置IP和端口后需要连接动态生成客户端程序(木马),但C#是不提供这个功能的。这也是我工作后转为C++程序员的原因,碰巧也是开发远程控制软件。刚开始写出来的程序偶尔会莫名奇妙的崩溃,但经过两个月和更长的时候后,我掌握了C++。在此要感谢我工作时的指导老师翁跃龙,没有他我的路不会这么平坦,他教我的不仅仅是技术,更多的是解决问题得思路和做人。

2. 有些人会说大学学的东西是肤浅的,是没有用的。想想看,在学校的时候我也经常这么想,但出来后才知道这些东西有多么重要。不过大学学得再扎实,出来后仍然是需要再温习过的。因为上学毕竟实践少,所学不能所用,计算机是个应用驱动的学科。我们再来看“计算机考研”专业课考的什么(这里并不是说考研就一定好),”数据结构”、”计算机组成原理”、”操作系统”、”计算机网络”。”数据结构”、”计算机组成原理”这两门课程摆在前面,可见其重要性,分别是软件和硬件最重要的两门基础课。我不相信不学好”数据结构”能够把性能优化做得很好。若说自己学好了,能不看书、不查资料,说出”B+树、B-数的应用和区别”、”KMP为什么能快速匹配字符串”、”快速排序在什么情况会蜕变为o(n^2)”吗?

我也不相信不学透”计算机组成原理”能搞通汇编和内核,不知道”CPU和I/O的交互过程”、”指令的执行通路”、”CPU运算器的工作原理”,如何写出高效的汇编代码?如何弄清楚内核中”中断”、”GDT”、”IDT”这些概念,实模式保护模式如何切换?”操作系统”和”计算机网络”则是两门非常重要的支撑学科,信号量为什么是最快的同步方式、线程调度比进程调度快、为什么要做内存缓冲池,这些都是来自”操作系统”。而”计算机网络”主要是讲述TCP/IP的,为什么德问”对于一个具有几百万粉丝的用户,数据如何实时投递到所有用户?”要使用多播的方式解决、”如何计算出C/S单向的延迟?”发送ICMP包测量,这些都是来自它。

我们大学学的课程经过多少国内外知名学者专家研究过的,所以计算机理论课是基础,是解决问题的根源。”算法分析与设计”是”数据结构”的延伸,Divide Conque、贪心、动态规划对于程序算法的优化有很大的指导意义。同样,”计算机体系结构”也是”计算机组成原理”的拓展。其次,”编译原理”、”数据库”、”软件工程”等学科的重要性也不言自白。

二、实践、理论、再实践

作为程序员的我们,满足于实现一个程序功能的快感,得意于从网上下载别人的代码加到自己的程序中,陶醉于自己写了上百万行代码。有想过自己是在创造吗,还是装配车间的技术工人。日趋成熟的开发工具,逐步把有丰富想象力的我们沦为奴隶。从网上下载个压缩库就用着、成熟的加密算法直接使了、包装好的类库就include。为何不探究其算法实现、性能优化、底层机制。有人会说很”难”啊!究竟是难,还是掌握的知识不够,还是理论没有达到一定高度。

很难想象不学习”计算机图形学”,去做3D项目客户端图形算法的后果;不研究”数据挖掘”去分析大量客户数据会做得多好;不攻读”概率论”、”线性代数”、”人工智能”去设计AI有多么智能。很多人说,这些东西游戏用不着啊,学了有什么用?我承认初学编程时,这些东西只是高谈阔论。若我们工作了n年后,还只是熟练地做些coding,和刚毕业的学生有什么区别。编程工具只是”工具”而已,别忘记了我们是改变世界的程序员,不提高理论,何以创新、公司拿什么优势和别人去竞争。

“研发”是”研究”和”开发”两大块,只做开发,不做研究,对个人和公司都只是短期目标, 当然理论提高了,是需要投产的,不然理论很快沦为”空想社会主义”,公司白花银子养活研究部门。”实践、理论、再实践”,符合马克思主义哲学思想,也是计算机学科的价值体现。真正的计算机科学家不是只搞理论的,理论是要应用到产品中的。工程师也不是只做开发不做研究的,是要应用创新,理论微创新。计算机科学家相比于程序员,主要是数学功底相当深厚,所以他们能在理论上有突破。

三、技术、管理两路线。

1. “游戏能玩多深,技术就能做多深”,这句话说得很好。只因为我们执着,所以在游戏中能攻破一层层难关,凌晨2、3点还能练级打装备。若能走回正道,做技术就想玩游戏一样,技术做不深才怪呢。走技术路线的人,一定是对技术痴迷的人。但要走得长远,我们需要把技术做穿、做透。如何做穿、做透?计算机底层(C、汇编、逆向工程、驱动、内核)、计算机算法(网格计算、音视屏压缩、语音识别…)、架构(软件工程、跨平台、多语言等)都要有涉及。只有我们掌握了这些,才能做到”看问题看到本质”、”思想有穿透力”。这些才是最宝贵的,需要沉淀下来,仅仅靠做项目、写代码是无法达到的。

2. 对于走管理路线的人,是具有”完成任务为第一要务”、”有计划、善于管理时间”、”善于与人打交道”性格特点的人, 重要的是”综合素质”,而不是”专攻”。但是这些都是可以改变的,很多公司也会选择技术做得最优秀的人做管理。由于我是一个技术痴迷狂,管理这块,我没有发言权,不做多解释。

四、心态。

1. 人活在世界上在于奉献而不是索取,帮助别人是一件很快乐的事情, 作为程序员的我们心胸要开阔些,低调些、虚心些, 公司的李老师、老张就是一个心胸很宽广、低调的人,值得学习, 三人行必有我师,我们熟悉的只是自己的这一块、这个领域,不懂的地方要虚心向别人请教, 我见过浮躁、过于自信的人,也见过做人低调的人,发展结果完全不同。

2. 乐于分享,支持开源。这是一个很需要心胸、气度的事,也是决定个人、公司发展快慢的重要砝码。技术发展日新月异,总守着自己手中的那点技术,得不到长足的发展。中国两千年的封建历史、门户关闭政策还不够惨痛吗?”技术是交流和玩出来的”,这是锐安龙哥告诉我的。他也是一个大黑客、正义的黑客,开源是黑客的一项重要精神,所以黑客能引领技术。

3. 每日学习。很多人认为毕业了就不用学习了,或者不用那么那么地学习了。这是一个非常非常错误的思想,无论何时何地都要把自己当成菜鸟、应届生地去学习。书本是学习的一个捷径,Google、百度解决问题是快,但不是系统化地学习。看书要了解作者背后的知识底蕴,想一想这个问题得解决作者是怎么想到的,这样比单纯解决一个问题更进一层。更重要的是聆听作者的心声,感受大师的心态。最后给大家推荐”黑客与画家”这本书,写得真的很好,老吴不提,我还不知道。

时间: 2024-10-08 19:22:11

关于程序员成长的一点思考的相关文章

【转】关于程序员成长的一点思考

新闻来源:51CTO 程序员的我们,是否想过今后的路该怎么走.如何发展.技术怎样提高?其实这也是我一直在思考的问题.下面就此问题,分享下我的看法.因为我阅历有限,有什么说的不对的,大家一起喷! 一.程序员应该打好基础 1. 现在开发工具众多.语言泛滥,经常听人说”不学C C++神马都是浮云”.”C C++才是万王之王”,C C++就真比PHP.Lua.AS.JAVA牛吗? 其实不在于语言本身,而在于C C++依附的平台.因为最靠近操作系统,所以能发挥其它语言不具有的性能优势,而且很多数据结构.算

android程序员成长路径的思考

我之前就想过要写这个话题,不过之前没有什么认识,我只是在阅读别人的见解,看法.昨天晚上,我阅读了这篇文章<产品经理罗永浩:用户体验探索,没有尽头>,这篇文章描述了罗永浩对锤子手机设计细节的阐述,及罗永浩对产品经理的看法,认识.恰巧阅读了这篇文章,我从中想到了android程序员的成长路径. 成长路径之一,可以做出产品经理要求的各种界面效果. android程序员,是做android系统上的应用的,一个应用就是一个产品.我是这样认为的,你可以做出好的产品,那么,你就是优秀的android程序员.

读书笔记——程序员成长的烦恼(吴亮等)

最近在读一些技术领域相关的书籍,以了解那些传说中的技术牛人是怎样在日常生活中一点一滴积累自己的工作经验的,从而更好地让自己明白以后自己要走的这条路会遇到什么挫折,让自己更加勇敢的有准备的迎难而上. 昨天开始读程序员成长的烦恼,才明白原来现在的技术牛人在成为牛人之前都曾经经历了那么多的不如意和挫折,也为刚入IT不久的小鲜肉我坚定了从事技术开发的信念.今天读这本著作我摘抄了以下学习的几个方法供大家参考. 1:以前自己做过的项目一定要经常拿出来看,总结和改善--这一点我需要加强和改善 2:通过论坛博客

《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学校复习,都希望你过好这个长假. 没有出去玩的也不用羡慕别人,利用这段时间充充电,不比去旅游看人头要好的多吗? 最近终于把我的原创文章整理成一本电子书了,趁着国庆开始之前发布出来,希望对你有所帮助. 这本电子书整理了我过去一年时间里在微信公众号[黄小斜]里创作的文章,包括Java学习.求职面试.成长心得.感悟思

我对程序员身体健康的一点感悟《转》

我对程序员身体健康的一点感悟 本来这个话题想写大一些,但是觉得自己的思想境界比较浅,还是从自己谈起.每当在公司看到新来的员工拼命的加班的时候,我总想说两句,但是说了怕大家认为我的想法消极,所以又开不了口.只好在这里随笔一篇,如果看到了对你有用,说明我这篇随笔就是有用的. 1.身体健康是无数个0前面的那个1,即没有1,什么也没有.以我自己为例,在学校的时候我每天下午能够打上几个小时篮球都不会觉得累,毕业第一年没什么感觉,直到第四年的时候,缺少锻炼以及长期的加班,我得了严重的颈椎病.在08年那会,严

程序员成长系列(一):手里必须有一套自己的框架

转眼间工作三年了,对于程序员来说,三年算是这个行业的第一道坎.回首过往,大多都是进行重复性的工作,偶尔的也会进行技术攻关,但是没多久就忘记了,除了找工作的时期,平时是不会理会的. 不知不觉间发现自己这是在通货膨胀中不断贬值. 只要还有精力,学个五年十年那都不是问题,问题是这五年十年都学了些什么.经过多天的考虑,有必要整理一下这三年的所学所得,而且手里必须得有个拿得出手的东西.于是有必要整理一套自己的框架,而且吃透弄熟,把一些常用的功能组件都剥离出来,对以后无论是做管理还是搞技术都有莫大的帮助.

程序员成长之路

程序员的成长之路就是不断学习,不断地提高. 人为财死,鸟为食亡.努力地学习,努力地提高自己,也是为了希望收入的不断提高,尤其在当今社会,有钱就是大爷. 我这么说,可能有人会骂我了. 现在都什么社会了,自己幸福就好,谁会在乎钱啊,现在追求幸福的途径有很多. 小的时候,年轻的时候,不懂事的时候,我也是这么想的,可是,接触社会多了,原来是自己太单纯了.也可能是您的境界太高了. 经历过才有资格淡泊,做过有钱人才有资格说不爱钱,上过大学,才有资格说大学没用. 程序员成长,学习,学习,再学习,交流,交流再交

《程序员成长的烦恼》

写在前面 首先声明这是一本2011年出版的书,所以不具备实时性,如果你想找一条别人走过的路借点儿经验,那么这本书并不适合你,因为书里给的路差不多都已经out of date了. 如果你已经有了明确的目标,只是不知道该怎样更快地向目标靠近,那么赶紧看看吧,书里的前辈都是在前进的道路上无所不用其极才获得成功的. 如果你也是搞(计算)机的,也是挨踢人士,但目前有点儿迷茫,不知道下一步该怎么走,那么,快点一口气看完它吧. 读后感 <程序员成长的烦恼>一书讲述了还在IT业的门外游离徘徊,还在编程的道路上

能从普通Java程序员成长为架构师,只因做到了这3点

毋庸置疑,Java 是目前世界上最流行的语言,也因此作为 Java 程序员,面临的竞争异常激烈.那么,该如何才能"更有竞争力"?如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入吧,会节约很多时间,减少很多在学习中遇到的难题. 所谓竞争力,其实包括两个方面:搞得定当下的事,并且未来有不错的发展空间.具体如何体现呢?有下面 3 点: 1.既然选择了 Java 技术栈,深入学习 Java 是首要的.不管是 Web 应用.后端服务还是大数据等等,