7点经验
来源:互联网 发布:玄武吉他淘宝店链接 编辑:程序博客网 时间:2024/06/04 18:48
1.好奇心
刘慈欣在《朝闻道》中描绘过这么一个情节:在古老的非洲大陆上,有个原始人无意中抬头仰望星空,凝视的时间稍微长了一些,超过了外星人设置的阈值,立刻拉响了人类即将产生文明的警报。因为外星人认为,人类已经产生了对宇宙的好奇心,文明的产生,科技的发展不过是一瞬间的事情。
确实是这样,好奇心驱动人类不断向前,在短短的几千年(相对于长达几十万年的原始时代)里就登上了月球,并且努力向其他行星拓展。
对于程序员来说也是类似,如果你看到新技术,新产品没有像小孩看到新玩具那样两眼放光,没有想赶紧在自己电脑上玩玩的冲动,你就需要仔细考虑下是否真的对软件开发有兴趣?如果根本没兴趣,不要浪费时间,还是趁早转行,有更多有前(钱)途的职业在等着你。
没有好奇心,就不愿意追本溯源,追求技术的本质。
没有好奇心,就难于静下心来,耐得住寂寞,远离浮躁和代码奋斗,更难于跨过这个苦逼行业带来的种种挑战,走到架构师这个位置了。
没有好奇心,就不愿意学习新技术,一个架构师,如果没有对技术的敏感度和前瞻性,一直抱着一套技术架构不变,估计很快会被淘汰。
当然自制力强大的人除外,但话说回来,靠着自制力让自己做自己不喜欢的事情,岂不非常痛苦?
我在上公司的一个关于Leader的培训课的时候,老师一直在说Passion(激情),Passion,Passion,但我一直觉得没有好奇心,没有兴趣,怎么会产生Passion呢?
所以,对技术的好奇心/兴趣,是一切的基础。
2.养成计算机的思维方式
之前在“码农翻身”公共号发过一篇文章,叫《学会编程,而不是学会Java》说的就是要能够以计算机的方式去思考。
现在的计算机还很“弱智”,你不能这么说:『电脑,我要创建一个像Java的ArrayList类似的类,有个get、add、remove方法,还有这个ArrayList的容量不是固定的,能够自增长,快点给我写出来!』
现在的电脑当然写不出来。
相反你只能用计算机能理解的方式,用非常非常低级的计算机语言去告诉它做事情:创建一个类,分配一个固定大小的数组用来存放数据,用一个数(size)来记录数组里存了多少数据。如果数组满了,就需要增大数组,并且把数据从老数组复制到新数组。
这里边有很多很多的烦人的细节需要你去处理,一不留神就会出错—计算机编程就是这样。
养成计算机的思维方式,流畅的把人类语言的需求转化成计算机语言,这是程序员的基本功。
很多人会语法,也懂框架,但是在基本功上却不过关,只能在初级程序员上踏步。
这个基本功的训练就是数据结构和算法,我的经验是多做习题(大学时我把数据结构后面的习题都做了一遍),让这个思维在脑子里固化,以后的编程就可以信手拈来了。
3.扎实的基础,并且能融会贯通
我很久之前参与过一点开源软件的开发,有幸看到了一个老程序员的简历,让我震惊的是他竟然在Altair这个最早的电脑上编过程序。
没错,Altair就是那个连显示器和键盘都没有,靠拨动开关来输入,靠指示灯来输出的所谓“个人电脑”,比尔盖茨和保罗艾伦在上面写了一个Baisc的解释器,从此开始微软之路。
如果有了在这样的机器上编程的经历,我相信这些老程序员对硬件,驱动,操作系统,应用软件的理解要远远超过我们现在这些人。
我之前要写文章遇到了一个问题:一个进程要读取文件,在底层用的是DMA的方式,DMA完成文件读取以后要通过中断让CPU去处理,但是CPU和中断处理程序根本不知道进程的ID,它怎么去和进行关联,如何去唤醒那个等待的进程?这个问题让我意识到其实我对计算机的基础也并没有融汇贯通。
我们大学里都学过计算机组成原理、操作系统、编译原理、计算机网络、数据库、汇编语言,能不能把这些知识融会贯通,打通任督二脉,在我们的脑海里建立一个计算机运算的图景?
把这些知识融为一体,我相信能超越绝大多数程序员。
现在的软件开发封装的层次已经非常高了,只要学会Java就能做一个编程工作了,随着你做的越来越深,越来越专,这些基础的问题就会浮现出来。
更重要的是,计算机软硬件的基本思想在这几十年里其实变化不大,例如缓存,增加抽象层等,有了这么基本的思想的武装,去学习新的东西不但学的快,理解的会更透彻。
4.要透彻的理解一个技术的本质
先举个Ant中的例子,大部分人学习Ant只是学会怎么使用,认识到Ant提供了很多内置的task来帮助我们方便的完成自动化的构建,例如命令。
- 7点经验
- CListCtrl 几点经验
- oracle 经验点总结
- 编程经验杂点
- c++ 几点经验
- 记录点编程经验
- 有关form几点经验
- 系统设计几点经验
- web测试几点经验
- 实施的几点经验
- c语言-几点经验
- 积累点人生经验吧
- Web开发经验记录点,
- seo 几点学习经验
- 几点硬件设计经验
- Nginx缩略图和Fastdfs整合以及image_filter配置,7点经验结论和5个参考资料
- 回顾15年程序生涯,我总结的7点经验
- 分享一个15年程序员的生涯,总结的7点经验
- Lua - 16
- ASP.NET MVC 拦截器中如何停止往后面的代码运行!
- VB创建多线程
- Linux 我的常用命令总结
- 使用appium进行app自动化测试时遇到AppActivity设置正确但报Connect Appium Server Fail.A new session could not be created
- 7点经验
- vb:将窗体嵌入桌面的一段代码
- windbg调试子进程
- Java Web day(3)之Tomcat及Http协议详细介绍
- PowerBuilder经典错误unable to load the requested database interface
- The Smallest Difference
- Mysql数据库主从心得整理
- PHP接口并发测试的方法
- bzoj4199品酒大会