it-swarm.cn

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

我从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公里的徒步旅行使我的疝气受伤。).


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

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

首先,所有人都会投票赞成必要性,使我们的工作成为您生活的支持,而不是维持生活的唯一理由(这不是我的情况),因此,如果您只是理由生活中的工作会使您快速陷入真正的抑郁状态。正如人们所说的那样,维也纳不等您:)

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

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

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

33
boos

那一定会发生。

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

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

49
user8685

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

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

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

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

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

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

21
Nicole

在我看来,您完成了程序编程的[~~~很多] [〜#〜]并对此感到厌倦-我完全理解。逐步指定is每种程序语言都差不多。

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

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

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

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

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

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

祝你好运-玩得开心。

9
user1249

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

我从摄影和研究用户体验中都找到了灵感。想一想,当其他供应商反应热烈时,Apple)会让人们大吃一惊,以至于下一件事要从圣塔克拉拉出来吗? Android如果得到Apple这么长时间没有抵制在Verizon上发布iPhone,我会给你一个大提示:不是吗?一定是这些产品在技术上如此先进。躁狂症有很大的心理成分。

了解产品设计和用户体验是我们许多人需要学习的知识。是什么让某人打勾?您如何设计足够酷的东西以使人们离开既定的解决方案?您如何创建自己的Apple(不是我想成为一个邪教领袖),您想成为一个邪教领袖)? -但是现在您的关注点有所不同。

8
Berin Loritsch

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

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

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

7
9000

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

我知道这并不适合每个人,有些人会感到不安全,因为没有人比别人更客观地衡量您的工作质量。

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

4
biziclop

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

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

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

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

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

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

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

4
stakx

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

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

3

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

3
Rob S.

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

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

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

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

2
Andrew

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

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

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

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

2
Jason Baker