(27)技术人员的内功和外功

以下部分内容选自知乎,侵权删。

看了很多人的问题和他们的困扰。诸如:

  • 新技术不断出现,旧技术不断淘汰,无法跟上新技术的步伐或担心学习的技术会被淘汰
  • 学习那种语言比较有前途
  • 那种语言比较好,不容易被淘汰
  • 已经学了这个语言,要不要再学那个语言
  • 等等诸如此类的问题。
  • 其实电脑编程语言的世界里面是有编程语言的共性和通用的东西。当然每个语言也有自己的特性。

有个朋友在和我讨论编程学习的时候,提出了编程内功和编程外功的观点。他认为编程内功是所有语言通用的东西,外功是浮在表面上的那些具体的产品和工具。

外功是使用语言和工具的一种技能,可以一直在变化,可以随意换。内功就是编程理论和共性已经通用的知识,是一种能力。

学好内功,用内功推动外功,以外功表现出来,可以做到型变神不变,通吃所有的语言和工具。

还有就是内功比外功重要,学好内功,任何新的语言和工具都能很快上手使用。外功是辅助工具来显示内功实力,但却更有现实的实践意义。

假设内功外功理论是合理的,那些可以称为编程内功那些是编程外功?他们的关系是怎么样的?

作者:caoglish
链接:https://www.zhihu.com/question/22471978/answer/21468471
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

自己认为的编程内功有:

编程通用性的知识

  • 算法+数据结构
  • 编译原理
  • 设计模式
  • 重构
  • 性能优化
  • 面向对象编程
  • 数据库
  • 抽象化

语言内部的共性

字符串处理

  • 正则表达式
  • 变量与常量
  • 控制语句if-else
  • 循环
  • 函数/方法
  • 类/对象/接口
  • 递归
  • 哈希表
  • 数组

还有工具类的内功:

  • 构建工具 (通用知识)
  • 单元测试 (通用知识)
  • 依赖包管理 (通用知识)
  • MVC 框架 (通用知识)
  • 代码质量检测 (通用知识)
  • JSON 和 XML 设计 (通用知识)
  • 代码版本控制 (通用知识)   git  svn  cvs等

IT外的相关知识:

  • 数学(离散数学,几何学)
  • 物理
  • 图形处理
  • 图形/UI设计

等等,这些都是可以各种语言内都能交叉使用的共同的知识。这些知识学好了,大部分语言都可以用到,也都能或多或少在项目和应用中体现出来。

编程的外功包括有:

  • 各种编程语言包括C++,javascript,java,php,C#,perl,python等
  • 各种编程环境,.NET, WAMP/LAMP,node.js 等
  • 各种IDE和编辑器,notepad++,vim,Visual Studio,Sublime等
  • 各种快捷键,
  • 各种包依赖管理器,npm,composer,Nuget
  • 各种版本管理器:git,svn,cvs
  • 各种单元测试工具
  • 各种构建工具
  • 各种MVC框架

等等

内功和外功的相互关系和作用

外功就是一个个的独立工具的使用知识。其实就是一个和内功的具体实现,具体的外功是抽象内功的具体实现。使用这些工具,你可以实践你的内功。

由于内功的通用性很高,所以比如说你在java中能实现的数据结构,你可以立刻在C#中复制出一样的数据结构,如果再学了一个新的语言,比如说python,ruby,也能很快实现出一样的数据结构来。因为是相通的。 内功就是你在一个工具里面能实现的东西,在另外的那个工具也能同样实现的东西。

另外,内功学好了,学习新的语言或者工具会很快,这是因为,所有的编程语言和工具都有很多共同点,知识语法改了一改,当然还有一些特有的特性,是要你针对学的。所以假设当你还没有学习java或者C#的时候,你学java需要一年时间,学习C#也同样需要一年时间,但是如果先学习了java后,在学习C#(或先学C#再学java), 两个先后学习的时间总共只要1年2-3个月的时间,而不是2年。这是因为你用Java去学习语言的共性,修炼了编程的内功。

内功学好了,内功比外功重要,那要学习外功吗? 要,当然要,还要好好的学。因为你是通过外功来学习内功的。没有语言本身,那里表现内功的载体呢。当你把一种语言作为载体,把所有语言的共性都学完了,然后就关注特定语言的特性了,有了内功的基础,这些外功很容易就啃完了,然后具体问题具体分析解决。比如要跨平台的桌面程序,用Java;快速网站构建,用PHP;嵌入式编程,用C;网页内编程用javascript; 然后还有不同语言之间的通信,用json或者xml。

而那些工具,可以辅助你的编程技巧,加速你的编程速度,提高你的编程质量,是你的编程得心应手,享受编程带来的乐趣。

总结

编程的学习和提高,应该重点在编程内功上。通过某个编程语言和工具,去学习研究编程的通用功能和共性上。这样就算未来有新的语言和技术出现,也能很快的适应新的语言和技术了。

而外功的提高,是可以大大提高自己的工作效率,它和内功相辅相成。外功作为辅助和内功的载体,也是很重要的。毕竟它可能是一个程序员吃饭看家领工资最具体的技术表现。

时间: 2024-10-31 05:22:11

(27)技术人员的内功和外功的相关文章

余波:技术人员如何走出职业迷茫

您是怎么看待技术人员普遍面临的职业迷茫问题? 在我的印象当中,工作两三年的技术人员,是最容易遭遇职业迷茫的.这个时候的技术人员,在专业上有了一些基础,在业务上也有了一定的经验,处理日常工作对他来讲是小菜一碟,所以日子过得是比较舒服的,然而一个人最舒服的时候往往也是其成长最慢的时候,对于一个有上进心的技术人员来讲,他感受到的可能就不是舒服了,而是沮丧.这可能是技术人员在职业发展上遭遇的第一个瓶颈,这个时候人很浮躁,对工作失去热情,内心有一个声音越来越强烈:“我真不想再这样混下去了”,接着是跳槽之心

技术与技术人员的价值

在我工作到第四年出头时,总是感觉自己的价值被低估了,换个说法就是感觉工资低了. 当时,总觉得技术不如管理,但又听闻有人一直做技术也有到年薪百万的,虽不在身边,但江湖总有这样的传说.再环顾周身环境,似乎除了去伊拉克做技术能让收入立刻飙升(补贴超过工资),让我不禁怀疑江湖的百万传说是不是被高估了.再加上工作几年后,技术提升感觉明显变慢,第一个天花板已近在眼前. 分类 又过了七.八年后,再回顾走过的技术道路.感觉技术的价值有时被高估,有时又被低估,但长期看,很少有人能一直享受到高估的溢价,同样也很少有

RDO远程连接时提示“远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助”

当服务器重装操作系统后使用RDO远程连接时会出现错误提示"远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助" 如下图所示 原因是服务器版操作系统提高了安全级别,使用了网络级别的身份验证信息.RDO模拟的是WinXP系统的远程连接,安全系数较低.所以会出现在同一个win764旗舰版机器上使用系统自带的远程桌面能连接,但使用RDO就连接不上去的情况. 解决方法如下:  第一步: 使用系统自带的远程桌面(mstsc.exe)连接服务器, 运

技术人员为什么要写博客?

1.技术人员写博客的好处 技术经验积累的过程: 有利于形成资料存档,便于以后查阅: 有利于行业内的交流: 有利于提升写作水平: 2.技术人员不写博客的原因 我不认为自己是某个方面的专家: 我写的东西有些错误怎么办: 我写的东西有人看吗: 我的写作水平好差: 3.技术人员写博客的信心 写自己专注的,感兴趣的东西: 坚持: 多与读者互动: 分享文章,证明你是一个热爱学习技术的人,证明你的技术在进步:

(转)成为优秀技术人员的两点建议

原文链接:http://www.cnblogs.com/baiyanhuang/archive/2010/06/08/1754310.html 呃, 不要误会,这不是我给出的建议,我暂时还算不上“优秀”的软件技术人员. 是这样,这几天,从美国那边过来几个比较有经验的同事,因为相对来讲,中国这边的团队比较年轻,因此安排了一个“Open Forum” 的讨论会,让他们与中国的同事分享一下成长经验.他们一个是中国人,清华硕士毕业后去了美国,有10年的工作经验了:一个是美国人,有20年的工作经验. 其间

ITFriend创业败局(三):技术人员创业,需要尽可能避免,或者需要解决的5个重要问题

一.插科打诨: 本想给小雷粉,做一个创业"成功案例"的,结果做成了一个"反面教材"~ No zuo,no die~ 二.写作目的:分享自己作为一名技术人员,或者说技术背景比较浓厚的创业者的一些经验教训,希望后来的技术创业者能够少走弯路.本文中的经验,主要来自创业前的思考.创业亲身经历,其次来自于CSDN等社区网友的一些经验教训. 三.五大问题1.技术是万能的.   缺乏市场实践经验的技术人员,对技术容易过于注重,很容易忽视其它能力对创业成功的重要性.   认为做项目

2014总结以及关于用两年时间让自己成为优秀的前端技术人员宣言

2014即将过去,2015也就要到来.我不想在到2015年的时候再来写一篇文章说什么,纪念2015希望2016过的好一些等等等.都这么多年过去了,每年用这些文字来欺骗自己实在是够了,可是人们就是喜欢用这样的文字来麻醉自己.就好像用:明天我一定会早起,以及明天我一定把事情做完,或者我明天一定跑步一样,然后今天我就享受最后一天的欢愉,最后一刻的放纵.但是往往三分钟热度,甚至根本就热乎了那么一会儿.该没爬起来还是没爬起来,该睡觉还是睡觉,该在那里看电视剧还是在那里看电视剧. 但是对于2014我依然需要

即使是一个技术人员,也需要知道沟通的重要性

先来讲一个笑话: 有一个人请了甲.乙.丙.丁四个人吃饭,临近吃饭的时间了,丁迟迟未来.这个人着急了,一句话就顺口而出:"该来的怎么还不来?"他听到这话,不高兴了:"看来我足不该来的?"于是就告辞了. 这个人很后悔自己说错了话,连忙对乙.丙解释说:"不该走的怎么走了?"乙心想:"原来该走的是我."于是也走了.这时候,丙对他说"你真不会说话,把客人都气走了."那人辩解说:"我说的又不是他们."

技术人员应对「考核」的一些思考

来这个公司实习已经半年多了,在年前经历了一次年终考核,最终对我的工作的评级是 C(及格-符合当前职位的工作),让我不禁思考自己在项目中的一些工作的问题,为什么我是C?是我做的不够好吗?或者说在哪里做的不够好? 从考核流程来看,基本上是 CTO 与 Team Leader 对团队成员的「年终总结与次年工作计划」进行Rank,个人狭义的认为「考核」的主要支持材料就是这个总结了. 他山之石 其他公司是怎么考核的呢?说实话我也不太清楚,刚入行,只能通过搜索了解,在网上了解到有以下几种:发精品博客.发论文