bài đăng TaiNgheTroThinh này chỉ dẫn bạn cách bắt đầu phát triển và duy trì phần mềm có mã nguồn mở trong cộng đồng lập trình. Dù người làm công việc này đôi khi bị coi là “hacker phần mềm”, thật ra vị trí này hướng đến mục tiêu tạo ra và tinh chỉnh phần mềm hơn là xâm nhập vào nó. Nếu có hứng trở thành kiểu hacker tìm kiếm và khai thác lỗ hổng trong phần mềm hoặc hệ điều hành, bạn có thể tham khảo bài đăng trở thành tin tặc.
những bước
1Hiểu được bạn cần có những gì để phát triển phần mềm. Trở thành một nhà phát triển phần mềm đồng nghĩa với việc bạn sẽ dành nhiều thời gian để xây dựng, tinh chỉnh và cập nhật phần mềm miễn phí để khiến người dùng hài lòng và khiến phần mềm luôn phù hợp. Để làm được điều này, bạn cần đạt những tiêu chuẩn sau:Có hiểu biết về cả ngôn ngữ hệ thống (ví dụ như C++) và ngôn ngữ lập trình (ví dụ như Python)Biết rằng bạn muốn lập trình cho nền tảng nào (chẳng hạn như Windows, Android…).Sẵn lòng dành nhiều thời gian học hỏi về thể loại phần mềm, nền tảng và ngôn ngữ đã lựa chọn.2Hiểu rằng bất cứ ai cũng có thể trở thành nhà phát triển phần mềm tự do. Trái với suy nghĩ thông thường, việc có hiểu biết sâu về toán học, kiến thức code từ trước, và/hoặc tấm bằng đại học về khoa học máy tính (hoặc lĩnh vực tương tự) không phải là thứ bắt buộc phải có khi học cách trở thành nhà phát triển phần mềm tự do.Chỉ cần bạn có hứng thú với việc học cách phát triển phần mềm và sẵn sàng chấp nhận những lời phê bình khi cần thiết, chẳng có lý do gì khiến bạn không thể trở thành một nhà phát triển phần mềm.3Xác định mục tiêu cuối cùng của mình. Phát triển phần mềm có thể chỉ đơn thuần là sở thích cá nhân hoặc nghề nghiệp toàn thời gian. Việc xác định bạn muốn đạt được mục tiêu gì trước khi bắt đầu học ngôn ngữ lập trình hoặc lựa chọn một nền tảng giúp bạn luôn tập trung trên con đường của mình. Dù không quá cần thiết, tấm bằng khoa học máy tính hoặc phát triển phần mềm sẽ giúp bạn nâng cao cơ hội việc làm nếu bạn đang hướng tới mục tiêu cuối cùng là có sự nghiệp ổn định trong lĩnh vực phát triển phần mềm.Nếu mục tiêu của bạn chỉ đơn giản là tạo ra một ứng dụng hoặc chương trình giúp người dùng làm được việc từng rất khó hoặc không thể, hãy đảm bảo rằng phần mềm đó chưa được người khác phát triển.4Xác định xem bạn muốn làm việc trên nền tảng nào. Mỗi nền tảng chính—Windows, macOS, iOS, Android, và Linux—đều có cộng đồng riêng, những ngôn ngữ lập trình được ưa thích và nhu cầu cá nhân khác nhau. Biết rằng phần mềm của bạn sẽ chạy trên nền tảng nào trước khi dấn thân vào nghề phát triển phần mềm là một việc quan trọng. Tốt nhất là nên làm việc trên cùng nền tảng mà bạn đang phát triển. Ví dụ: Nếu bạn đang phát triển ứng dụng Android, dùng hệ thống dựa trên Unix như Mac hoặc máy tính Linux sẽ tốt hơn là dùng Windows.Linux là hệ điều hành thường được dùng (và miễn phí) dành cho nhiều nhà phát triển phần mềm.5Lựa chọn một ngôn ngữ code. Có hai loại ngôn ngữ code. Bạn cần học ít nhất một ngôn ngữ trước khi tiến hành phát triển, nhưng về sau bạn vẫn phải biết nhiều ngôn ngữ: Ngôn ngữ hệ thống — Một ngôn ngữ máy tính được dùng để tương tác trực tiếp với hệ thống. Có thể kể đến vài ngôn ngữ điển hình như C, C++ và Java.Ngôn ngữ lập trình — Ngôn ngữ được dùng để thiết kế giao diện của phần mềm (thứ mà người dùng sẽ nhìn vào) và tính năng. Có thể nhắc đến một vài ngôn ngữ điển hình như Python, Ruby và Perl.6Làm quen với dòng lệnh. Mỗi máy tính đều có ứng dụng dòng lệnh (chẳng hạn như Command Prompt trên Windows, Terminal trên Mac và Linux…). Bạn có thể dùng dòng lệnh để tương tác với máy tính, đưa ra những lệnh cụ thể khi cần thiết. Dù bạn không tiến hành phát triển phần mềm từ dòng lệnh, bạn cần dùng dòng lệnh để chạy một vài chương trình nhất định hoặc tích hợp lệnh phần mềm với máy tính.7Tải về và dùng Notepad++. Notepad++ là tài nguyên lập trình vô giá vì vừa khiến quá trình code (viết mã) trở nên dễ theo dõi hơn nhờ có sự hỗ trợ của đồ họa, vừa đóng vai trò là một công cụ giáo dục tuyệt vời. Dù sau này bạn sẽ dùng những phần mềm chỉnh sửa văn bản dựa trên dòng lệnh và chương trình khác để viết code, Notepad++ là công cụ hữu ích (và miễn phí) giúp bạn có khởi đầu thuận lợi.8Cài đặt môi trường phát triển. những nền tảng và ngôn ngữ lập trình đã lựa chọn thường có phần mềm phát triển cho phép bạn lưu và kiểm thử dự án của mình trên máy tính. Những phần mềm như thế được gọi là “môi trường phát triển”. Nếu có thể, bạn nên tìm kiếm và cài đặt môi trường phát triển cho ngôn ngữ đã lựa chọn trước khi bắt đầu học lập trình. Chẳng hạn, nếu đang phát triển ứng dụng Android, bạn nên tải về và cài đặt bộ công cụ phát triển Android Studio.Người dùng Java thường sẽ dùng môi trường phát triển kiểu như Eclipse.9Bắt đầu học cách lập trình. Sau khi biết bản thân muốn dùng ngôn ngữ nào, đã đến lúc bắt đầu học cách dùng nó. Hiện có nhiều bản chỉ dẫn trực tuyến—cả miễn phí và trả phí—mà bạn có thể tham khảo, và hầu hết những thư viện đều có sách chuyên về ngôn ngữ lập trình (ví dụ như sách “C++ cho người mới bắt đầu”) cho phép bạn học miễn phí về ngôn ngữ nào đó. Có rất nhiều tài liệu lập trình miễn phí ở trên mạng, vậy nên hãy tận dụng chúng trước khi đăng ký một khóa học hay lớp học mất phí.10Tìm kiếm cộng đồng có thể hỗ trợ cho lĩnh vực yêu thích của bạn. những dự án có mã nguồn mở như những dự án trên SourceForge hoặc GitHub thường có nhiều người theo dõi. Nếu có thể tìm thấy một dự án dùng cùng ngôn ngữ lập trình và/hoặc cùng mục tiêu với dự án của mình, bạn có thể gia nhập cộng đồng để góp ý và theo dõi quá trình phát triển. Giống như bất cứ kỹ năng nào khác, tham gia vào quá trình tạo (dù chỉ là người quan sát) là cách tốt nhất để có kinh nghiệm thực tế.11Tương tác với cộng đồng. Bạn có thể làm nhiều việc, từ đăng bài trong diễn đàn của cộng đồng đến bắt đầu dự án mã nguồn mở của riêng mình, nhưng mục đích chính vẫn là hiện thực hóa ý tưởng và vượt qua trở ngại cũng như lắng nghe ý
kiến phản hồi của cộng đồng. Nếu có ý định bắt đầu dự án mã nguồn mở của riêng mình, hãy chuẩn bị tinh thần thỏa hiệp với cộng đồng về hướng đi của dự án.12Tìm kiếm dự án mã nguồn mở để cống hiến sức mình. Thông thường, trong lĩnh vực phát triển phần mềm, ý tưởng chính hoặc dự án nhỏ lẻ của bạn có thể đang được cộng đồng tiến hành với nhiều kinh nghiệm hơn hẳn bạn. Nếu vậy, bạn nên cân nhắc về việc xin tham gia vào dự án. Điều này giúp bạn vừa mở mang tầm hiểu biết về cách thức hoạt động của dự án phần mềm, vừa giúp hiện thực hóa dự án của bạn, dù chỉ là dưới hình thức làm việc theo nhóm. Dự án mã nguồn mở có thể không phải là mục tiêu cuối cùng của bạn, nhưng đây là cách tuyệt vời để tập hợp những ý tưởng và tạo ra phần mềm phù hợp với người dùng.13Chấp nhận lời chê bai của cộng đồng về phần mềm của mình. Trong quá trình phát triển và phổ biến phần mềm, có thể bạn sẽ gặp không ít lời chê bai. Lắng nghe ý kiến phản hồi của cộng đồng sẽ giúp định hình việc phát triển trong tương lai, ngoài ra còn giúp bạn biết đường tắt và phương pháp giải quyết những vấn đề tương tự cho những dự án sau này. Không phải ý kiến phản hồi nào cũng mang tính xây dựng. Nếu bạn nhìn thấy ý kiến phản hồi thô lỗ hoặc không hữu ích, cố gắng cư xử lịch sự nếu có ý định trả lời.14Tham gia thử thách phát triển phần mềm, chương trình hoặc cuộc thi. Thường thì bạn sẽ tìm thấy thử thách, khóa học, bài giảng, lớp học và cuộc thi trong diễn đàn của cộng đồng, tại những nơi như Craigslist và trong khuôn viên. Việc đăng ký bất cứ sự kiện hoặc hội trại nào giúp bạn được chỉ dẫn bài bản, hòa mình vào môi trường có những người cùng chung chí hướng. Có thể kể tới một sự lựa chọn là chương trình Summer of Code của Google giúp sinh viên làm quen với dự án mã nguồn mở và cộng đồng code.15Tiếp tục nâng cao kỹ năng. Phát triển phần mềm là lĩnh vực đang ngày càng lớn mạnh cùng với sự phát triển của công nghệ, vậy nên hãy đảm bảo rằng bạn sẽ liên tục học hỏi về những dự án mới, ngôn ngữ, hệ điều hành và bất kỳ thông tin liên quan nào khác trong lĩnh vực ưa thích. Sự thành công của một nhà phát triển phần mềm tự do thường đến từ sự tò mò. Chừng nào còn đặt câu hỏi và tìm kiếm câu trả lời, bạn sẽ còn đạt năng suất tốt và làm việc lâu dài trong lĩnh vực phát triển phần mềm
Lời khuyên
Bắt đầu bằng việc học C (hoặc C++) và Python sẽ giúp bạn có khởi đầu khá vững chắc, nhưng Java cũng là một sự lựa chọn phổ biến.Về sau bạn sẽ học nhiều ngôn ngữ máy tính trong khoảng thời gian làm nhà phát triển phần mềm tự do.Lập trình máy tính nghe có vẻ phức tạp, nhưng thật ra chỉ đơn giản là giao tiếp với máy tính bằng ngôn ngữ mà máy tính hiểu được.
Cảnh báo
Bạn không nên cố hồi sinh một dự án bị bỏ dở mà đội trước đó không làm nữa.Ngồi trước máy tính nhiều tiếng đồng hồ có thể gây ảnh hưởng lâu dài đến sức khỏe của bạn. Nhớ đứng lên và kéo giãn cơ, nhìn ra chỗ khác, và di chuyển ít nhất một lần trong nhiều tiếng đồng hồ.Tránh hỏi những câu có liên quan đến nguyên tắc lập trình cơ bản hoặc công cụ lập trình trong trang thảo luận của chương trình mã nguồn mở. Thời gian của một nhà phát triển phần mềm tự do là đáng quý. Thay vào đó, hãy thảo luận về những điều cơ bản của lập trình trong cộng đồng dành cho dân nghiệp dư hoặc lập trình viên mới.Kiên nhẫn. Giống như khi học bất cứ kỹ năng nào khác, trở thành một nhà phát triển phần mềm tự do cần có thời gian và sự quyết tâm.