请看本系列最后一篇文章。
5.从行业及个人利益来看开源
最后,我们从程序员/工程师自身的个人利益来看看开源对从业人员的影响。如果技术行业中从公司到个人,大家都提倡闭源,那么软件行业可以妥妥的预见不会成为吃青春饭,拼体力的行业,软件工程师只能是经验越久,越老越吃香。
看看现在路人皆知的事情,都知道码农们是从网上直接搜索到答案,然后各种拼凑代码,写个程序是多么简单的事情。程序员被蔑称为码农,编程被戏称为搬砖。如果像微软操作系统,Oracle源代码那样,完全闭源,网上搜不到各种源代码答案,那程序员这个行业的薪水就不可同日而语了,老板是不敢压价的,显然越老的程序员薪水待遇越好,手上积累了大把源代码嘛,经验岗岗的。连装修工贴个墙砖地砖都不会告诉你这简单活儿的各种小窍门,什么对缝之类的,所以程序员"个人"的开源行为对其他行业的人来说只能是笑柄。
从个人利益出发点来说,一个人顶多也就编码十多年,我们能管得了十几年,几十年之后软硬件技术行业的发展情况吗?很明显程序员工程师全都和经济学中定义的理性经济人的思维背道而驰。开源运动,使科技快速进步,发展了整个社会,牺牲了程序员小我的利益。
装修工瓦工都知道提高就业门槛,连个对缝是啥都不会告诉你,码农却是一直在自降身价,自降就业门槛,2005年以前程序员基本都是211,985以上毕业的人的专利,路人甲的普遍意识里是高智商的人才能做的工作,对程序员这个行业充满了向往,尊重和钦佩。现在呢,培训班里专科生大把大把的抓,软件开源毫无疑问是最大的推手。
可是开源居然非但不是少数一两个人发善心,还成了大势所趋,实在不可理解这种经济学,为什么只有软件开源了,其他行业都不怎么开源? 别的任何行业的专业知识,从业者都是死命藏着掖着不让局外人知道,无论金融证券,建筑房地产还是什么实业制造业等等,局外人有多少知道金融行业蓄水池,T+0的概念?而程序员却匪夷所思的选择了开源代码,这么做的直接后果,就是造成自己身价暴跌,除了少数靠开源软件打开知名度的人赚得盆满钵盈,年薪百万以上,其余绝大部分,可以说99%程序员的个人利益都大幅度受损。如果不搞代码开源,毫无疑问大部分程序员的薪水会随着年限和经验的积累(源代码的积累),至少比现在加倍也不止。
另一方面,代码开源直接助长了一代代码农的懒惰习气,遇到问题不思考,百度google搜索之,大量码农只是搬搬砖了事,根本不愿意去深入钻研技术,刨根问底。
下面引述我的一篇较早前的博文《
三权鼎立形式的软件开发方式》的论点:
一个成型的软件以最大程度体现了软件开发者的思维模式,逻辑习惯甚至宗教信仰,国家出生地等复杂的因素,在行家眼里,她并不是一堆毫无生命力的,冷冰冰的英文字母组合。富有经验的从业人员,不难从这些跳跃着带有个人和地域色彩的思想和逻辑的复杂的代码中,看到软件开发者们深远的具有自身特质的清晰的影像。
只有真正领略了这段话的含义,才可以算得上是一个在编程技术领域登堂入室的,合格的程序员。
最后总结,软件开源运动,从历史发展的眼光来看,确实是极大的促进了世界科技发展的前进脚步,造福了人类社会;但从个人利益角度来看,却极大的贬低了程序员自身的价值和薪资待遇,使程序员/工程师沦为吃青春饭,像搬砖工一样拼体力的职业。
全文完。
分享到:
相关推荐
-- <artifactId>dbunit-database-mysql</artifactId> --> <!-- </dependency> --> <!-- oracle dbunit datatype --> <dependency> <groupId>org.dbunit</groupId> <artifactId>dbunit-database-oracle</...
例如,如果你有一个JSON数组,你可能希望将其解析为`IList<string>`或`IList<MyCustomClass>`,具体取决于JSON数据的内容。 C#中解析JSON通常使用的是Json.NET库,这是一个非常流行且功能强大的开源库,可以方便地...
运维自动化项目 减少人工干预,降低人员成本 - 资产管理 - 操作管理 CMDB - 运维自动化基础 - 资产管理 运行环境: python 2,7 依赖的包如下: beautifulsoup4 4.6.3 <pip> ...Pillow 2.5.1 <pip>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript> <css-class-wrapper>woshikangfei-portlet</css-class-wrapper> </portlet> ``` ##### 3. 修改`liferay-display.xml` - **liferay-display...
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <!-- skipTests 为 true 发布时候自动跳过单元测试 --> <skipTests>...
-b ] Make stdout buffered<br>[ -p ] Dump packet payloads<br>[ -l ] Don't print link-layer headers<br>[ -n ] Don't print network-layer headers<br>[ -t ] Don't print transport-layer headers<br>[ -m ] ...
<filter-name>sitemesh</filter-name> <filter-class> com.opensymphony.module.sitemesh.filter.PageFilter </filter-class> </filter> <!-- Struts2核心过滤器 --> <filter> <filter-name>struts</...
<spring.version>4.0.2.RELEASE</spring.version> <mybatis.version>3.2.6</mybatis.version> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <!...
Springfox的前身是swagger-springmvc,是一个开源的API doc框架,可以将我们的Controller的方法以文档的形式展现。pom依赖:<!--springfox依赖--> <dependency> <groupId>com.mangofactory</groupId> ...
<groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.x.x.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>...
在Tomcat的`conf/web.xml`文件中,你可以添加一个全局的`<filter>`和`<filter-mapping>`来处理跨域请求。添加以下内容: ```xml <filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache....
webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。 最新版:WebMagic-0.7.3 Maven依赖: <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-...
<param-value>reports</param-value> </context-param> <context-param> <param-name>BIRT_VIEWER_DOCUMENT_FOLDER</param-name> <param-value>WEB-INF/report-engine/documents</param-value> </context-param> ...
> ./css -文件夹-储存CSS渲染资源<br> ./help -文件夹-易搜的使用帮助和申明事件<br> ./img -文件夹-用来储存易搜图片文件<br> ./js -文件夹-储存JavaScript脚本资源<br> ./s -文件夹-易搜搜索功能核心算法<br> ./...
<web-resource-name>test</web-resource-name> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>HEAD</http-method> <http-method>OPTIONS</...
<script type="text/javascript" src="<%=basepath%>dwr/interface/MessagePush.js"></script> ``` 其中,`engine.js`和`util.js`是DWR提供的基础库文件,而`MessagePush.js`则是在`dwr.xml`中定义的接口文件。 ##...
3dtile.exe [FLAGS] [OPTIONS] --format <osgb,shape,gltf> --input <FILE> --output <FILE> 示例: 3dtile.exe -f osgb -i E:\Data\hgc -o E:\Data\hgc_test 3dtile.exe -f osgb -i E:\Data\dayanta -o E:\Data\...
<artifactId>spring-boot-starter-parent</artifactId> <version>2.7.15</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.shrimpking</groupId> <artifactId>...
<spring.version>4.0.2.RELEASE</spring.version> <mybatis.version>3.2.6</mybatis.version> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <!...
<artifactId>hibernate-validator</artifactId> <version>6.2.0.Final</version> </dependency> ``` 2. 配置Spring MVC 在Spring MVC的配置文件中,我们需要启用Spring的Data Binding和Validator支持。通常在`...