当编码开始变得无聊时,该怎么办?[关闭]


33

我从6岁开始使用Commodore 64编程。现在我28岁,我必须完成计算机科学一级学位的4门课程。

这些年来,我开始对编写代码感到无聊。我已经学习了理论计算机语言的计算机科学课程,并且在网络安全领域学习了10年的C系统编码,但是编写代码并没有带来任何刺激。

我可以用C,C ++,Python或任何您想要的语言编写代码,但是我对自己的工作并不感到兴奋。我感觉不到任何挑战。我已经编写了多线程代码,HTTPS MITM代理和WSGI应用程序,而无需任何特定的算法技能。

我觉得所有这些新东西都是一样的,其中包含了更简单(或更多个)的抽象或自动化,但是对我来说,这些听起来都是一样的。一遍又一遍地。可计算语言都是图灵可计算的,因此编码仅是部分函数此子集中相似模式的复制。

在日常工作中,即使寻找错误,对代码进行基准测试或解决X,Y,Z库问题,也感到无聊。

我是一个很好奇的人。我总是被某些东西刺激。但是,即使我查看出色的代码,我也无法做到。我对事情的运作方式感到更自在。

现在是时候提高我的职业了吗?还是要获得更多具有挑战性的计算机科学知识?也许会获得CS的专业学位?

我已经开始阅读有关项目管理“ Peopleware”的第一本书,并且我对软件开发生命周期越来越感兴趣。您建议做什么?

也许像我的一些朋友一样试图进入Google或Microsoft或Apple。或者,也许是更具管理性的职业道路。我还试图找到一本有关沟通规则和“人格特征”的好书,以使我为进入管理领域做好准备。

有什么建议么?

PS:我很感兴趣,我并不沮丧 :)我喜欢爬山,徒步旅行,照相和我是运动登山者,我喜欢游泳和运动,有时候我会跑步,实际上我读了一本关于我的国家(意大利)从AC到今天的故事的书,我很喜欢旅行(今年夏天,我赚了4000Km,看到西班牙有很多地方可以爬上去,仅用了3周的时间,这不是假期,而是马拉松,长达24公里的徒步旅行使我的疝气受伤),我热爱戏剧和生活。


多亏了所有人,思考所有答案为我提供了使自己的道路更加清晰的机会。

出于总结目的,我们可以概括投票最多的答案。

首先,所有的人的票了必要性,以使我们的工作支持你的生活,而不是唯一的理由留在生活中(这不是我的情况),所以,如果你唯一的理由生活,如果工作,你来的太快真的很沮丧 正如人们所说的那样,维也纳不等您:)

在此提醒之后,人们建议:

  • 增加技术复杂性我实际上正在努力增加挑战并减少对此的无聊。
  • 将专业领域更改为非技术领域,试图成为经理,或者在与您的工作相关的非技术领域取得一些进步。
  • 在另一种技术挑战中改变专业领域,您是系统程序员吗?尝试减少对人的应用程序的开发,以便您可以使用有用的软件更轻松地查看人
  • 在您的学术道路上提高计算机科学学位

出于我的目的,正确的答案是在计算机科学领域取得进步,就我的感觉而言,我认为编程不是获得计算机科学的唯一途径,而且我认为与计算机工程专业人士不同的是,获得计算机科学的其他道路会更好。


10
这真令人沮丧。你为什么要当经理?

14
不幸的是,虽然听起来很刺耳,但管理人员需要了解如何进行有效的沟通。您上面所写的内容非常不清楚,几乎无法理解。如果您打算将职业转变为管理人员,那么我将首先处理您的沟通技巧。对不起,您的情况。
乔治,

9
@乔治:我认为(但我承认我不确定)这是由不会以英语为母语的人写的。
FrustratedWithFormsDesigner

2
请参阅元编程在这个主题上的有趣隐喻有什么用(始终做同样的事情)。

2
@乔治:当然,英语不是我的母语。我开始进行一些编辑以提高我的英语水平,并解释我对编码的不满。
嘘声

Answers:


50

那一定会发生。

如果您的主要兴趣在于代码,那么它将使您不时地发疯,沮丧和沮丧,有时甚至是一天。

对开发产品感兴趣并喜欢看到人们使用它们。那是编写代码的最终目标,对吧?代码仅仅是完成更大工作的工具。


我不仅对编码感兴趣,而且还是一个运动爱好者,我喜欢去剧院,喜欢旅行,看看新地方,每年2/3的欧洲城市和暑假期间的4000公里。这不是重点。我考虑过我已经达到了编码无回报的地步。我工作中的所有问题都不是那么难解决,而且我无法获得更多挑战。我认为正确的答案是换工作,在更复杂的问题中遇到更多挑战。实际上我已经在研发部门。
嘘声

@boos,请尝试clojure.org/Jobs
Job

2
+1无目标编码有什么好处?类似于继续建造墙壁而不是房屋。
Mayank

+1我已经开始编写代码,并且一直持续到现在(超过10年)才开始制作游戏并看到人们喜欢它们。我经历了一段非常艰难的时期,开始明白自己最终一无所知。从那一刻起,我就重新学习了一切,因为我仍然想为人们制作游戏。
克莱姆(Klaim)2011年

这肯定对我有用。最近,我为我妻子的公司做了一些免费的小型开发工作,虽然支持该软件有些麻烦,但它重新激发了我一段时间以来从未感到过的编码乐趣。
赫敏2011年

21

我会用一个问题回答您的问题...

程序员的工作是编写代码还是解决问题?

您说无聊是因为编写代码似乎是您以前做过的事情,就像以前的每一段代码都已经做过一样。

但是您如何得出结论,认为该代码是应编写的代码?大多数问题都有数百种解决方法,但只有一种最佳方法。

如果您真的对寻找解决方案或解决问题没有任何挑战,好奇心或兴趣,那么您真的应该有所改变。尽管我不确定这将是软件开发管理。我不想为一个对解决问题感到冷漠的软件经理工作。它可能应该只是一个不同的行业,存在一系列不同的问题。

如果您喜欢解决问题但不喜欢编码,那么也许您找不到足够解决的问题。每当我的工作开始变得乏味时,我相信这里有一个需要解决的问题。我为什么要忙工作?我能想出什么解决方案来从工作中删除繁忙的工作?那就是编程的美。


1
@Rnesis:我喜欢解决问题,我不再喜欢编码!这是我“问题”的核心。所有程序的问题总是相同的,搜索一个东西,订购另一个东西,如果这样做,如果另一个,连接到数据库,建立到远程服务的连接,与它进行通信,再回到另一个服务,等
嘘声

1
@boos-感谢您的答复,在“如果您喜欢解决问题”中添加了一段。
妮可(Nicole)

9

在我看来,您已经完成了很多过程编程并且对它感到厌倦-我完全理解。一步一步指定多在每一个程序语言相同。

因为听起来您有很多非工作活动,所以我建议您学习一些与您现在所不知道的概念类似的东西-是的-有很多东西,但是首先我会推荐Haskell,因为它

  • 功能-编写组合在一起的功能以形成更大的功能,最终产生一个程序。
  • 惰性求值-运行时不按部就班地指定,而是根据需要提取所需的值。这意味着在程序中处理无限列表是非常普遍的。
  • 模式匹配-列出具有参数外观的模式,而不是使用大型if结构,然后运行时选择适当的模式并执行相应的代码。

这是一个完整的排序功能:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(有关说明,请参见http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding

如果对您来说这是新手,我鼓励您开始冒险。

祝你好运-玩得开心。


+1这是我在阅读OP后得出的相同结论。OP需要远离程序。编程世界是如此之大,他只需要外出探索!:)
Darknight

8

电脑无聊的消费者。当您整天在编写机器对机器之间的交互时,它们每次对机器的反应都相同。很好地完成项目,但一段时间后很乏味。确实可以通过与机器不直接相关的东西来打破单调。

我从摄影和研究用户体验中都找到了灵感。想想看,当其他供应商获得热烈响应时,苹果如何让人们为自己而垂涎三尺,以便下一件事从圣塔克拉拉出来?您是否认真地认为,如果苹果这么长时间不抵制在Verizon上发布iPhone,Android将会获得巨大的反响吗?我会给您一个很大的提示:这些产品不一定具有如此先进的技术。躁狂症有很大的心理成分。

了解产品设计和用户体验是我们许多人需要学习的知识。是什么让某人打勾?您如何设计足够酷的东西以使人们离开既定的解决方案?您如何创建像Apple这样的技术狂热分子(不是我渴望成为一个邪教领袖?)这些都是非常有趣且令人振奋的问题。它们会反馈到软件开发中-但是现在您的关注点有所不同。


1
+1我对编程感到非常满意,并且由于设计方面的原因,我认为我很喜欢它,但我确实承认编程缺乏视觉效果,使我无法完全满意。我也喜欢摄影,并尝试练习其他类型的设计,例如图形或建筑。
妮可(Nicole)

尝试游戏编程:D,主要是视觉问题
Dominique McDonnell

7

可能您只是没有获得足够的技术挑战?

  • 尝试高度分散的系统。您是否可以轻松地对系统进行编码,以微秒的精度从群集中的1000台计算机收集日志?
  • 实时尝试。将所有流程打包到一个引擎中。
  • 尝试计算机视觉或图像处理。数学技能,公式编码技能,优化技能都派上用场。
  • 尝试AI。看看IBM的计算机如何扮演危险角色?该领域可能涉及某种算法。

等等,当然,准备好在一个对您来说充满挑战而不是无聊的领域中赚取更少的收入。


4

我进入了一个没有“正确”解决方案的领域,从而找到了动力,我正在编写编辑工具,而我的工作与用户认为有用的一样好。我遇到了很多非技术人员,我们一起努力寻找方法来改进他们需要使用的软件,我发现人与人之间的互动以及不断地切换视角的需求变得十分愉快,而突然编写代码就变得不那么必要了。如此乏味。

我知道这并不适合每个人,有些人会感到不安全,无法客观地衡量您的工作质量。

但这是一个值得考虑的选择。


4

是的,有时我确实会感觉到实际上是一遍又一遍地编写相同类型的代码。但是,不,我还不觉得无聊。这是为什么?

因为我基本上喜欢发现新的编码方式,以及新颖,简洁,优雅的方式来表达代码。有两种解决方法:学习新的编程语言,或学习新的库或框架。

对于每种尝试的语言,学习一种新的编程语言对我来说变得更加容易。一段时间后,它变得不再很有趣。但是,大约一两年前,我终于开始使用函数式编程了,作为一种编程范例,它与OOP的区别足以使它成为新的挑战。我觉得这确实丰富了我的编程能力,并为我提供了一个新的视角,从中我可以查看编程问题。我现在试图发现不同的编程范例,而不仅仅是不同的编程语言。那是更大的挑战。

其次,学习新的库,框架或API:正如您已经正确地说的那样,新框架通常无法解决新问题。他们只是以不同的方式来解决它,例如,通过添加额外的抽象层。这可能是可能的,因为当今的计算机比早期的计算机功能更强大。或者,也许是因为我们整体上在编写软件方面越来越好。

最后一点可能需要一些解释。我举一个例子:在最长的时间里,在练习编程技能的同时,我从未真正认真考虑过要维护的代码。自从我开始在工作中编程以来,我的观点发生了变化。在公司环境中,编写可维护的代码通常非常重要,因为您花在编码上的每一小时都会花费真钱,因此,公司将尽可能尝试保留现有代码,而最终您有可能会被遗忘您的代码给后继者。

我发现编写可维护的代码实际上是一个很大的挑战。这通常意味着您不会编写超级聪明且高度优化的汇编代码(请记住《梅尔的故事》-真正的程序员,有人吗?;-),相反,您更有可能利用抽象。您可以使代码越接近某些业务规则和问题域越好。那就是所有这些新库的所在。如果它们允许您写下代码以使其简洁,清晰,简洁并且易于理解,那么这是一件好事。

很抱歉,如果这个答案有点冗长。我试图证明我编程的动力来自哪里……我很想知道您是否在某个时候有同样的感觉,以及您的动力是否(以及为什么)最终消失了。


无论您学习新语言还是新框架,所有语言和所有范例以及一般方式都可以被提醒到“图灵机”上,所有演算都可以由图灵机完成,因此我对编码不感到兴奋。我喜欢写简洁的代码,有时我喜欢写一些非常奇怪的代码片段来和我的同事开玩笑,就像有点困惑。
嘘声

1
+1我也有这种感觉。我认为我个人最喜欢的挑战不是做新的事情,而是以最好的方式做。我能得到的最好的称赞是:“我阅读了您的代码并完全理解了。” 我喜欢代码审查,没有人能想到让它变得更好的任何东西。
Michael K

@boos,如果您喜欢理论,那么cs / math / physics中有成千上万的主题让您迷失了方向。–
Job

3

如果您厌倦了编写代码,如果代码没有激发您的精力,或者让您感到无聊,那么很可能需要进行更改。您可以考虑担任管理职位,并以多年的经验来管理和指导其他编码人员。或者尝试侧向进入系统架构,在这里您可以设计和计划系统,而其他人则可以完成大部分实施工作。

或者,您可以将职业完全转换为与计算机完全无关的事物。您是否曾问过自己,如果有人可以给您一份理想的工作,您会梦想成真吗?


3

开始玩微控制器。这是我能想到的最令人耳目一新的编程人才的应用程序。


2

听起来我们的背景起点是相似的,因为我们都开始在类似的机器上进行6岁左右的编程,并且由于各种原因而进入和退出编程。我的学位都与编程无关,我所有的音乐学位都与编程无关,尽管我参加了一些研究生水平的计算机科学课程。

我认为您是对的,观察到程序员经常重复解决相同的问题,并且“新”都是基于“旧”的。您意识到这一事实是您的功劳;太多的开发人员和商人认为新技术与旧技术完全脱节。

因此,解决这些问题对您而言并不有趣。有什么有趣的?您一般喜欢解决问题吗?也许“商务”软件开发人员的生活不适合您。

我知道我提供的问题多于答案,但是我希望回答这些问题将对您应该采取的方向有所帮助。


2

在我看来,您就像被卡住了。您处在不想进入的境地,也不知道如何摆脱困境。我的建议很简单:做一些不同的事情只是为了做些不同的事情。即使它不能解决您的问题,也可能使您无法解决问题。

我可以用C,C ++,Python或任何您想要的语言编写代码,但是我对自己的工作并不感到兴奋。我感觉不到任何挑战。我已经编写了多线程代码,HTTPS MITM代理和WSGI应用程序,而无需任何特定的算法技能。

不要以错误的方式来对待(这些都是不错的成就),但这并不是编程中所有具有挑战性和令人兴奋的问题的完整清单。仍有许多具有挑战性的问题需要解决。最具挑战性的问题涉及大规模工作。您已经编写了WSGI应用程序,但是您编写了一个每天可以处理十亿次页面浏览量的应用程序吗?您编写了多线程代码,但是编写了多计算机代码(具有数百台计算机)吗?

简而言之,如果您想尝试做一些非技术性的事情,那就去做吧。但不要那样做,因为您认为自己已经解决了所有问题,因此并非必须解决。


当然,我知道这里有很多富挑战性的东西:)我现在是一个小编码员!问题在于,编程内容的复杂性使我不高兴。通过所有的回应,我明白了这一点,我需要学习更多的学术知识才能感到博彩。无论如何,谢谢:)
嘘声
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.