Tôi đã làm việc như một nhà phát triển duy nhất tại một công ty biết một công nghệ cụ thể, là người duy nhất thực hiện kiểu lập trình mà tôi đã làm và là một nhà thầu trong các tình huống tương tự. (Tôi cũng đã làm việc trong môi trường nhóm với các nhà phát triển khác, những người biết các công cụ khác nhau và với các nhà phát triển khác, những người đã làm chính xác những gì tôi đã làm.)
Ưu điểm là lập trình viên duy nhất
- Như bạn đã đề cập, bạn thường có quyền tự do sử dụng bất kỳ công cụ hoặc ngôn ngữ nào bạn cảm thấy bạn có thể học. Bạn không phải luôn đặt trường hợp trước các đồng nghiệp của mình để được phép làm việc với Công nghệ mới X trong khi mọi người khác đang sử dụng Công nghệ hiện tại Y.
- Bạn có nhiều trách nhiệm hơn. Về cơ bản, bạn hoạt động với tư cách là người dẫn đầu dự án và nhà phát triển cho mỗi dự án của bạn và với khả năng xác định và triển khai công cụ mới, bạn cũng là người đứng đầu bộ phận một cách hiệu quả. (Đừng nói với nhân viên bán hàng này. Họ thích nói chuyện với những người ra quyết định và bạn không có thời gian để nói chuyện với họ.)
- Không có câu hỏi nào về tín dụng cho công việc được hoàn thành: rõ ràng bạn và bạn một mình đã khiến mọi việc xảy ra.
- Bạn có thể dành nhiều thời gian hơn để thực hiện các dự án của riêng mình và ít thời gian hơn trong các cuộc họp về các dự án về cơ bản là của người khác (nhưng bạn ở đó với tư cách là người hỗ trợ, có thể sao lưu hoặc bất cứ điều gì.)
Nhược điểm
- Như David chỉ ra trong một bình luận, bạn là nhà phát triển duy nhất, vì vậy không có sự phát triển nào được thực hiện mà không có bạn. Có lần tôi đã khoe với anh tôi rằng tôi là "chàng trai" trong một dự án cụ thể tại nơi làm việc. Ông mô tả chính xác tình huống của tôi cho tôi: Tôi đã bị mắc kẹt. Tôi không thể tiếp tục ở công ty đó vì tôi không bao giờ có thể thoát khỏi dự án đó. (Anh ấy cũng đúng. Phải mất vài tháng đào tạo trong một khoảng thời gian dài trước khi tôi có thể giao nó cho một người thậm chí có khả năng hỗ trợ nó.) Bạn có thể thấy khó khăn khi đi nghỉ thật sự khi không có gì có thể được thực hiện mà không có bạn.
- Như Pierre chỉ ra, không có ai trên trang web thực hiện đánh giá mã hoặc chia sẻ các thực tiễn tốt nhất với bạn. Bạn có thể tiếp cận với các đồng nghiệp theo nhiều cách khác nhau, nhưng không có gì hiệu quả bằng việc gõ nhẹ vào vai đồng nghiệp và yêu cầu cô ấy xem mã của bạn trong 5-10 phút.
- Trong một tĩnh mạch tương tự, bạn có thể gặp khó khăn khi có kinh nghiệm với các công cụ mới. Đào tạo tại chỗ có thể hiếm như thời gian nghỉ hè: ai đó sẽ phàn nàn rằng công ty không đủ khả năng để bạn ngừng xem Language 3.0 trong một tuần khi không có ai để các ứng dụng Language 2.0 hoạt động.
- Sự thăng tiến nghề nghiệp có thể cực kỳ khó quản lý. Bạn có thể không có một vị trí mà bạn có thể phấn đấu, thậm chí một sự thay đổi trong tiêu đề có thể khó đạt được, và các đánh giá cuối năm không có bất kỳ khung tham chiếu nào, vì vậy công việc xuất sắc có thể không được chú ý nếu không có gì khác Lý do hơn không ai thực sự hiểu những gì bạn làm.
Nếu bạn quyết định chuyển đến một công ty nơi bạn sẽ làm việc như một phần của một nhóm lập trình viên, tôi không nghĩ rằng trải nghiệm solo của bạn có thể sẽ làm tổn thương bạn nhiều. Sự thiếu kinh nghiệm của bạn với các mẫu thiết kế không nhất thiết quan trọng bằng sự sẵn lòng tìm hiểu chúng. (Có thể có những tình huống bạn đang phỏng vấn một ứng cử viên có nền tảng tương tự và cũng có kinh nghiệm trong bất kỳ phương pháp nào mà công ty sử dụng, nhưng điều đó đúng với tất cả mọi người.)
Dọc theo đường cùng, sự thiếu kinh nghiệm của bạn trong một đội được cân bằng bởi khả năng đội nhiều mũ của bạn. Có một số nhà phát triển là những người chơi nhóm tốt nhưng không bao giờ phát triển khả năng quản lý dự án; bạn đã cho thấy rằng bạn có thể làm điều đó.
Tôi khuyên bạn khi bạn là nhà phát triển solo, bạn nên dành thời gian đọc về các công cụ và kỹ thuật mà các nhà phát triển tương tự đang sử dụng, vì vậy ngay cả khi bạn không sử dụng chúng, bạn sẽ biết rằng chúng tồn tại và bạn có thể tham khảo họ trong một cuộc phỏng vấn, ngay cả khi chỉ nói "Có, tôi đã đọc một chút về các khung MVC, nhưng tôi đã không sử dụng chúng cho mình." Làm những gì bạn có thể để giữ liên lạc với các nhà phát triển khác: đi đến các cuộc họp nhóm người dùng địa phương, đọc và nhận xét trên blog (hoặc giữ một trong những thứ của riêng bạn), thỉnh thoảng cố gắng đến hội thảo, xem hội thảo trên web và như vậy. (Bạn cũng có thể xem xét các trang web như lynda.com để đào tạo nội bộ: nó không tốt bằng một cuộc hội thảo kéo dài một tuần ở một nơi khác, nhưng bạn có thể xem video vào thời gian riêng của mình và không đưa mọi người vào chế độ hoảng loạn vì bạn ra khỏi văn phòng.)