Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I'm an aspiring developer who wants to build large systems like PayPal. Which path should I follow? [closed]

I'm a 2nd year computer engineering student in Ethiopia, Africa. We have taken C and C++ and i've taught my self HTML, CSS, PHP(cakePHP framework too) and little javascript, JQUERY and mySQL to develop small systems just like blog. But I want to build large systems that are secure and robust. I am very humbled to see very smart and experienced developers here in SO. I'm vacillating as to which to follow at the start ie(ASP.NET or PHP) and what other languages or systems should I learn to make that happen. Thanks in Advance.

PS. I can handle any type of Mathematics.

like image 750
coderMonkey Avatar asked Aug 31 '10 08:08

coderMonkey


2 Answers

I feel like an old man for saying that, but in time, you will realise, the two biggest challenges in software development are:

  • Code reuse - Being able to write code, that is reusable. It's not even obvious for code to be reusable over time within the very same software it was written for. It is very likely, that when opening code you wrote a while back, you'll facepalm yourself after having wasted a few hours trying to modify it and decide not to reuse it in the next version of the software, but to make a rewrite. It is a true art to write code, that can be reused and likewise, it is a true art to reuse code. Software developers always want to to rewrites and to reinvent the wheel. It's fun. But it won't get you very far.
  • Actual use - It is not obvious to write software, that is of use. Because software developers have completely different expectations of software, than the users of their applications. We tend to overengineer, overoptimize and overcomplicate things, to put in too many features, to consider too many what-ifs. We prefer focusing on the interesting parts, rather than getting our hands dirty with good user interfaces or other boring, time-consuming and unrewarding problems. We produce a lot that nobody wants to or is able to use.

How does that answer your question?

  • Code reuse: You imperatively need to master this. Get acquainted with many libraries and frameworks. Design an application and then try to plug it together using existing components and architectures. Writing glue code is the hardest and most important task. Also, in your aspiration towards creating such a large system, single out the seperate tasks of the system and try writing your own components aimed at those single tasks. Try to make each of them robust and reusable. Don't try to build a whole system at once. You will fail. You'll probably learn something, maybe a lot, but you'll fail (or you're a freaking genius).
  • Actual use: Well, it's very ambitious wanting to create something as large as PayPal, but try not to create something big. Try to create something good. Good in that it is usefull, usable and used. You'll see in time, that's hard enough. Try to create something, that others use and are happy with.

Focus on getting better at those two. Choose whatever libraries/frameworks/platforms/languages you like and deem fit to fulfill your tasks. IMHO PHP is not a good language to stick with, for a number of reasons, but in the end, you should use what you like and feel good with. I personally use Haxe for my projects. You might wanna give it a try. In the end, I think you should try many languages and frameworks to get a grasp of different concepts. Most things you will learn, transcend concrete languages and frameworks, but you can only learn them, by getting to know some of them really, really well.

Before finishing, I would like to point you to my 5 commandments ;)

like image 158
back2dos Avatar answered Nov 12 '22 20:11

back2dos


PayPal did not start out large - it grew large over time because they were successful. And they did not become successful because of a particular choice of platform. They were successful because of their business model, because of the services they provided and the customers they've attracted.

So learn either ASP or PHP or both. They're about equally useful for a programmer. And about equally capable of backing highly scalable systems.

like image 2
Seva Alekseyev Avatar answered Nov 12 '22 21:11

Seva Alekseyev