关于学习技术与提高自己
这个话题今天得提提了.技术者,话题太广,本人也只是就自己熟悉的领域和关注的领域做些抛砖引玉的泛泛之谈.有的乃属于失败之教训总结,有的属于成功的感慨,还有的则是拜读名家之感悟处.有所感悟,愿有助于各位网有,也有可能悟错,也请大家广开言路,不吝赐教.
古话有"女怕嫁错郎,男怕入错行",推广开来,很有道理,不管男人女人,大师小工,林林总总算来,入错行就完蛋了.行者,有大行,小行,小小行最后落实到自己一辈子从事的几个领域.这就是人的一辈子的职业轨迹了,大人物小人物都一样的.不信自己用心去体会一下.所以啊,门道很重要,门路很重要.可以很形象的用倒挂的树来描叙描叙,时刻检查下自己,处于哪个分支,哪个节点,哪片叶子.是不是与自己最和谐的?不是,那对你自己无好处,对整棵树都没好处,因为社会这棵树需要的是和谐与平衡才能,枝叶繁茂,果实累累.哈哈,毛主席等把这棵数载下了,而后来的领导者的最重要的是如何保持这棵树的和谐与平衡了,这是最基本和最重要的大事了.国事这里暂且不谈.
入行IT,只是说你进入了一个大的行当,纯技术链来讲,第一维空间,技术划分:最低层的芯片,到板极,到OS,驱动,固件,到数据库,各种应用程序.第2维,从业划分:交叉在其中的设计,实现(并列测试),维护,改进,技术支持及管理(注意,这里按贡献价值等把管理排在最后,意在管理者需看清自己的地位).第3维:以上各个点的全向扩展:比如,做芯片的可能有专做通用CPU的,图形芯片的,网络芯片的,射频芯片的.等等....太多了.OS也一样.从WIN 到LINUX,到VXWORK等等各种应用行业的OS,与之匹配的系列.数据库和各种应用软件.包括网站什么的.越上层就表示应用口径越大,涉及的行业越多,交叉性越多.这几维的划分标准是以我目前的认知水平为基准划分的,也许不同行业不同领域不同历练和不同思维方式的人看法都不太一样,没关系,只是个坐标系的不同而已,有人用直角坐标系,有人用极坐标系,只要定位准确,不矛盾,怎么看怎么划分都可以.
既然划分好了,剩下的就是定位了,那就要看你自己喜欢做什么,适合做什么,以及你认为的和谐点在哪里了.所谓和谐,不外乎一个字:爽!干的有意思:爽!拿钱多:爽!有前景:爽!轻松:爽!......压榨凌驾别人:爽!勾心斗角,步步高升:爽!弄虚作假,混混耗耗,虚度光阴:爽!......TMD,去死!后面几种是极端,但也存在.记住:你爽的同时也要让别人爽,否则,一是你没法享受发自内心的"爽",那叫没真正的爽过.因为你会担心这担心那的,充其只是拿这些来换点钱或权而已,何必呢?二是你可能爽得不长久.不让领导爽和不让手下的弟兄或者你的伙伴爽其效果是等同的,那真正的智慧就是如何让大家一起爽.
这点在现实面前可能有点理想化,但是只要是群明白人,都能明白这个道理.工作生活中的各方面都会做些一些适当的妥协和让步的(除了那些驴一样的有理不饶人,无理绊三分的,没眼光,没心胸,没本事却自以为是的人以外).一般来讲,把话讲明了,把各方的劳益考虑周全了,这点很好做到.就怕这点做不好.
扯了点罗嗦话,至于如何提高自己应该有两方面来决定:你的单位和你本人.对于一个刚出道的小毛孩来讲,单位占的比重大,对于有了几年底子的人来讲,80%在你个人,单位那点培训可有可无.那就是说,出道一两年就必须意识到自学的重要性且必须懂得真正的自学.否则,就甘愿被边缘化,然后淘汰掉.基本上一两年就可以见分晓了.而第一份工作和你的引导者恰恰在很大程度上影响你的决定因素,除非遇到奇迹.所以:这里第一句话是:第一份工作很重要,第一二年要真正学会自学.就我所知道的和接触的人来讲,一般都不懂怎么自学.毕竟受中国的教育的影响.但是,能上名牌的,重点的,他们的大部分比非名牌的这点要强,你可以观察得到的,这也许是他们厉害的一点.参透这点,就站在同一起跑线上了,就不必要妄自菲薄或者对非名牌的冷眼相待了.
什么是真正的自学:达到几点就可以了回答了:1)这个领域里的大作你拜读了?2)吸收并落到实处没有?3)实验环境你有吗?4)悟过吗?有哪些?......当然,就我的体会,还有很多很多,有些也许只适合本人,就不误导大家了.其实,只要你有点基础,学会了自学,什么都好办了.
还有就是一些具体的方法了:学计算机最重要的是基础:比如CPU的架构,计算机原理啊,OS,编译原理,网络模型,如果有通信背景更好理解.剩下的就是C了,这里只推荐C,还有适当的懂点汇编,把任何一款开发环境摸透,TC也好,VC也好,ADS也好, KEIL也好,CCS也好,这些都是不同领域下不同CPU使用开发环境,CPU的体系结构可以说每个都不同,但是,在编译器上,你会觉得一回事情.不就是编译,连接,加载,执行吗?调试也一样的,设断点,看REG,看MEM,打印消息,设地雷找BUG等等.或者用GCC做点程序,自己写写MAKEFILE,或者WIN 下的SOURCE,把这些掌握了还用学那么多语言干什么?跟风吗?有技术含量?还是炫耀?欺名盗世?要掌握一门语法,可以说最多4周,但背后的东西啊......实在太多。所以,别舍本求末以掌握多少多少语言语法为意淫.可以很坦率的告诉大家,我就会点C,汇编,而C++只是会一点点点点而已,C++也许对我有些用,也想认真搞搞,不过目前不打算,因为还有更重要的事情要做.其他的语言什么VB啊,JAVA啊,C#啊,我都不会.1是工作用不到,2是没时间学,3是如果有需要,一月之内一定可以做熟练运用,4是这些语言写的程序就算我不学,也能看懂.这不就够了吗?见多识广是有好处的,可以相互借鉴嘛,可是我还是喜欢C,也许其他语言都不会去考虑了.我认为:耍那么些噱头干吗?还不如痛痛快快来点真格的.我平时最看不起那些装B的鸟了.
程序及基础只是你创造价值的基本工具而已,创造价值要需要具备别的一些知识,否则就是一个傻蛋程序员,比如各种接口协议,软的硬的都有,根据需要而取.各种通信协议,各种体系架构,等等,太多了,需要什么就掌握什么,其实都不难,就是开始的时候有些摸不着头脑,我开始啃协议的时候真的是感觉自己笨啊,图也看不懂,概念和术语也理解不透,过程更不清晰.其实,等你啃完一两个协议后,尤其是对某个协议做了协议分析,并实现了该协议中的某一层后,整个协议你都通了,以后所有的协议都是类似的思想.这里随便提几点心得:背景,协议体系结构,关键术语,功能划分,性能,层间接口,控制与处理过程,剩下的就是数据包和格式了,再剩下的还有什么?没了!
下面在谈谈设计:对于设计,LINUX之父说了:关键在设计.没好的设计,狗屁的好项目.什么是好的设计:大的来讲:我的体会是,选用最简单的,最通用,最清晰的方法实现项目的要求的设计就是好的设计.把复杂的东西搞的三岁小孩都懂,那是高高手.把一个简单的东西搞得除了他本人能懂其他人都不懂,甚至他本人都不懂的那是SB,或者是骗子!娘的,这样的人要么老实呆着,屁也别放,要么滚远点!
还有就是做事情的态度了.真想做好一件事情的,他会仔细考虑各种可能,以及在多种方案中做对比,优中选优.作到严谨.那么会选用很简单,很巧妙,很清晰的设计来做.这些方面都是相互关联的。
就具体的工程设计来讲,我这点资历是远远不够的.各位看在实践中慢慢体会,也可以看看相关的书,借鉴别人的思想.这里,提到了思想,思想很重要.
古话有"女怕嫁错郎,男怕入错行",推广开来,很有道理,不管男人女人,大师小工,林林总总算来,入错行就完蛋了.行者,有大行,小行,小小行最后落实到自己一辈子从事的几个领域.这就是人的一辈子的职业轨迹了,大人物小人物都一样的.不信自己用心去体会一下.所以啊,门道很重要,门路很重要.可以很形象的用倒挂的树来描叙描叙,时刻检查下自己,处于哪个分支,哪个节点,哪片叶子.是不是与自己最和谐的?不是,那对你自己无好处,对整棵树都没好处,因为社会这棵树需要的是和谐与平衡才能,枝叶繁茂,果实累累.哈哈,毛主席等把这棵数载下了,而后来的领导者的最重要的是如何保持这棵树的和谐与平衡了,这是最基本和最重要的大事了.国事这里暂且不谈.
入行IT,只是说你进入了一个大的行当,纯技术链来讲,第一维空间,技术划分:最低层的芯片,到板极,到OS,驱动,固件,到数据库,各种应用程序.第2维,从业划分:交叉在其中的设计,实现(并列测试),维护,改进,技术支持及管理(注意,这里按贡献价值等把管理排在最后,意在管理者需看清自己的地位).第3维:以上各个点的全向扩展:比如,做芯片的可能有专做通用CPU的,图形芯片的,网络芯片的,射频芯片的.等等....太多了.OS也一样.从WIN 到LINUX,到VXWORK等等各种应用行业的OS,与之匹配的系列.数据库和各种应用软件.包括网站什么的.越上层就表示应用口径越大,涉及的行业越多,交叉性越多.这几维的划分标准是以我目前的认知水平为基准划分的,也许不同行业不同领域不同历练和不同思维方式的人看法都不太一样,没关系,只是个坐标系的不同而已,有人用直角坐标系,有人用极坐标系,只要定位准确,不矛盾,怎么看怎么划分都可以.
既然划分好了,剩下的就是定位了,那就要看你自己喜欢做什么,适合做什么,以及你认为的和谐点在哪里了.所谓和谐,不外乎一个字:爽!干的有意思:爽!拿钱多:爽!有前景:爽!轻松:爽!......压榨凌驾别人:爽!勾心斗角,步步高升:爽!弄虚作假,混混耗耗,虚度光阴:爽!......TMD,去死!后面几种是极端,但也存在.记住:你爽的同时也要让别人爽,否则,一是你没法享受发自内心的"爽",那叫没真正的爽过.因为你会担心这担心那的,充其只是拿这些来换点钱或权而已,何必呢?二是你可能爽得不长久.不让领导爽和不让手下的弟兄或者你的伙伴爽其效果是等同的,那真正的智慧就是如何让大家一起爽.
这点在现实面前可能有点理想化,但是只要是群明白人,都能明白这个道理.工作生活中的各方面都会做些一些适当的妥协和让步的(除了那些驴一样的有理不饶人,无理绊三分的,没眼光,没心胸,没本事却自以为是的人以外).一般来讲,把话讲明了,把各方的劳益考虑周全了,这点很好做到.就怕这点做不好.
扯了点罗嗦话,至于如何提高自己应该有两方面来决定:你的单位和你本人.对于一个刚出道的小毛孩来讲,单位占的比重大,对于有了几年底子的人来讲,80%在你个人,单位那点培训可有可无.那就是说,出道一两年就必须意识到自学的重要性且必须懂得真正的自学.否则,就甘愿被边缘化,然后淘汰掉.基本上一两年就可以见分晓了.而第一份工作和你的引导者恰恰在很大程度上影响你的决定因素,除非遇到奇迹.所以:这里第一句话是:第一份工作很重要,第一二年要真正学会自学.就我所知道的和接触的人来讲,一般都不懂怎么自学.毕竟受中国的教育的影响.但是,能上名牌的,重点的,他们的大部分比非名牌的这点要强,你可以观察得到的,这也许是他们厉害的一点.参透这点,就站在同一起跑线上了,就不必要妄自菲薄或者对非名牌的冷眼相待了.
什么是真正的自学:达到几点就可以了回答了:1)这个领域里的大作你拜读了?2)吸收并落到实处没有?3)实验环境你有吗?4)悟过吗?有哪些?......当然,就我的体会,还有很多很多,有些也许只适合本人,就不误导大家了.其实,只要你有点基础,学会了自学,什么都好办了.
还有就是一些具体的方法了:学计算机最重要的是基础:比如CPU的架构,计算机原理啊,OS,编译原理,网络模型,如果有通信背景更好理解.剩下的就是C了,这里只推荐C,还有适当的懂点汇编,把任何一款开发环境摸透,TC也好,VC也好,ADS也好, KEIL也好,CCS也好,这些都是不同领域下不同CPU使用开发环境,CPU的体系结构可以说每个都不同,但是,在编译器上,你会觉得一回事情.不就是编译,连接,加载,执行吗?调试也一样的,设断点,看REG,看MEM,打印消息,设地雷找BUG等等.或者用GCC做点程序,自己写写MAKEFILE,或者WIN 下的SOURCE,把这些掌握了还用学那么多语言干什么?跟风吗?有技术含量?还是炫耀?欺名盗世?要掌握一门语法,可以说最多4周,但背后的东西啊......实在太多。所以,别舍本求末以掌握多少多少语言语法为意淫.可以很坦率的告诉大家,我就会点C,汇编,而C++只是会一点点点点而已,C++也许对我有些用,也想认真搞搞,不过目前不打算,因为还有更重要的事情要做.其他的语言什么VB啊,JAVA啊,C#啊,我都不会.1是工作用不到,2是没时间学,3是如果有需要,一月之内一定可以做熟练运用,4是这些语言写的程序就算我不学,也能看懂.这不就够了吗?见多识广是有好处的,可以相互借鉴嘛,可是我还是喜欢C,也许其他语言都不会去考虑了.我认为:耍那么些噱头干吗?还不如痛痛快快来点真格的.我平时最看不起那些装B的鸟了.
程序及基础只是你创造价值的基本工具而已,创造价值要需要具备别的一些知识,否则就是一个傻蛋程序员,比如各种接口协议,软的硬的都有,根据需要而取.各种通信协议,各种体系架构,等等,太多了,需要什么就掌握什么,其实都不难,就是开始的时候有些摸不着头脑,我开始啃协议的时候真的是感觉自己笨啊,图也看不懂,概念和术语也理解不透,过程更不清晰.其实,等你啃完一两个协议后,尤其是对某个协议做了协议分析,并实现了该协议中的某一层后,整个协议你都通了,以后所有的协议都是类似的思想.这里随便提几点心得:背景,协议体系结构,关键术语,功能划分,性能,层间接口,控制与处理过程,剩下的就是数据包和格式了,再剩下的还有什么?没了!
下面在谈谈设计:对于设计,LINUX之父说了:关键在设计.没好的设计,狗屁的好项目.什么是好的设计:大的来讲:我的体会是,选用最简单的,最通用,最清晰的方法实现项目的要求的设计就是好的设计.把复杂的东西搞的三岁小孩都懂,那是高高手.把一个简单的东西搞得除了他本人能懂其他人都不懂,甚至他本人都不懂的那是SB,或者是骗子!娘的,这样的人要么老实呆着,屁也别放,要么滚远点!
还有就是做事情的态度了.真想做好一件事情的,他会仔细考虑各种可能,以及在多种方案中做对比,优中选优.作到严谨.那么会选用很简单,很巧妙,很清晰的设计来做.这些方面都是相互关联的。
就具体的工程设计来讲,我这点资历是远远不够的.各位看在实践中慢慢体会,也可以看看相关的书,借鉴别人的思想.这里,提到了思想,思想很重要.