8

Tôi là sinh viên kỹ thuật máy tính năm thứ 2 ở Ethiopia, Châu Phi. Chúng tôi đã thực hiện C và C++ và tôi đã tự mình dạy HTML, CSS, PHP (khung công tác CakePHP) và javascript, JQUERY và mySQL để phát triển các hệ thống nhỏ giống như blog. Nhưng tôi muốn xây dựng những hệ thống lớn an toàn và mạnh mẽ. Tôi rất khiêm nhường khi thấy các nhà phát triển rất thông minh và có kinh nghiệm ở đây trong SO. Tôi đang bỏ trống như là để làm theo tại bắt đầu tức là (ASP.NET hoặc PHP) và những gì các ngôn ngữ khác hoặc hệ thống tôi nên tìm hiểu để làm cho điều đó xảy ra. Cảm ơn trước.Tôi là một nhà phát triển đầy tham vọng, những người muốn xây dựng các hệ thống lớn như PayPal. Tôi nên theo con đường nào?

PS. Tôi có thể xử lý bất kỳ loại Toán học nào.

+1

Hãy thử các trang JavaServer một lần ... nhưng để lại trước khi nó làm cho bạn khó khăn. Hãy thử Ruby on Rails một lần ... nhưng để lại trước khi nó làm cho bạn mềm mại. Và hãy nhớ mang kem chống nắng! :-) –

Trả lời

6

Tôi cảm thấy như một ông già cho rằng, nhưng trong thời gian, bạn sẽ nhận ra, hai thách thức lớn nhất trong phát triển phần mềm là:

  • Mã tái sử dụng - Có khả năng viết mã, đó là có thể tái sử dụng. Nó thậm chí không rõ ràng cho mã có thể tái sử dụng theo thời gian trong cùng một phần mềm được viết cho. Rất có thể, khi mở mã bạn viết một lúc, bạn sẽ tự mình làm quen sau khi đã lãng phí một vài giờ để sửa đổi nó và quyết định không sử dụng lại nó trong phiên bản tiếp theo của phần mềm, nhưng để viết lại. Đó là một nghệ thuật thực sự để viết mã, có thể được tái sử dụng và tương tự như vậy, nó là một nghệ thuật thực sự để tái sử dụng mã. Các nhà phát triển phần mềm luôn muốn viết lại và tái tạo lại bánh xe. Điêu đo rât vui. Nhưng nó sẽ không giúp bạn rất xa.
  • Sử dụng thực tế - Nó không phải là rõ ràng để viết phần mềm, đó là sử dụng. Bởi vì các nhà phát triển phần mềm có những kỳ vọng hoàn toàn khác nhau của phần mềm, so với người dùng ứng dụng của họ. Chúng tôi có xu hướng overengineer, overoptimize và overcomplicate mọi thứ, để đưa vào quá nhiều tính năng, to consider too many what-ifs. Chúng tôi thích tập trung vào các phần thú vị hơn là để bàn tay của chúng tôi bị bẩn với giao diện người dùng tốt hoặc các vấn đề nhàm chán, tốn thời gian và bất tiện khác. Chúng tôi sản xuất rất nhiều mà không ai muốn hoặc có thể sử dụng.

Làm cách nào để trả lời câu hỏi của bạn?

  • Sử dụng lại mã: Bạn cần phải làm chủ điều này. Làm quen với nhiều thư viện và khung công tác. Thiết kế một ứng dụng và sau đó cố gắng cắm nó lại với nhau bằng các thành phần và kiến ​​trúc hiện có. Viết mã keo là nhiệm vụ khó khăn nhất và quan trọng nhất. Ngoài ra, trong nguyện vọng của bạn hướng tới việc tạo ra một hệ thống lớn như vậy, hãy tách riêng các nhiệm vụ riêng biệt của hệ thống và thử viết các thành phần của riêng bạn nhằm vào những nhiệm vụ đơn lẻ đó. Cố gắng làm cho mỗi người trong số họ mạnh mẽ và có thể tái sử dụng. Đừng cố gắng xây dựng toàn bộ hệ thống cùng một lúc. Bạn sẽ thất bại. Có thể bạn sẽ học được điều gì đó, có thể rất nhiều, nhưng bạn sẽ thất bại (hoặc bạn là một thiên tài kỳ quái).
  • Sử dụng thực tế: Vâng, rất tham vọng muốn tạo ra thứ gì đó to bằng PayPal, nhưng cố gắng không tạo ra thứ gì đó to lớn. Cố gắng tạo ra một cái gì đó tốt. Tốt trong đó nó là hữu ích, có thể sử dụng và được sử dụng. Bạn sẽ thấy trong thời gian, đó là đủ cứng. Cố gắng tạo ra thứ gì đó, mà người khác sử dụng và hài lòng.

Tập trung vào việc cải thiện những điều đó. Chọn bất kỳ thư viện/khung/nền tảng/ngôn ngữ nào bạn thích và cho là phù hợp để hoàn thành nhiệm vụ của bạn. IMHO PHP không phải là một ngôn ngữ tốt để gắn bó với, vì một số lý do, nhưng cuối cùng, bạn nên sử dụng những gì bạn thích và cảm thấy tốt với. Cá nhân tôi sử dụng haXe cho các dự án của tôi. Bạn có thể muốn thử. Cuối cùng, tôi nghĩ bạn nên thử nhiều ngôn ngữ và khuôn khổ để nắm bắt các khái niệm khác nhau. Hầu hết mọi thứ bạn sẽ học, vượt qua các ngôn ngữ và khuôn khổ cụ thể, nhưng bạn chỉ có thể học chúng, bằng cách tìm hiểu một số người trong số họ thực sự, thực sự tốt.

Trước khi kết thúc, tôi muốn chỉ cho bạn 5 commandments của tôi;)

Greetz
back2dos

1

tôi nghĩ rằng nó không phải là một vấn đề về ngôn ngữ hoặc các hệ thống. Nếu bạn là một lập trình viên tốt, bạn sẽ dễ dàng áp dụng và phù hợp với bất kỳ loại ngôn ngữ lập trình hoặc khung công tác nào.

Đối với loại hệ thống bạn muốn lập trình, có nhiều khung để xem xét. tất cả đều có ưu và khuyết điểm của họ. Tôi khuyên bạn nên cố gắng học hỏi từ những người đã làm nó trước đây, xem những gì các công ty lớn sử dụng và nghiên cứu thêm.

2

PayPal không bắt đầu lớn - nó đã tăng trưởng lớn theo thời gian vì chúng đã thành công. Và họ đã không thành công vì một sự lựa chọn đặc biệt của nền tảng. Họ đã thành công vì mô hình kinh doanh của họ, bởi vì các dịch vụ họ cung cấp và khách hàng họ đã thu hút.

Vì vậy, hãy tìm hiểu ASP hoặc PHP hoặc cả hai. Chúng cũng hữu ích cho một lập trình viên. Và về khả năng tương đương của việc sao lưu các hệ thống có khả năng mở rộng cao.

+0

Tôi thực sự thoải mái với PHP. Nó thực sự có khả năng như ASP.NET? Bởi vì nó không được biên dịch, tôi cảm thấy như nó không thể một số trong những điều ASP làm. – coderMonkey

+0

PHP và ASP cung cấp các góc nhìn hơi khác nhau. ASP.NET, với việc tách mã và HTML, cho phép bạn xây dựng các hệ thống lớn và chưa được bảo trì; Mã PHP có xu hướng mất kiểm soát với kích thước. Mặt khác, PHP cho phép bạn nhận được một số kết quả rất nhanh chóng. –

2

Bắt đầu với những gì bạn biết. Các vấn đề lớn mà bạn đang thấy thực sự là một sự phân tâm cho một người nào đó bắt đầu từ đầu.

  1. Tìm một vấn đề mà mọi người cần một giải pháp cho
  2. Viết điều đơn giản nhất có thể làm việc sử dụng những gì bạn đã biết
  3. Giữ làm cho nó tốt hơn
  4. Worry about scaling later
+0

ý tưởng hay. Tôi lo lắng nhiều về việc mở rộng quy mô ngay bây giờ. – coderMonkey

2

hệ thống lớn là tất cả về khớp nối giữa các thành phần và thử nghiệm.

Các khóa học như "kiến trúc phần mềm" và "kĩ nghệ phần mềm" được cho là giỏi dạy bạn cách thiết kế hệ thống (nhận ghép nối và giao tiếp giữa các thành phần bên phải). Tôi hơi thất vọng với việc học đại học của tôi, nhưng nó sẽ giúp bạn suy nghĩ về những điều đúng đắn ít nhất.

Sau đó, để thử nghiệm, hãy bắt đầu xem phương pháp test driven development. Kiểm tra phạm vi bảo hiểm là rất quan trọng, nơi mạnh mẽ và an ninh là một mối quan tâm.

Cuối cùng, tôi thậm chí có thể khuyên bạn nên xem Haskell nếu không có lý do nào khác ngoài việc đưa bạn vào một chế độ hoạt động "chính thức" hơn. Haskell nhiều hay ít lực lượng bạn chính thức hơn về cách bạn thể hiện vấn đề thông qua hệ thống kiểu của nó. (Ngoài ra, nếu bạn thực sự thích toán học tiên tiến có thể bạn sẽ yêu Haskell :))

+0

cảm ơn rất nhiều. đó là hữu ích. – coderMonkey

0
  • Nếu bạn có ý định phát triển một dự án đơn lẻ, PHP là tốt
  • Nếu bạn cần phải xây dựng một đội ngũ các nhà phát triển, tôi sẽ thông báo cho Java

Ngoài ngôn ngữ, đừng quên phần SSL/mã hóa/bảo mật.

Paypal, giống như tất cả các hệ thống thanh toán, cần một kế hoạch bảo mật mạnh mẽ được thực hiện nhằm đảm bảo (càng nhiều càng tốt)

  • máy chủ là người anh giả vờ là (giấy chứng nhận có chữ ký của một cơ quan bí quyết)
  • dữ liệu không thể được (thực tế) gián điệp trên đường browser <-> server

Xem HTTPs, SSL

+0

Tôi sẽ kiểm tra những điều đó. – coderMonkey

2

Có hai mục tiêu ở đây. Giải quyết chúng riêng lẻ:

Xây dựng hệ thống phức tạp lớn:

hệ thống phức tạp lớn xảy ra như là kết quả của hai điều:

  • Một tầm nhìn đối với một số sản phẩm hoặc dịch vụ mà là hữu ích và hấp dẫn đến một thị trường lớn
  • Kế hoạch kinh doanh để lấy từ mặt bằng 0 để hoàn thành tầm nhìn
của bạn

Việc hoàn thành điều này có thể có nghĩa là hợp tác với những người khác. Rõ ràng, bạn quan tâm đến khía cạnh kỹ thuật của sự vật - đây là sức mạnh của bạn. Bạn có thể cần phải tìm những người khác có chung tầm nhìn của bạn để giúp quản lý khía cạnh phi kỹ thuật. Điều này sẽ bao gồm các nội dung như tăng vốn, quảng cáo và tiếp thị. Mỗi thành viên trong nhóm của bạn nên mang lại sức mạnh cốt lõi khác.

Là một nhà lãnh đạo kỹ thuật, bạn cần nắm vững cấu trúc ứng dụng . Đây là một vấn đề kỹ năng lập trình hạt và bu lông ít hơn đó là sự hiểu biết các mẫu thiết kế và công nghệ khác nhau có thể được tận dụng như thế nào để đạt được các mục tiêu của bạn là . Tìm hiểu một chút về nhiều khung công tác và mẫu thiết kế như bạn có thể. Bạn không cần phải trở thành một chuyên gia về bất kỳ một trong số họ cho đến khi bạn có một cảm giác về những điểm mạnh và điểm yếu của mỗi đối với ứng dụng mà bạn đang tìm kiếm để xây dựng .

Xây dựng kỹ năng CS nói chung

Lý thuyết không bao giờ đi cũ. Có được nền tảng vững chắc ở khía cạnh khoa học của chương trình kỹ thuật máy tính của bạn. Tham gia các khóa học về lý thuyết ngôn ngữ, toán học rời rạc, thiết kế/phân tích thuật toán, kiến ​​trúc máy tính, kiến ​​trúc ứng dụng, v.v. Chúng sẽ phục vụ bạn tốt cho phần còn lại của sự nghiệp.

Sau đó, có mặt thực tế của vấn đề: Ngôn ngữ, công nghệ và khuôn khổ nào bạn nên tìm hiểu bây giờ để tận dụng sự nghiệp của bạn (với hy vọng làm điều gì đó thực sự lớn). Để kết thúc này, bạn đã đi đúng hướng. Hãy tò mò, tự giới thiệu mình với càng nhiều công cụ càng tốt. Bạn càng biết nhiều điều, việc học mới dễ dàng hơn. Dành thời gian để hiểu mô hình từng công cụ dựa trên và cách nó tương tự nhưng khác với các công cụ khác mà bạn đã sử dụng.

Hãy nhớ rằng ngôn ngữ lập trình chỉ là "công cụ của thương mại", chứ không phải chính thương mại. Theo thời gian, bạn sẽ tìm công cụ mới và loại bỏ các công cụ khác.

Đưa nó tất cả cùng nhau

Hãy làm việc trí tưởng tượng của bạn trên đến với rằng "ứng dụng sát thủ". Kết bạn với những người có bộ kỹ năng bổ sung cho riêng bạn. Nói chuyện và mơ về những điều lớn lao cùng nhau.

Làm việc để phát triển các kỹ năng CS cốt lõi của bạn

Tăng một số hiển thị với nhiều công cụ và ngôn ngữ khác nhau khi bạn cảm thấy thoải mái. Nhận được kiến ​​thức làm việc tốt chỉ là số ít mà bạn thấy hữu ích nhất đối với bất kỳ điều gì bạn đang làm tại thời điểm . Đạt được sự thành thạo của bất kỳ công cụ nào có thể mất nhiều năm, nhưng hãy để nhu cầu hiện tại của bạn là . Hãy chuẩn bị để cho bộ công cụ kỹ thuật của bạn phát triển theo thời gian.

+0

Đây là câu trả lời hay nhất tôi nhận được. Cảm ơn rất nhiều NealB !! – coderMonkey

Các vấn đề liên quan