我是一个有抱负的开发人员,想要建立像PayPal这样的大型系统。我应该遵循哪条路?

时间:2010-08-31 08:43:19

标签: asp.net web-services web-applications programming-languages network-protocols

我是非洲埃塞俄比亚的第二年计算机工程专业的学生。我们已经学习了C和C ++,并且我已经教我自己的HTML,CSS,PHP(cakePHP框架)和小javascript,JQUERY和mySQL来开发像博客一样的小系统。但我想建立安全可靠的大型系统。我非常谦虚地看到非常聪明且经验丰富的开发人员。我一开始就想要遵循哪个(即ASP.NET或PHP),以及我应该学习哪些其他语言或系统来实现这一目标。在此先感谢。

PS。我可以处理任何类型的数学。

7 个答案:

答案 0 :(得分:7)

我觉得自己像是一位老人,但是你会意识到,软件开发中最大的两个挑战是:

  • 代码重用 - 能够编写可重用的代码。代码在编写的同一软件中随着时间的推移可以重复使用,这一点并不明显。很可能,当你打开代码时,你会在浪费几个小时试图修改它并决定不在下一个版本的软件中重复使用,而是在重写之后自己面对。编写代码是一门真正的艺术,可以重复使用,同样,重用代码也是一门真正的艺术。软件开发人员总是希望重写并重新发明轮子。好有趣。但它不会让你走得很远。
  • 实际使用 - 编写有用的软件并不明显。因为软件开发人员对软件的期望与他们的应用程序的用户完全不同。我们倾向于过度工程化,过度优化和过度复杂化的东西,以提供太多的功能,to consider too many what-ifs。我们更喜欢专注于有趣的部分,而不是通过良好的用户界面或其他无聊,耗时且无益的问题来解决问题。我们生产了许多没人想要或能够使用的产品。

这如何回答你的问题?

  • 代码重用:您必须掌握这一点。熟悉许多库和框架。设计一个应用程序,然后尝试使用现有的组件和体系结构将它们连接在一起。编写胶水代码是最难和最重要的任务。此外,在您创建这样一个大型系统的愿望中,挑出系统的单独任务,并尝试编写针对这些单个任务的自己的组件。尝试使每个都强大和可重用。不要试图一次建立一个完整的系统。你会失败的。你可能会学到一些东西,也许很多东西,但你会失败(或者你是一个疯狂的天才)。
  • 实际使用:嗯,想要创建像PayPal一样大的东西是非常雄心勃勃的,但尽量不要创造大的东西。尝试创造好的东西。很好,因为它是有用的,可用的和使用的。你会及时看到,这很难。尝试创造一些其他人使用并且满意的东西。

专注于改善这两者。选择您喜欢并认为适合完成任务的任何库/框架/平台/语言。由于种种原因,恕我直言PHP并不是一个很好的语言,但最后,你应该使用你喜欢的东西并且感觉良好。我个人使用Haxe来完成我的项目。你可能想尝试一下。最后,我认为你应该尝试许多语言和框架来掌握不同的概念。你将学习的大多数东西,超越具体的语言和框架,但你只能通过真正地了解它们中的一些来学习它们。

在结束之前,我想指出你的5 commandments;)

答案 1 :(得分:2)

PayPal起步并不大 - 随着时间的推移它变得越来越大,因为它们是成功的。由于特定的平台选择,他们没有成功。由于他们的商业模式,他们取得了成功,因为他们提供的服务和他们吸引的客户。

所以学习ASP或PHP或两者兼而有之。它们对于程序员来说同样有用。并且同样能够支持高度可扩展的系统。

答案 2 :(得分:2)

从你所知道的开始。你看到的大问题实际上是从头开始的人分心。

  1. 找出人们需要解决方案的问题
  2. 使用您已经知道的内容编写最简单的内容
  3. 继续做得更好
  4. Worry about scaling later

答案 3 :(得分:2)

大型系统都是关于组件和测试之间的耦合。

“软件架构”和“软件工程”等课程应该擅长教你如何设计系统(正确地在组件之间进行耦合和通信)。我对大学的这种看法感到有些失望,但它至少可以帮助你思考正确的事情。

然后进行测试,开始查看test driven development方法。在考虑稳健性和安全性的情况下,测试覆盖率非常重要。

最后,如果没有其他原因,我甚至建议您查看Haskell,而不是进入更“正式”的操作模式。 Haskell或多或少地强迫你通过类型系统更正式地表达问题。 (另外,如果你真的喜欢高级数学,你可能会喜欢haskell:))

答案 4 :(得分:2)

这里有两个目标。单独处理它们:

构建大型复杂系统:

大型复杂系统是由于两件事而产生的:

  • 对某些产品或服务的愿景 有用并吸引大市场
  • 从零开始到实现你的目标的商业计划 视力

实现这一点可能意味着与其他人合作。显然,你 对技术方面感兴趣 - 这是你的力量。 您可能需要找到其他愿意提供帮助的人 管理事物的非技术方面。这包括像 筹集资金,促进和营销。你们小组的每个成员都应该 带来不同的核心力量。

作为技术领导者,您需要牢牢掌握应用程序 建筑。这不仅仅是一个棘手的编程技能问题 它正在理解如何利用各种设计模式和技术来实现 你的目标。了解尽可能多的框架和设计模式。你不需要 成为他们中任何一个的专家,直到你感受到优势 关于你正在寻找的应用程序的每个弱点 建立。

建立一般CS技能

理论永远不会过时。在你的科学方面获得强大的背景 计算机工程专业。学习语言理论,离散数学, 算法设计/分析,计算机体系结构,应用架构等 这些将为您的职业生涯提供良好的服务。

然后问题的实际方面是:您现在应该了解哪些语言,技术和框架 利用你的职业生涯(希望做一些非常大的事情)。为此,您已经走上正轨。好奇,暴露自己 尽可能多的工具。你知道的东西越多,学习就越容易 新的。花些时间了解每个工具所基于的模型以及方法 它与您使用的其他工具类似但不同。

请记住 编程语言只是“交易的工具”,而不是交易本身。随着时间的推移你会 找到新工具并丢弃其他工具。

全部放在一起

让你的想象力推出那个“杀手级应用”。与交朋友 有技能的人补充你自己的。一起谈论和梦想大事。

致力于发展您的核心CS技能

尽可能多地使用不同的工具和语言。获得一个 良好的工作知识,你发现最有用的几个你在做什么 时刻。获得任何一个工具的掌握可能需要数年,但让你的 目前需要你的指导。随时准备让您的技术工具集发展。

答案 5 :(得分:1)

我认为这不是语言或系统的问题。如果您是一名优秀的程序员,您将很容易采用和适应任何类型的编程语言或框架。

对于您想要编程的系统类型,有许多框架需要考虑。一切都有其优点和缺点。我建议你尝试向之前做过的人学习,看看大公司使用的是什么,并研究更多。

答案 6 :(得分:0)

  • 如果你打算单独开发一个项目,PHP就没问题了
  • 如果你需要建立一个开发团队,我会建议Java

除语言外,不要忘记SSL /加密/安全部分。

与所有支付系统一样,Paypal需要实施强大的安全计划,以确保(尽可能多)

  • 服务器是他假装的人(由知识权威机构签署的证书)
  • 数据不能(实际上)在browser <-> server
  • 的路上被监视

请参阅HTTPsSSL