程序猿生存定律--细论软件这个行当的根本特征

程序猿生存定律这系列的文件夹在这里:程序猿生存定律--文件夹

喜欢从头瞄的。能够移步。

------------------------------------------------------------------------------

规律是必须顺应而不能改变的。但除此之外现实中另一些事实也是无法改变的,这两者都非常像程序中的常量,想提高人生的高度则须要同一时候驾驭这两者,而不能试图为两者赋值。以下我们就一起来看一下,软件世界中仅仅能顺应,而不能试图改变的特质有那些。

技术更迭偏快

在学校里,动力机械类专业往往会学习一门叫project热力学的课程,假设耐心翻阅就会发现尽管封皮换了,但这门课程如今的教科书和五几年的教科书事实上区别不大,热力学第一定律还是那个热力学第一定律。

与之相相应《C#高级编程》这本书在2005年还是第三版。但到2011年已经出到了第七版,页数则从1027页添加到了1473页。

这看着是一个非常小的不同。但实际上已经折射出了软件行业的一个根本特质:技术更迭、添加速度较快。

技术更迭较快说的是这样一种现象:今天有价值的。明天可能会贬值为0。

在软件行业里,你所依赖的某一平台或语言非常easy产生更迭。

单以Windows平台而论。10几年前非常多人仅仅有Win32 API好用,但一个人假设仅仅停留在Win32 API里。是不太能适应今天的软件开发的---尽管没有官方统计,但感受上在今天Web开发、手机终端开发明显比Windows开发要火热。

这或许源自于这样一种现实。非常多传统行业的技能直接依赖于某种自然规律。如:热力学、流体力学、材料力学等等。这些东西自身仅仅会深化或细化,比方从牛顿定律到相对论,但非常少会有颠覆性变化。但软件开发所需的东西(API等)往往依赖于某一个公司或组织。比方微软、苹果等。进而是一种人造系统。一旦社会基本需求发生变化,这些公司或组织就必需不断的抛弃并更新自己的系统,比方:GDI -->GDI+ -->WPF。

同一时候一旦公司由于某种原因倒闭,这一公司所支撑的技术也会变得淹没无闻。

1995前后開始从事这个行业的人非常多都会知道Delphi。但我预计2005后添加这个行业的人就会对这个东西感觉陌生了。

我们非常难去深究原因。但至少现象上来看。Delphi这种开发平台随着Borland一起远去了。当然,与之中的一个起远去的还有Delphi世界里的非常多牛人。

极端来讲,假设Windows彻底打输了当前移动终端这场战争,那么靠Windows吃饭的人(包含研究Native API的和研究.net framework的)无疑的都有贬值的风险。

能够打一个比方来使这种差异更形象一点:

好比说两个不同的人,一个在传统行业一个在软件行业,两个人都非常勤奋。不停的往自己脚下垫东西,努力使自己达到更高的位置。

传统行业中的人比較自然的会越垫越高。而软件行业中的人则会垫到一定时候。突然间某几块砖就会消失了。

这倒并不意味着软件行业中并不是没有具有较长生命价值的东西。但这些东西往往集中在一些特定的领域里,牵涉的从业人员比較少因此不太具有代表性。

具有长久价值的东西里面最典型的东西是通用数据结构和算法,今天的排序算法在10年后必定相同具有价值,但专门从事算法优化改良的毕竟是少数。

能够讲大部分人群还是处在技术更迭的大潮之中。

此外。图形算法、分析设计方法等也具有稳定且长久的价值。

形象来讲似乎越抽象、越偏向于研究的东西其价值越长久,而越详细、越立马可用的东西其时效性就越强。

这一基本特质的影响非常深远,甚至引出了学习可能会产生较大负效应这类比較特别的问题。这点将在兴许内容中陆续有所陈述。

为了让大家对技术更迭有一个更直观的印象。我们来看一下袁峰先生所著的《Windows图形编程》的文件夹。并看一下这本书里那些东西在过去的10年里被更迭掉了。而那些没有?文件夹有点长,但为了能把事情说清楚。我还是把它整个贴出来:

第1章 基本技术和知识

第2章 Windows图形系统体系结构

第3章 GDI/DirectDraw内部数据结构

第4章 Windows图形系统窥视

第5章 图形设备抽象

第6章 坐标空间和变换

第7章 像素

第8章 直线和曲线

第9章 区域

第10章 位图基础

第11章 高级位图图形学

第12章 用Windows位图进行图像处理

第13章 调色板

第14章 字体

第15章 文本

第16章 元文件

第17章 打印

第 18章 DirectDraw和 Direct3D马上模式

假设你细致观察。你会发现当中第一章,第四章牵涉的是一些基础知识,比方Windows 基本结构、怎样Hook API等,因此尽管部分内容有点过时,主体上仍然是有现实意义的。

第十章、第十一章、第十二章主要和位图格式相关,而位图格式变化不大,所以这几章的主体部分仍然是有现实意义的。

第十四章主要讲的是字体,而Truetype字体即使在今天也是字体的主流。因此也还是有现实意义的。

其它的章节则由于主要是和GDI相关联大致上是过时了(不意味着全然没用),也就是说18个章节里仅仅有6个章节还有较大的现实意义。

这本书在国内的出版时间是2002年,到2012年正好是间隔10年,10年时间淘汰了某一类技术几乎相同80%的内容。不知道还有那个行业会有这种淘汰率。

假设不论什么人以为书里被淘汰的那80%的内容easy学。那就错了,在当年即使是有Windows基础编程知识的人(知道线程、消息机制等)把这部分知识搞通至少也须要1年(工作后)。

介入门槛偏低

某一次喝酒的时候和几个朋友闲聊,谈到了自己的专业:

有的说我是学物理的,和核能有关系。

有的说我是学涡轮机的,这是主要动力机械。发电厂经常使用。

有的说我是学变压器的。负责把电送出去。

听了之后,当中一人大笑,说:你们几个拼起来就是一个发电站。纯属打入软件队伍的杂牌。

尽管看不到详细数字,但就日常感受来看软件行业中来自其它专业的人似乎确实偏多。这反过来就不成立,你非常少听说学软件的跑去做数学了。

这背后隐含的是这样一个事实:软件行业介入的门槛相对照较低。

尽管做到高处,非常难讲软件就好做,机械就难做,但从介入壁垒来看,确实是软件行业偏低。

假设去做动力机械,那么要学习project热力学、传热学、材料力学这种课程,但假设要做软件开发。那么学好一门编程语言以及相应的IDE已经能够開始工作了。

当然,后劲不足可能会把不思进取的软件开发者限制在某个范围内,比方说仅仅能做应用级的开发,终于让他们等待淘汰。

软件的这个特质,也导致了软件开发者所特有的一些问题。比方:假设自身没有突破。那么非常easy就会被海量的后来者赶上。这点的影响也将在兴许章节里陆续提到。

那门槛能够低到什么程度?

以著名的北大青鸟为例,其公开数据是累计培养了50万IT人才,均摊到10年里,这么一家培训机构每年就能够提供大概5万人。

当然这当中不都是程序猿,但从北大青鸟的角色来看,当中的主体部分是程序猿。而国内的培训机构则远不止北大青鸟一家。这是量的视角。

假设你再细心去关注北大青鸟公开出来的故事,你就会发现,高考落榜者、酒店保安、流水线工人都在介入这个行业。

这里并没有一点鄙视不论什么人出身的意思。而仅仅是想说,这个行业的介入门槛相对照较低。

而同一时候我们也非常难讲,仅仅有做编译器的、文件系统、MapReduce的才是程序猿。或许有的人做的工作更难,而有的人做的工作则相对easy。但无论怎么样。大家确实是属于同一个行业,都叫程序猿。

软件和软件区别能够非常大

我在《完美软件开发:方法与逻辑》这本书里以前写过一段有点抽象的话:

从特质上来看。既然软件是固化的思维。那就必定同一时候具备思维以及思维所承载之物之特质。

  • 思维的特质是指:思维的澄清一般是渐进的,思维自身是不可度量的,思维的主体一定是人。思维通常由概念和逻辑组成,思维的无边界化(灵活易变)这种特质。这部分特质是共通部分。同一时候属于全部软件。
  • 思维承载之物之特质是指:当思维的对象是数学的时候。思维本身也就具备了数学的特质;当思维的对象是商业逻辑的时候。思维自身也就具备了商业逻辑的特质。

既然思维自身的特质是复合的。那么作为固化思维的软件,其特质必定也是复合的:

既有属于全部软件的共同特质,也有特属于某类软件,甚至同其它类软件全然相反的独有特质。

上述文字主要想强调的是尽管都是软件但软件A和软件B能够有类似部分,但差异可能更大。一个人可能研究OCR算法好几年终于仅仅写几百行代码,全然不须要用什么面相对象和设计模式,但在信息管理系统中一个人一两天内可能就须要写几百行代码。这两者尽管有巨大差异,但实际上都会被称作软件。

这种特质导致了软件开发所须要的知识日益的分化,终于结果就是不同软件领域区别非常大。想用唯一的知识体系覆盖全部的软件类别变的非常困难。

对方法论而言,基于这一点最关键的一个引申结论是:不论什么一种方法论不仅仅要陈述自己的方法,还要陈述自己方法的适用边界。

对个人发展而言,那就意味着要关注知识的可流动性这类问题。

可流动性是说,你在A类软件中可能达到了一定高度。但假设穿越到了B类软件的领域中,可能江湖地位会一下子下降非常多。

通俗的说法是:男怕入错行。不同的软件种类也勉强能够被看做是不同的行业,尽管他们都用一个词:软件来概括。

这一特质也带来非常多非常典型的问题,比方:学习必须聚焦。

这点的影响也将在兴许内容里陆续提到。

那多内部分野能够多到什么程度?

要想对多内部分野这一点有个直观感觉,最直接的方法是去看招聘广告。

有以语言来区分职位的:.net开发project师、C++软件开发project师、PHP开发project师、Javaproject师等。

有以平台来区分职位的:Android开发project师、iPhone游戏软件开发project师等。

有以领域来区分职位的:GIS数据project师、金融项目软件project师、电子商务软件project师等等。

接下来还会有各种交叉,比方:Java软件project师(金融)等。

这里面未必没有重叠,但大致上来讲非常难在彼此间穿越,年头越多穿越越难。

假设认为这个分类不是非常系统,那么能够參照软件project中对软件的分类。再乘上平台和编程语言就能够切分出大致不同的领域:

  • 航空电子
  • 应用系统
  • 命令与控制
  • 嵌入式系统
  • 微代码
  • Web应用
  • 科学研究和project研究
  • 实时系统
  • 驱动程序
  • 电信软件
  • ... ...

最极端的情形是也不用分什么软件种类,一个项目的整个生命周期就能耗尽一个人一生中大部的能量。想尝试的能够维护个电信或银行里的大系统试试。

------------------------------------------------------------------------------

关于我自己的各种信息,在左边栏可找到,想了解下写这系列文章的人是不是骗子和大忽悠的能够瞄。

最后希望感兴趣的支持V众投,感觉上这应该是国内最靠谱的生活购物等的问答社区了吧,都是朋友给朋友做的答案,同一时候实行一人一号,一人一票制度,想找什么答案关注公众号:vzhongtou(左側有二维码)即可了。

时间: 2024-10-11 21:23:48

程序猿生存定律--细论软件这个行当的根本特征的相关文章

程序员生存定律--细论软件这个行当的根本特征

程序员生存定律这系列的目录在这里:程序员生存定律--目录 喜欢从头瞄的,可以移步. ------------------------------------------------------------------------------ 规律是必须顺应而不能改变的,但除此之外现实中还有一些事实也是无法改变的,这两者都很像程序中的常量,想提高人生的高度则需要同时驾驭这两者,而不能试图为两者赋值.下面我们就一起来看一下,软件世界中只能顺应,而不能试图改变的特质有那些. 技术更迭偏快 在学校里,动

程序猿生存定律--细论影响人生成绩的四个要素(1)

程序猿生存定律这系列的文件夹在这里:程序猿生存定律--文件夹 喜欢从头瞄的.能够移步. ---------------------------------------------------------------------------------------------- 定律要素之中的一个:自身价值 在金庸先生构建的武侠世界里,最犀利的杀伐武功应该是<独孤九剑>,但学会了独孤九剑却失了内功的令狐冲一样会被一堆无赖按到地上揍个鼻青脸肿.待到学会了吸星大法,内力大进,那就再没这回事了. 依据

程序员生存定律--细论影响人生成绩的四个要素(1)

程序员生存定律这系列的目录在这里:程序员生存定律--目录 喜欢从头瞄的,可以移步. ------------------------------------------------------------------------------ 定律要素之一:自身价值 在金庸先生构建的武侠世界里,最犀利的杀伐武功应该是<独孤九剑>,但学会了独孤九剑却失了内功的令狐冲一样会被一堆无赖按到地上揍个鼻青脸肿.待到学会了吸星大法,内力大进,那就再没这回事了. 根据打铁还要自身硬的道理,修炼确实应该先从内功

程序猿生存定律--表达背后的力量(1)

程序猿生存定律这系列的文件夹在这里:程序猿生存定律--文件夹 喜欢从头瞄的,能够移步. ------------------------------------------------------------------------------- 前面讲的主要是提升一个人自身的价值,对于程序猿而言.自身价值差点儿与技术能力相等价.对喜欢编程的程序猿而言.最简单的生存方式或许是最幸福的,比方说:我仅仅把精力放在提高编程技术上,而且工作中也仅仅负责把程序写好.凭借这个也能够让自己物质上比較富足.假设

程序猿生存定律--成长路上常见的坑(2)

程序猿生存定律这系列的文件夹在这里:程序猿生存定律--文件夹 喜欢从头瞄的,能够移步. ------------------------------------------------------------------------------- 1. "博"与"专"上的迷失 假设说一个人的学习已经聚焦,而且学习的内容和自己实际參与的项目也相吻合,那么是不是就没有问题了?非常不幸,答案仍然是否定的,在不论什么一个子领域里,仍然须要进一步去考虑"博"

程序员生存定律--细论影响人生成绩的四个要素(2)

程序员生存定律这系列的目录在这里:程序员生存定律--目录 喜欢从头瞄的,可以移步. ------------------------------------------------------------------------------ 定律要素之三:自身价值的稀缺性 现实里,体现稀缺性的故事也很多. 在东北曾经发生过一场非常惨烈的战争,这场战争之所以惨烈,倒不是因为战斗,反倒是因为其中所使用的围困战术.当一城居民都处于饥饿状态时,馒头和黄金的比价就不断下跌,故老相传,即使还没到最后阶段,一

程序猿生存定律--交换是职场里一切的根本

程序猿生存定律这书的文件夹在这里:程序猿生存定律--文件夹 喜欢从头瞄的,能够移步. ---------------------------------------------------------------------------------------------- 支撑职场的基本规则是交换,交换的两端各自是你可创造的价值与你的职场位置(包括收入).交换就像任督二脉间的通道一样,越是通畅,人生也就越顺风顺水:堵得越死,人也就越寸步难行. 这点要刻在脑子里,一旦要忘记了,就赶紧打自己两个耳

我读经典(7):读《程序猿生存定律》有感

一提到程序猿.大家的脑海中会想到什么呢?码农.软件.研发.加班.辛苦.沉闷.呆头呆脑.理工男.编程.屌丝等等. 确实,程序猿是一个非常特殊的群体,网上有关"程序猿"的话题可谓是无处不在. 或许是上天的安排.本人"非常不幸"地增加了程序猿的大军,经历了各种艰酸苦楚之后,对这个职业有了更加清楚的认识. 近期.我阅读了李智勇老师免费提供给大家的<程序猿生存定律>这本电子书,颇有感触.本书由作者的CSDN博客上的文章整理而成,一共包含了8章内容,各自是:第一章,

程序猿生存定律--使人生永动的势能

程序猿生存定律这系列的文件夹在这里:程序猿生存定律--文件夹 喜欢从头瞄的,能够移步. ------------------------------------------------------------------------------ 这篇说的是精神,比較务虚,不感兴趣的能够略过. 在国内有一个非常特别的现象:高中打了鸡血一样使劲学习的人,到了大学往往会放松下来,跑去享受生活了,大学里打游戏.打牌.临考冲刺的大有人在. 这倒也在情理之中,高中不学真考不上大学,考不上大学真就完蛋了:大学