一个程序员可以自己做什么?[关闭]


13

随着软件产品需要整个团队的开发,一个程序员可以自己完成多少工作?换句话说,一个人可以写Photoshop,MS单词等吗?如果他们做不到,那么Web开发会成为程序员可以做很多事情的领域吗?


2
我不确定在这里问什么。如果您拥有开发软件的能力,那么您肯定可以自己完成(无论是否通过网络)。MZ在一天之内没有开发所有Facebook,这可能需要一些时间。
CoolBeans 2011年

看一下blitwise.com上的单个开发工作。
Michael K

编码器的生产率差异很大。有些编码员的编码速度比其他编码员快10x ...
Denis de Bernardy 2011年

2
如果这是一个单一的开发人员建筑物,photoshop和ms word,则它们的大小约为1/100。我不认为这是一件坏事。
JeffO 2011年

1
这取决于。:-)
理查德

Answers:


14

从小开始

目前,Linux比其最初的版本要大得多,但是重要的是,它的推出足以吸引人们的注意。

只有它值得

我有一个个人规则,那就是如果大的东西与其他东西根本不同,那么就值得做。否则,您将潜入一片红色的海洋

很好的开始,但并不总是可持续的

如果您的软件足够好,则可能需要认真对待。以Minecraft的创建者Markus“ Notch” Persson为例。IIRC他独自开始游戏,当游戏获得关注时,他开始寻找合作者,甚至创办了一家公司。

大型项目虽然奖励自己完成某件事,却通过开发人员的协作发挥了潜力,而不是一个天才,这使我进入了下一个观点。

一个神话

参阅 Ben Collins-Sussman和Brian Fitzpatrick在Google I / O 2009上的演讲“天才程序员的神话”。您应该在那里得到所有错误的期望。我要在这里指出的主要观点是,有时只有一个开发人员才能获得整个开发的荣誉,而背后却有更多的人。

绝对有可能

除Linus Torvalds以外的另一个例子是John Carmack。当EA估计整个团队需要两个月的时间时,他在短短四天内就将Wolfenstein移植了出去。

它不是大量的代码,而是其体系结构和技术知识,可让您用比您期望的少的代码来完成大型工作。

有了技能和知识(超过平均水平),您可以使很多工作变得很少。


7
+1 IMO,莱纳斯(Linus)没对卡马克(Carmack)放屁。他的东西是传奇的东西。
史蒂文·埃弗斯

1
谁的东西是传奇的东西?莱纳斯或约翰。没有得到您的俚语回到那里
Chani

1
@RYUZAKI:我想@SnOrfus的评论是英语stackexchange的一个完整问题。
Spoike 2011年

1
@RYUZAKI-在SnOrfus评论中,John具有传奇色彩。
ocodo 2011年

1
Carmack是在4天的工作中获得了2个月的团队薪金,还是只是拍了拍背?
德鲁

5

由于我正在做的工作性质,我一个人开发了几个非常大的应用程序。是的,这是可行的。我可以继续进行几个小时,但现在没有太多时间,因此这里有一些个人经验的利弊。

优点:

  • 您完全可以控制,没有团队可以与您抗衡,因此您可以按照自己的想法/知道的最好去做。在无休止地讨论代码中的微小方面时,不要浪费时间。
  • 您拥有整个架构,几乎了解所有架构,客户支持轻而易举,因为您自己知道所有答案
  • 您会学到很多编程方面的知识。低级,中级,高级用户界面,...

缺点:

  • 没有可以与之抗衡的团队,因此有时您会做出错误的决定,而没有人告诉您
  • 很容易迷失其中,不再关注全局。没有人可以帮助您。(SO / SA之类的除外:])
  • 花大量时间在客户支持上,而宁愿花在编程上

3

只要有奉献精神和技能,一个人肯定可以取得很多成就。但是,这并不容易,仅仅成为一个好的程序员是不够的。对于一个成功的项目,您通常必须考虑用例,用户界面设计,文档,支持等等。一旦事情滚滚而来,并且用户数量不断增加,一手做所有事情将变得越来越不现实-这是更多人加入该项目(通过社区参与,雇用人员或其他方式)或该项目死亡的关键。


1

这取决于他/她尝试开发的软件,时间限制和技能。如果他/她正在开发一个简单的MIS应用程序,则很可能在短时间内就能做到。尝试开发可能会变得复杂的软件,例如Photoshop,MS Word,Blender,Flash等,但是要花很长时间,并且它具有最基本的功能并且功能很简单。


1

这完全取决于技能,所花费的时间以及是否愿意这样做。您拥有的知识越多,完成某件事所花费的时间就越少。作为唯一的开发人员,您将获得对代码库的极为熟悉的知识,它还可以加快找出/重构/调试的过程。

我个人一直在研究桌面到服务器的传输应用程序。我已经编写了服务器应用程序,桌面应用程序的代码,并亲自对其进行了测试。我什至为应用程序编写了安装程序。我想出了一种方法,可以将其拖放到Windows中的系统托盘图标上,甚至可以从头开始编写新的Java库。我在一年的时间内做到了这一点,并且仍在开发和测试中。

整个项目一直是一个主要的考验。放学后的每一天,以及周末,我都参与该项目。它像MS Word,Photoshop等一样庞大吗?不。该项目仍然很大,而且还在不断增长,并且有可能实现很多目标。


看到那就是我想知道的...可能需要更长的时间,但是由于您会知道所有代码都在做什么,因此调试起来可能会更容易。以及很棒的学习经验。
fender1901 2011年

@ fender1901好的编程应该一直是一种学习经验,不是您了解全部或需要找到更具挑战性的任务的那一天。

1

我目前正在业余时间自己从事此类项目的工作(这是一个Web应用程序,而不是桌面应用程序,但是原理是相同的)。到目前为止,这是我发现的内容:

1)不要重新发明轮子。使用现有的库/框架,而不是从头开始。这里有一个警告:请确保您注意许可证,因为它们适用于所需的发行/发行/任何型号。某些copyleft许可证将要求您开源“衍生作品”。一些许可证仅允许非商业用途。跟踪使用的库/框架,以便可以在“贷方”屏幕/区域/任何地方提供适当的归因

2)反复工作。这与dukeofgaming所说的“从小开始”有关。如果可以看到结果,则您更有可能坚持执行项目。在您看不到某样东西起作用之前,您所做的任何开发都等同于在黑暗中绘画。

3)不要害怕在早期就寻求反馈/帮助。很有可能,您并不擅长一切。如果您擅长于较低级别的编码工作,那么您可能会深陷UI。相反也适用。在某个领域,从比你强的人那里得到建议永远没有什么坏处。许多人会避免这种情况,因为他们担心有人会窃取他们的想法。不必担心-如果有人尝试复制您,则意味着您值得拥有。想法便宜,执行是关键。苹果没有发明MP3播放器,微软没有发明操作系统,Facebook没有发明社交网络,而Google没有发明搜索引擎。他们所做的是使它吸引用户(而不是吸引)。

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.