Làm cho bước nhảy hợp lý từ noob hoàn chỉnh đến nhà phát triển?


12

Tôi đã lập trình rất nhẹ trong một vài năm và không đạt được nhiều tiến bộ. Đó là điều chắc chắn khiến tôi quan tâm, nhưng tôi không có động lực. Sau đó, tôi nghĩ rằng tôi đã tìm ra những gì giết chết tôi. Tất cả những cuốn sách tôi đã đọc, tất cả các screencasts tôi đã xem, dường như đã bỏ lỡ một điều quan trọng:

Làm thế nào để tôi đi từ báo cáo in, biến, vv, để làm những thứ phức tạp hơn?

Ví dụ: hãy lấy một trang web như Posterous. Đối với những người không biết, đó là một nền tảng blog chấp nhận các bài đăng trên blog thông qua e-mail. Tác giả của blog có một email đặc biệt @ posterous.com mà họ gửi bài đăng trên blog và chúng được tự động định dạng và đăng.

Làm thế nào một nhà phát triển sử dụng hộp công cụ chức năng và câu lệnh của họ để thực hiện một cái gì đó như thế này ở mặt sau?

Tôi xin lỗi nếu câu hỏi này có vẻ rất rộng, nó làm tôi thất vọng. Tôi cảm thấy mình có một nắm bắt tốt các khái niệm cơ bản, nhưng không biết làm thế nào để thực sự làm bất cứ điều gì.


Họ sẽ phân tích email và giữ mã hóa và XÁC ĐỊNH văn bản đó vào cơ sở dữ liệu. Sau đó, một nỗ lực đơn giản để chọn tất cả các bài đăng và hiển thị chúng trên một trang nhất định. Để giải thích sự thiếu khả năng lập trình của riêng bạn, bạn có thể cải thiện điều đó từ việc chỉ làm nó nhiều hơn.
Ramhound

Rất nhiều câu trả lời tuyệt vời cho đến nay, các bạn. Bây giờ tất cả đã trở nên rõ ràng hơn một chút. Cảm ơn mọi người!
Blair Beckwith

Câu trả lời:


12

Điều quan trọng là chia nhỏ nhiệm vụ thành các bước riêng biệt mà bạn biết cách thực hiện (hoặc có thể tìm hiểu cách thực hiện). Những gì bạn biết làm thế nào là dựa trên mức độ kinh nghiệm của bạn.

Hãy lấy ví dụ về email Posterous của bạn:

Yêu cầu: Chấp nhận email @ posterous.com, định dạng và đăng chúng trên trang web.

Nhiệm vụ 1) Chấp nhận email.

Các email rất có thể sẽ phải được lấy từ một máy chủ thư. Bạn sẽ phải nghiên cứu các lệnh gọi API để lấy email từ máy chủ thư cụ thể của mình. Bạn cũng sẽ phải tìm ra cách trích xuất nội dung từ phần thân của email (có thể là một lệnh gọi API khác).

Nhiệm vụ 2) Định dạng email.

Từ nhiệm vụ 1, bạn có thể có nội dung ngồi trong bộ nhớ ở đâu đó. Định dạng này để nó phù hợp với bước 3 ...

Nhiệm vụ 3) Đăng nội dung trên blog.

Nếu bạn đang thêm tính năng email2blog này, có lẽ bạn đã có một cơ chế để đăng bài viết trên blog. Sử dụng cơ chế đó và thay vì chấp nhận đầu vào từ textarea trên trang web của bạn ở đâu đó, hãy thay thế nó bằng nội dung từ bước 2 của bạn.

Bây giờ, làm thế nào để chúng ta nhận được từ các câu lệnh in, nếu các câu lệnh và hàm để hoàn thành từng nhiệm vụ.

Lưu ý làm thế nào trong nhiệm vụ 1, tôi đã đề cập các cuộc gọi API hai lần? Các lệnh gọi API về cơ bản là các chức năng mà người khác đã viết để bạn có thể sử dụng chức năng của chúng. Nếu bạn biết cách gọi các hàm, thì bạn có thể nghiên cứu lệnh gọi API chính xác mà bạn cần để lấy thư từ máy chủ thư.

Tôi đã không thảo luận nhiều về định dạng nhưng nếu bạn biết cách thực hiện thao tác Chuỗi, thì bạn sẽ biết cách định dạng. Định dạng một trang html là một bài tập trong việc thêm các thẻ như <b>bolded text</b>trong chuỗi của bạn ở đâu đó.

Trong Nhiệm vụ 3, tôi đã đề cập rằng có một số loại cơ chế để đăng blog. Nếu đây là một nền tảng blog hiện có, bạn sẽ đủ quen thuộc với điều này. Nhưng nếu không, thì bạn cần tìm hiểu về HTTP Post và các công cụ liên quan đến khung web khác.

Nếu sau khi đọc tất cả những điều này bạn vẫn không biết tôi đang nói về điều gì, thì tôi hy vọng tôi đã thuyết phục bạn rằng không có sự thay thế nào cho kinh nghiệm. Vì vậy, chỉ cần đi ra ngoài và xây dựng một cái gì đó! Đừng lo lắng quá nhiều về việc mắc lỗi noob bởi vì mọi nhà phát triển đã từng là một noob.


5

Điều chính là tìm một cái gì đó bạn muốn làm và làm nó .

Đó là cách mà hầu hết các công ty lớn bắt đầu.

  • Google? Brin và Page rất say mê lập chỉ mục web.

  • Metafilter? Matt Haughey đam mê viết lách và chia sẻ.

  • Twitter? Dorsey rất đam mê sự đơn giản và bạn không đơn giản hơn 140 ký tự.

  • Dòng chảy chồng chất? Joel & crew rất say mê về câu trả lời.

Các ngôn ngữ, như PHP, Perl, Python và Ruby đều được thiết kế theo cùng một cách. GNU / Linux cũng vậy. Ai đó đã có một vết xước, và bắt đầu ngứa vết xước đó, và sau đó phát hành các công cụ của họ để tiêu dùng chung.

Vì vậy, hãy xem xung quanh và quyết định nơi ngứa của bạn, và sau đó bắt đầu viết một chương trình để gãi ngứa. Có lẽ bạn thích chơi game, vì vậy bạn có thể viết một số game. Có thể bạn gặp vấn đề với các thẻ ID3 trên bộ sưu tập mp3 của mình và cần khắc phục điều đó. Hoặc có lẽ bạn quan tâm đến lịch sử gia đình và muốn thu thập dữ liệu trên web để tìm tài liệu tham khảo cho mọi người hoặc địa điểm trong lịch sử của bạn. Hoặc có lẽ bạn muốn tương tác với thế giới thực bằng cách nào đó. Hoặc có thể bạn muốn phát triển Phần mềm FLOS - hãy xem GitHub, Gitorious và Sourceforge.

Tìm thứ gì đó mà bạn đam mê và bắt đầu lập trình, và chẳng mấy chốc bạn sẽ có những chương trình lớn trước khi bạn nhận ra. Và đó là lý do tại sao lập kế hoạch một số loại là một ý tưởng tốt;)


2

Chậm rãi và dần dần.

Thông thường đối với các dự án lớn, bạn không bắt đầu bằng cách chỉ viết mã. Ai đó ở đâu đó phải có một kế hoạch. Họ viết một cái gì đó xuống, các tính năng của hệ thống họ muốn. Sau đó, họ bắt đầu với trang / cửa sổ đầu tiên / bất cứ điều gì. Sau đó, họ thêm một cái khác. Tất cả trong khi chậm thêm tính năng sau tính năng, sửa lỗi sau lỗi. Nó không chỉ là mùa xuân, cần phải có một bức tranh lớn, một thiết kế tổng thể.

Để tốt hơn, bạn cần thực hành! Bắt đầu với một dự án nhỏ. Một cái gì đó đơn giản và đó cũng là lợi ích của bạn. Lập kế hoạch những gì bạn đang làm trước khi bạn làm điều đó, bạn sẽ thấy không khó để "thực sự làm bất cứ điều gì".


1

Bạn có thể xem bao nhiêu screencasts, đọc bao nhiêu sách và theo dõi nhiều hướng dẫn như bạn muốn nhưng không bao giờ cảm thấy như bạn đi bất cứ đâu. Bạn phải tìm ra thứ gì đó bạn quan tâm để tạo ra. Sau đó phá vỡ nó và thử tạo ra nó. Bạn sẽ đi vào rất nhiều điều bạn có thể không biết. Nhưng bạn nghiên cứu chúng và tìm hiểu các nhiệm vụ phức tạp hơn khi bạn đi.


1

Tôi cũng gặp phải thử thách này và dần dần tôi đã tìm ra giải pháp của mình: Tôi cần một nguồn bên ngoài để thúc đẩy tôi làm việc hiệu quả hơn.

Bạn có thể bị mê hoặc bởi công nghệ như bất kỳ ai, hào hứng với lập trình như bất kỳ ai, và thông minh và học hỏi nhanh như bất kỳ ai, và nó sẽ chỉ có ý nghĩa rất lớn trừ khi bạn bị bẩn tay và làm công việc. Nhưng nó có thể khó để biết bắt đầu từ đâu, và ngay cả khi bạn có một ý tưởng về nơi bắt đầu, có thể khó để có được quả bóng lăn.

Nếu bạn là người tự khởi nghiệp tốt, có lẽ bạn chỉ cần một số ý tưởng. Hãy thử một số câu đố lập trình hoặc nhìn vào các tiện ích đơn giản mà bạn sử dụng thường xuyên và tự hỏi mình "Tôi có thể làm điều này không? Nếu tôi làm, tôi sẽ thay đổi điều gì?"

Thật khó khăn khi ngồi xuống trước một biên tập viên mở hoặc một mảnh giấy trắng và nói "Được rồi, não, sáng tạo! " Nhưng nếu bạn phá vỡ nó, hãy nghĩ về những thứ bạn có thể có lý do để làm, và tự lái xe từ đó, bạn có thể đi xa hơn.

Và, nếu bạn thấy rằng bạn không thể tự tạo mã, hãy nhờ ai đó giao việc cho bạn, với thời hạn và yêu cầu và tất cả. Nó sẽ đá bạn vào thiết bị.


1

Thực tế là bạn có kiến ​​thức cơ bản là tốt - bản thân tôi không phải là dân chuyên nghiệp, nhưng tôi có thể bán những gì tôi làm, vì vậy tôi phải làm điều gì đó đúng đắn. Tôi khuyên bạn nên tìm hiểu những điều cơ bản về ngôn ngữ của bạn và nền tảng bạn đang phát triển (và có vẻ như bạn có).

Trước tiên hãy vạch ra những gì bạn đang cố gắng thực hiện và phần nào biết được bạn sẽ làm gì, tất cả là về việc đun sôi các chi tiết cụ thể, vì nó giúp bạn tìm ra công cụ nhanh hơn. Sau đó, chỉ cần Google những gì bạn đang cố gắng thực hiện bằng ngôn ngữ bạn đang sử dụng nếu bạn gặp khó khăn - thậm chí đặt câu hỏi trên Stack Overflow (Bản thân tôi đã hỏi hơn 70 câu hỏi rồi, hehe)!

Cá nhân tôi đã học được bằng cách googling, tôi thậm chí không nắm bắt được những điều cơ bản lúc đầu, điều mà tôi nên làm, tuy nhiên đến lúc tôi đang tạo ra một số thứ khá tốt, tôi vẫn không biết "mảng" là gì. ;)


0

Tôi nghĩ để phát triển kỹ năng của bạn ở mặt sau của giao diện, bạn nên bắt đầu thao tác dữ liệu. Hầu hết các dự án lớn đều tập trung vào việc di chuyển, chuyển đổi và hiển thị dữ liệu.

Bản thân tôi biết rằng tôi đã không nắm bắt tốt các dự án lớn hơn cho đến khi tôi cảm thấy thoải mái với một số loại truy cập dữ liệu và thao tác tệp khác nhau.


0

Nhảy vào một cái gì đó hơi quá đầu của bạn và tìm ra nó có thể là một cách tuyệt vời để mở rộng các kỹ năng của bạn. Bạn có thể muốn thử xem một số bộ sách của O'Reilly Cookbook:

http://oreilly.com/store/series/cookbooks.html

Định dạng Vấn đề / Giải pháp / Thảo luận âm thanh như nó có thể là chính xác những gì bạn đang tìm kiếm, mã 'công thức nấu ăn' mà sẽ DO một cái gì đó thú vị và một số cuộc thảo luận về cách thức hoạt động.


1
Nếu bạn quyết định mua hãy chắc chắn để tìm một mã số phiếu giảm giá đầu tiên: retailmenot.com/view/oreilly.com
DKnight

0

Tôi nghĩ rằng bạn chỉ thất bại trong việc thử thách bản thân để làm nhiều hơn.

Nếu bạn thực sự tò mò làm thế nào để làm một cái gì đó đi nghiên cứu nó! Nếu bạn muốn biết làm thế nào các công việc Posterous hãy thử bắt đầu với một cái gì đó nhỏ như nghiên cứu loại công cụ bạn cần, làm thế nào để có được thông tin từ hộp văn bản đến một trang web. Sau đó, bạn dần dần xây dựng trên đó. Câu hỏi tiếp theo có thể là thiết lập kết nối email đến trang web và cơ sở dữ liệu.

Bạn có công cụ tốt nhất mà bạn cần, internet.


0

Ngoài việc chia nhỏ dự án thành các nhiệm vụ, chìa khóa còn là học cách sử dụng lại mã. Chia mã của bạn thành các mô-đun mà bạn có thể sử dụng lại trong các dự án khác, nơi bạn cần làm điều tương tự.

Ví dụ, trong dự án ví dụ này, bạn có thể sẽ làm công việc cơ sở dữ liệu để lưu trữ các bài đăng trên blog. Bạn có thể viết một lớp cơ sở dữ liệu để kết nối với cơ sở dữ liệu, thực hiện các truy vấn, nhận kết quả, v.v. Sau đó, trong tất cả các dự án trong tương lai, bạn có thể sử dụng cùng một lớp đó và có thể làm việc với cơ sở dữ liệu một cách dễ dàng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.