创造型职业程序员的无奈

2023-11-10 04:59

本文主要是介绍创造型职业程序员的无奈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编程是为数不多的一种既能满足个人爱好,又能赚钱的职业之一。烹饪是另一个这样的例子。在一般情况下,大多数职业要么不可能让你待在家里(例如医生和电工),要么你没有兴趣在家里做(例如清洁)。同样的,大多数好玩的活动是没人愿意付你钱的。

软件开发则横跨两个阵营:对有些人来说这是一个令人愉快的职业生涯,对其他人来说,这是一个激动人心的兴趣爱好。前者是我所谓的“职业程序员”,后者则是“创造型程序员”,当然这并不是说,前者缺乏创造力,而后者不赚钱。这么解释吧,你也可以分别称他们为“代码优先”的程序员以及“问题优先”的程序员,因为前者喜欢用代码解决问题,而后者更倾向于使用代码作为他们的工具来创建具体的东西。

还有第三类程序员,这一类很容易成为最沮丧的群体:既以编程为职业,又有强烈的创作冲动来制作软件。如果你愿意的话,不妨称呼他们为“创造型职业程序员”(虽然很没有创意)。职业程序员可以在工作中解决令他们感兴趣的问题,然后回家去做其他重要的事情;而来自于另一个领域的业余程序员可以享受编码作为晚上的业余爱好。创造型职业程序员白天的时间都在编码,去创造一个他自己也不甚在意的产品(换言之主要是为了钱钱,而且没有冒犯女程序员的意思),然后当他回到家之后,就没有时间和精力去创造那些他真正热爱的东西。

拿到CS学位,他以为他将会收获一份梦寐以求的工作。从一开始编码就令他激动不已:只要一台电脑和一些诀窍,就可以创建游戏来愉悦和挑战别人,创建工具来帮助他人和改变世界,以及创建完全不同于之前已经存的应用程序。为了能有一份高薪的工作,仅仅如此似乎太过异想天开了。

在进入这一行业几年之后,不幸的乌云开始慢慢拢聚。这并不是说他对工作不感兴趣了,也不是产品没有意义,只是因为……他手头有十几个项目像线团一样缠绕在着他,以致于他没有足够的时间来完成所有这些项目,即使他将一整天的时间都放在工作上。这感觉像是一个世界难题,但是从另一个角度,人们看到的是这样的:他热爱编程,并且有一笔可观的收入支付给他让他编程,他有充足的个人时间用于锻炼、与朋友建立联系和实现自己的兴趣爱好,他过着一种令人倾羡不已的美好生活。

上面这些片面化的观点会群起而攻之,在编程社区中出现沮丧的声音时。因为有太多的压力,所以你很难在自己的时间继续对编程工作保持激情:在工作时编程,然后累成狗一样地回家。你需要平衡你的生活,培养一些编程以外的其他爱好。你可以兼职其他公司,赚多一点钱,也可以做任何你喜欢做的事情,只赚取很少一点钱或根本不赚钱:然后抱怨和牢骚随之而来。

关键要说明的是,所有这些言论都没错:只是都没有戳中关键点。我认为,没有那么多的程序员在工作之外编码是出于他们想更有竞争力这个原因。同样的,我认为大多数程序员也不会相信为了保持竞争力你应该每天投入10小时以上到编程上的观点。

这类程序员的无奈之处在于,他每天只能投入有限的合理编码时间,然而他花费了大部分时间去创造的一些东西,最终对他而言是没有意义的。关键不在于编程,而在于创造。他不是那种脑袋钻到钱眼里的生意人,下班之后狂热地带着工作回家:他是一个绘画艺术家,将整天的时间都用在设计公交车车身广告,但当他回家的时候,却不能携带走任何风景片段。这是艺术家中已经有着几个世纪历史的冲突:这不是一个新的问题。和以往不同的是,据我所知,没有一种创造性的努力像软件开发一样有着很好地伪装、易于分享和有着极高的利润。

你还能想出其他的技能,既能创造和管理价值数十亿美元股票交易一样的利润,又能如创造游戏,例如GAME OF THE YEAR 420BLAZEIT,那样有趣又荒诞,并且还能将结果通过互联网分享到世界各地吗?这真的令人难以置信。编程是一种艺术形式,而且是一个强大的工具:可以理解的是,它对于不同的人意味着不同的东西。

这使得那些有着强大创作意愿,并将这些创作意愿置之于软件开发职业之上的程序员处于两难的境地。他能在工作中和家里都花费10+小时编码吗?他会放弃这一行,另谋职业,这样回家的时候就可以致力于自己的项目吗?或者他宁愿过着一种穷困潦倒的艺术家生活,完全献身于他的项目(例如软件世界里的Tarn Adams),省吃俭用希望能从中赚到足够的钱?还是说他只是像牙膏一样地挤时间,或者采取灵活的合同工作,虽然酬劳少了,但可以有更多的时间投入到编程中去?亦或是他依靠他的配偶提供财政支持,俗称吃软饭的?

我认为,这里的关键在于,这些不是支付账单的人提出的问题:这些是艺术家提出的问题。虽然尚在苦苦挣扎中的艺术家总是不能得到很多尊重,而且在我的印象中,创造型程序员得到的嘲讽甚至更多,这可能是因为他们原本完全可以轻易地利用他们的技能去赚钱,但却选择了一条艰难的道路。如果,因为艺术家他们渴望创造的强烈欲望而嘲笑他们是一种残酷,那么出于同样的原因而嘲笑程序员是否是另一种残酷呢?

我认为自己也是创造型职业程序员中的一员。虽然我在一个很有意思的领域有一份很好的工作,但我的大脑中有一百万个点子在爆炸:我想开发自己的游戏到能真正让人去玩的程度;我想建立一个基于标签的文件系统,用于标签和搜索媒体,类似gif动画和个人照片;我想制作一个移动app,让大家能够轻松输入数据(例如在你吃棒棒糖,或头痛的时候),然后展示相关性以便于你进行调查;我想构建一些不平凡的东西用来知道从属类型能有(或不能)多实用。

直到最近,我才想明白如何平衡生活中的编码,于是,现在的我是这样的:平时大概业余编码2小时,然后周末会有4到6小时的编码时间。这和我心里想要制作的东西相比,绝对是蜗牛速度,但因为接下来我会有一笔很大的开支,所以我需要保证一定的工作时间,而如果我妥协生活中的其他部分(人际交往、运动、休闲时间、家务琐事等)用于写代码,那么我的整体情况就会变糟。

这是一种牺牲,但我并没有觉得对不起自己,没有丝毫遗憾:毕竟每个人都需要有所牺牲,有所取舍。当然,如果能在和别人谈论时,别人不认为我的问题是将业余项目放在首位就好了。我认识一个厨师,他不喜欢累得一塌糊涂地回到家里,以致于没有精力去做一顿豪华大餐,他对此矛盾不已,但没有人为他指出,他真正问题在于对食物寄予了太多的激情。

如果我们能够认识到,创建东西这个愿望对于某些程序员而言是一种基本的动力,那么我们不仅可以通过,消除对那些不喜欢在家编码的程序员的蔑视,来帮助职业程序员,我们还可以帮助创造型程序员找到适合他们的生活方式。让我们一起来试一试吧。

译文链接:http://www.codeceo.com/article/creation-motivated-programmer.html
英文原文:The frustration of the creation-motivated career programmer
翻译作者:码农网 – 小峰


这篇关于创造型职业程序员的无奈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/380503

相关文章

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

GitHub:代码是程序员沟通最直接的手段

如果不是 Andreessen horowitz 的投资,估计 GitHub 很难被福布斯、CNN、纽约时报等传统媒体注意到。普通大众之前不了解这个工具,是因为它距离记者的世界太远了——GitHub 是一个程序员所使用的托管项目的服务。 但在一些程序员眼里,它不仅是托管项目的地方,还是“开源”项目的大本营,而且是提高程序员“技术水平”和“技术品味”的地方,更是一个程序员社交的地方。

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

黑马程序员---空中网面试题

空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一个大四的学员去应聘空中网的实习生职位,空中网只给他出了三道线程题,拿回家做两天后再去给经理讲解,如果前两题做好了给4k月薪,第三道题也做出来的话就给5k的月薪。这样的实习薪水和招聘要求,不需要有工作经验的限制,纯粹是技术功底的比拼和考核,而不像许多其他公司非要招两年工作经验的人,逼得那些刚毕业和未毕业的大学生不得不去撒谎,不得不去做

黑马程序员---线程并发库

软件包 java.util.concurrent 在并发编程中很常用的实用工具类。 请参见:            描述 接口摘要BlockingDeque<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。BlockingQueue<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及

黑马程序员---多线程

TraditionalTread 传统线程技术回顾 创建线程的两种方式: thread3中,同时创建了Thread的子类和Runnable,那么会优先执行Thread的子类,因为Runnable的代码被当做参数传到了Thread类里,Thread子类的run方法又覆盖了父类的方法,所以会执行Thread子类的代码。 package cn.itcast.heima;public class T

黑马程序员---代理

分析代理类的作用与原理及AOP的概念 代理的概念与作用  1.已经写好一个类,现在要为这个类增加一些功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做? 现在我们写一个代理类: 保持了原来那个类的功能,又增加了你现在需要的功能。 主函数调用的时候,直接调用代理类就行了。 这就是代理类的功能。   2.编写一个与目标类具有相同接口的代理类,代理

黑马程序员---类加载器

------- android培训、java培训、期待与您交流! ----------   简要介绍什么是类加载器和类加载器的作用 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader   类加载器也是Java类,因为其他是java类的类加载器本身也要被