- Chúng tôi làm việc chăm chỉ để cải thiện công nghệ và kỹ năng mềm của mình. Nhưng đặc điểm tính cách của chúng tôi, suy nghĩ của chúng tôi - chúng tôi coi đó là điều hiển nhiên. Một phần bẩm sinh, cố định của con người chúng ta. Và do đó, chúng tôi để nó chạy tự động.
- Cách suy nghĩ này có hại. Tư duy của bạn không chỉ quan trọng đối với sự nghiệp phát triển phần mềm thành công (thậm chí có thể hơn cả kỹ năng của bạn), mà nó còn nằm trong tầm kiểm soát của bạn.
- Các nhà phát triển cấp cao thực sự thừa nhận rằng các đặc điểm của tính cách có thể uốn nắn được, họ tự nhận thức được suy nghĩ của mình và cố gắng cải thiện nó. Đây là siêu năng lực khiến họ nổi bật giữa đám đông và thăng tiến trong sự nghiệp.
- Trong bài đăng này, tôi sẽ thảo luận về 10 đặc điểm quan trọng nhất của một nhà phát triển thành công, tại sao chúng lại quan trọng và chia sẻ một số mẹo về cách bạn có thể định hình chúng.
Phát triển phần mềm chuyên nghiệp là một bộ môn phức tạp đòi hỏi nhiều khả năng khác nhau để thành công. Chúng ta có thể nhóm chúng thành ba loại chính:
Đây là nhóm rõ ràng nhất. Để trở thành một nhà phát triển thành công, bạn cần phải giỏi trong lĩnh vực của mình: ngôn ngữ lập trình và khuôn khổ, nguyên tắc mã sạch, kiến trúc, thử nghiệm, gỡ lỗi, v.v. Bạn cũng cần phải thành thạo với các công cụ của mình: kiểm soát phiên bản, dòng lệnh và IDE.
Tuy nhiên, chỉ riêng kỹ năng kỹ thuật sẽ không giúp bạn tiến xa trong một thiết lập chuyên nghiệp, dựa trên nhóm. Đó là lý do tại sao bạn cũng cần có kỹ năng mềm.
Để có thể làm việc trong các dự án thương mại lớn, bạn cần có một bộ kỹ năng mềm vững chắc: làm việc nhóm, giao tiếp, lập kế hoạch và quản lý dự án, làm việc từ xa, tự tổ chức, học tập, năng suất cá nhân, v.v.
Nhiều người trong chúng ta thấy những kỹ năng này kém thú vị hơn những kỹ năng kỹ thuật và do đó, chúng ta thường bỏ bê chúng - vì vậy chúng có thể đã tách các nhà phát triển chuyên nghiệp, vững chắc khỏi đám đông. Nhưng ít nhất chúng ta thừa nhận chúng.
Tuy nhiên, còn có một loại thứ ba, cũng quan trọng không kém nhưng nằm dưới tầm ngắm của hầu hết tất cả, ngay cả những nhà phát triển giỏi.
Tư duy cũng tương tự như các kỹ năng mềm, nhưng "kỹ năng" mà nó bao gồm là những đặc điểm cốt lõi, cơ bản hơn: sự tò mò, kiên nhẫn, đồng cảm, bền bỉ, khả năng thích ứng, v.v.
Ở một mức độ nào đó, chúng tôi biết những đặc điểm này rất quan trọng đối với sự nghiệp phát triển phần mềm thành công. Nhưng vì chúng dường như là một phần bẩm sinh, cố định trong tính cách của chúng ta nên chúng ta không cố gắng học chúng một cách có chủ ý giống như cách chúng ta học các kỹ thuật quản lý dự án hoặc năng suất cá nhân.
Điều này khiến chúng ta mù quáng trước một phần lớn và quan trọng trong bộ kỹ năng của mình và có thể ảnh hưởng xấu đến sự tiến bộ của chúng ta.
[Để có góc nhìn toàn diện hơn nữa về việc thăng tiến trong sự nghiệp của bạn với tư cách là một nhà phát triển chuyên nghiệp, hãy xem "Hướng dẫn dứt khoát để trở thành một Senior Dev ĐÚNG" của tôi trên GitHub]
Phát triển phần mềm là một lĩnh vực phức tạp, đôi khi khó chịu và phát triển cực kỳ nhanh. Học hỏi, phát triển và duy trì sự phù hợp với tư cách là một nhà phát triển (và không bị kiệt sức trong quá trình này) đòi hỏi sự kết hợp cụ thể giữa các đặc điểm tính cách.
Đồng thời, đó là một trò chơi đồng đội 100%. Những hacker đơn độc không có chỗ đứng trong lĩnh vực phát triển phần mềm chuyên nghiệp, bất kể họ giỏi kỹ thuật đến đâu. Và hoạt động tốt trong một nhóm đòi hỏi một tập hợp các đặc điểm khác, dường như ngược lại.
Tư duy là một cái gì đó khác với kỹ năng. Hiểu các nguyên tắc phát triển Agile không giống như khả năng thích ứng và sẵn sàng thay đổi thường xuyên.
Và việc biết các kỹ thuật sửa lỗi không giống như việc có sự tò mò và kiên trì để thực sự tận hưởng việc theo đuổi vấn đề trong vài giờ mà không bị kiệt sức hay nản lòng.
Nhưng mặc dù những đặc điểm này có vẻ cố định và bẩm sinh đối với tính cách của chúng ta, nhưng chúng cũng có thể học được như các kỹ năng.
Nếu không hiểu những đặc điểm nào là quan trọng đối với một lập trình viên và cố tình mài giũa chúng theo thời gian, bạn sẽ không bao giờ phát huy hết tiềm năng của mình. Các nhà phát triển cấp cao thực sự biết điều này, tự nhận thức được suy nghĩ của họ và liên tục làm việc để cải thiện nó.
Đây là điểm khác biệt, siêu năng lực giúp phân biệt các nhà phát triển giỏi nhất với đám đông.
Ok, nhưng đặc điểm nào là quan trọng nhất? Hãy đi sâu hơn một chút vào các chi tiết.
Nếu tôi phải tóm tắt trong một câu về phát triển phần mềm, tôi sẽ nói đó là về học tập. Bạn cần luôn cập nhật các công nghệ và quy trình phát triển phần mềm không ngừng phát triển.
Bạn cần tìm hiểu chi tiết sâu về các lĩnh vực kinh doanh phức tạp (một số lĩnh vực trong suốt sự nghiệp của bạn). Phân tích làm rõ yêu cầu là học. Nghiên cứu là học tập.
Tối ưu hóa hiệu suất và gỡ lỗi - nói cách khác, đi sâu vào hoạt động bên trong của mã - cũng là một kiểu học hỏi.
Phát triển phần mềm cũng là làm việc với con người (và vì con người).
Bạn sẽ làm việc trong các nhóm đa chức năng với nhiều nhóm người thuộc các chuyên môn và nền tảng khác nhau (ngày nay, trong thời đại làm việc từ xa, hầu hết có thể đến từ nhiều quốc gia và nền văn hóa).
Bạn sẽ phải hiểu "kinh doanh." Bạn sẽ phải hiểu và giải quyết các vấn đề và điểm đau của người dùng.
Nếu không có sự tò mò hợp lý, bạn sẽ không chỉ kém hiệu quả hơn trong tất cả những việc đó mà còn bị kiệt sức khá nhanh.
Phát triển phần mềm là một câu đố khổng lồ - vô số vấn đề cần giải quyết. Lý do bạn được thuê làm nhà phát triển là để giải quyết các vấn đề của công ty và khách hàng của bạn.
Để làm được điều này, bạn cần giải quyết các vấn đề về tổ chức (cách hoạt động như một nhóm, cách tổ chức công việc, sử dụng quy trình nào) và các vấn đề kỹ thuật (logic, kiến trúc, hiệu suất, v.v.).
Những vấn đề này bao gồm các vấn đề nhỏ hơn, lồng nhau, cho đến các vấn đề nguyên tử như cách thiết kế và đặt tên cho một chức năng hoặc kiểm tra đơn vị cụ thể.
Nếu bạn không thích giải những câu đố như vậy, nếu bạn không có sở trường phá vỡ và gỡ rối các vấn đề, thì sự nghiệp phát triển phần mềm của bạn sẽ là một cuộc đấu tranh.
Trở thành một nhà phát triển cấp cao thực sự đòi hỏi nhiều năm luyện tập có chủ ý. Bạn cũng sẽ gặp rất nhiều trở ngại trên đường đi. Phát triển sự nghiệp của bạn là phần thưởng nhưng cũng là một quá trình chậm chạp và đôi khi đau đớn.
Để đạt được sự xuất sắc và đứng đầu, bạn phải sẵn sàng cho sự cống hiến suốt đời. Và điều này đòi hỏi rất nhiều kiên nhẫn.
Sự kiên nhẫn cũng rất quan trọng đối với nhiều thứ liên quan đến công việc của chúng tôi: xử lý hỗ trợ kỹ thuật, làm việc với những người dùng không rành về công nghệ và đối phó với bộ máy quan liêu của tổ chức. Thêm vào đó, nó là một công cụ hỗ trợ giải quyết vấn đề tuyệt vời.
Và bạn sẽ không duy trì được công việc trong một ngành công nghệ phát triển nhanh, thay đổi liên tục như vậy nếu không có sự kiên nhẫn.
Phát triển phần mềm đòi hỏi rất nhiều sự kiên trì. Săn bọ. Giải mã các API và thư viện tài liệu kém. Gỡ rối mã kế thừa. Theo dõi các tắc nghẽn hiệu suất. Thậm chí chỉ đơn giản là duy trì sự tập trung sâu trong thời gian dài.
Bạn sẽ gặp khó khăn, thất bại, bế tắc và thất vọng rất nhiều - bất kể bạn là người có thâm niên như thế nào. Và bạn sẽ cần rất nhiều gan góc để vượt qua và không bị kiệt sức.
Nhưng bạn cũng cần hiểu thế nào là lượng cát phù hợp. Đâu là điểm tuyệt vời giữa việc bạn đập đầu vào tường hàng giờ hàng ngày một cách vô ích so với việc liên tục gây rối cho nhóm của bạn bằng cách yêu cầu hỗ trợ ngay lập tức khi bạn gặp phải một va chạm dù là nhỏ nhất trên đường?
Phát triển phần mềm xoay quanh con người và các nhóm. Bạn sẽ làm việc rất chặt chẽ với các đồng nghiệp của mình ở cấp độ cá nhân: ghép nối các chương trình, cùng nhau gỡ lỗi và xem lại mã của họ.
Bạn cũng sẽ làm việc với họ theo cách thiết lập nhóm: động não, lập kế hoạch và đưa ra quyết định theo nhóm. Và sự hợp tác này rất lộn xộn: công việc của bạn sẽ chồng chéo hoặc xung đột, và bạn sẽ có những ý kiến khác nhau.
Bạn sẽ thương lượng lộ trình của mình với ban quản lý. Cuối cùng, để xây dựng một sản phẩm tuyệt vời, bạn sẽ phải đặt mình vào vị trí của người dùng.
Trên hết, tất cả những người này đều đến từ nhiều nền tảng khác nhau, cả kỹ thuật và phi kỹ thuật. Họ đam mê. Họ có ý kiến mạnh mẽ. Đôi khi họ có thể có những nhân vật khó khăn.
Và thành công của bạn với tư cách là nhà phát triển phụ thuộc vào mức độ bạn có thể xây dựng mối quan hệ với họ. Nếu không có trí tuệ cảm xúc cao, điều đó đơn giản là không thể.
Phát triển phần mềm (và làm việc theo nhóm nói chung) là một hành động cân bằng. Một mặt, bạn được thuê vì chuyên môn của mình. Bạn được kỳ vọng là người có quan điểm mạnh mẽ và hướng dẫn những người ít hiểu biết về công nghệ hoặc có nhiều kinh nghiệm hơn.
Mặt khác, bạn sẽ làm việc với những đồng đội có kinh nghiệm và quan điểm ngang nhau, những người sẽ thách thức quan điểm của bạn và bạn sẽ phải cùng họ đưa ra quyết định nhóm.
Cái tôi của bạn thường sẽ bị tổn thương trong quá trình này. Bạn phải có khả năng kiểm soát nó - nhưng không bị thu hồi và thảnh thơi.
Bạn phải có chính kiến nhưng không quá khích. Có một quan điểm mạnh mẽ nhưng giữ nó một cách yếu ớt; hãy cởi mở để bị thuyết phục nếu không. Bạn phải sẵn sàng bảo vệ quan điểm của mình nhưng cũng phải biết khi nào nên buông tay, để không trở thành một kẻ hợm hĩnh, hợm hĩnh.
Bạn cần tôn trọng nhóm, doanh nghiệp và khách hàng. Có thể không đồng ý nhưng cam kết. Và nhẹ nhàng nhận phản hồi mang tính xây dựng (thậm chí hoàn toàn tiêu cực). Nếu không, bạn sẽ không thể làm việc nhóm hiệu quả.
Mọi thứ trong phát triển phần mềm đang chuyển động rất nhanh. Công nghệ liên tục thay đổi. Các phương pháp mới trở nên phổ biến. Các công ty xoay trục.
Trong suốt sự nghiệp của mình, bạn cũng sẽ thay đổi các dự án, nhóm, công ty và lĩnh vực kinh doanh. Ngay cả một dự án đơn lẻ cũng là một hành động kiểm tra và điều chỉnh liên tục (đặc biệt là trong các phương pháp nhanh nhẹn). Và nhóm của bạn cũng sẽ liên tục tự tổ chức lại.
Hầu hết mọi người đều dị ứng với sự thay đổi. Thay đổi là khó. Nó không thoải mái. Thật là căng thẳng. Khả năng thích ứng và sẵn sàng thay đổi sẽ ngay lập tức khiến bạn trở nên khác biệt. Nó không chỉ cho phép bạn leo lên đỉnh của bậc thang thâm niên mà còn cho phép bạn ở lại đó trong một thời gian dài.
Tôi đang lặp đi lặp lại điều đó một cách quảng cáo, nhưng phát triển phần mềm là một trò chơi đồng đội. Đồng nghiệp, người quản lý và công ty của bạn - tất cả họ đều tin tưởng vào bạn để thực hiện phần việc của mình.
Sẽ không ai coi bạn là một nhà phát triển cấp cao thực sự - bất kể chuyên môn công nghệ của bạn là gì - nếu họ không thể dựa vào bạn để đảm nhận công việc và thực hiện lời hứa của bạn mà không cần phải chịu sự quản lý vi mô.
Nó không có nghĩa là bạn không bao giờ có thể phạm sai lầm. Thất bại xảy ra. Và những công ty tốt nhất coi đó là những cơ hội học tập quý giá.
Nhưng để làm được điều này, bạn cần có khả năng nhặt bóng bị rơi, phục hồi một cách duyên dáng và được tin tưởng để học hỏi từ thất bại của mình và không lặp lại sai lầm đó trong tương lai.
Phát triển phần mềm chuyên nghiệp là một nghệ thuật đánh đổi. Bạn liên tục cần phải thỏa hiệp giữa tốc độ phát triển và chất lượng. Cân bằng mới và đầy hứa hẹn với đã được chứng minh và ổn định.
Đi trên một ranh giới mong manh giữa kỹ thuật kém và kỹ thuật quá mức.
Để thành công trong việc phát triển phần mềm chuyên nghiệp, bạn cần phải rất thực dụng. Bạn cần hiểu rằng không có gì là trắng đen rõ ràng và không có nguyên tắc hay khuôn mẫu nào đúng trong mọi tình huống.
Bạn phải có trực giác tuyệt vời để cân bằng giữa các phương pháp, công nghệ và giải pháp khác nhau; cảm thấy thoải mái khi cắt góc nhưng có ý thức tốt về mức độ.
Cuộc sống của bạn với tư cách là một lập trình viên không phải chỉ có nắng và cầu vồng. Bạn sẽ gặp những khách hàng khó chịu. Đối mặt với thời hạn chặt chẽ. Dự án của bạn có thể bị hủy bỏ. Bạn có thể không đồng ý với nhóm hoặc quản lý của mình nhưng vẫn phải cam kết và thực hiện.
Bạn cũng sẽ làm việc với mã xấu xí. (Vâng, mọi cơ sở mã đều có phần tốt và phần xấu, ngay cả ở các công ty hàng đầu như Google.)
Bạn sẽ cảm thấy mệt mỏi, thất vọng và khó chịu.
Nếu bạn để sự tiêu cực lấn át, nếu bạn bắt đầu chỉ trích và phàn nàn, bạn sẽ không chỉ làm mất động lực của bản thân mà còn giết chết tinh thần của cả nhóm - điều sẽ không thể tiến xa trong sự nghiệp của bạn.
Bạn cần phải thiên về những điều tích cực. Hãy lạc quan và vui vẻ. Luôn luôn tìm kiếm một lớp lót bạc. Hãy là người tập hợp đội của họ, tiêu diệt tâm trạng xấu và phục hồi tinh thần. Nó không chỉ giúp bạn được chú ý và thăng tiến mà còn giúp sự nghiệp của bạn trở nên thú vị và bền vững hơn.
Tất nhiên, các kỹ năng có thể được đào tạo - cả kỹ năng mềm và kỹ thuật. Bạn có thể trở nên tốt hơn trong việc gỡ lỗi cũng như giao tiếp. Nhưng còn những đặc điểm dường như bẩm sinh như tính tò mò hoặc cái nhìn tích cực thì sao? Bạn thực sự có thể rèn luyện bản thân để trở nên lạc quan hơn hay tò mò hơn không?
Vâng, bạn có thể! Đây là một chủ đề rộng lớn, có giá trị trong nhiều cuốn sách ("Mindset" của Carol S. Dweck là một điểm khởi đầu tuyệt vời). Nhưng hãy để tôi chia sẻ nhanh một vài lời khuyên:
Tôi cũng khuyến khích bạn tìm hiểu một chút về các thành kiến nhận thức và hình thành thói quen. Đây là một ngành học phát triển tốt, với khối lượng kiến thức khổng lồ và khá thú vị để khám phá.
Nếu bạn muốn trở thành một nhà phát triển cấp cao thực sự , bạn phải là một người hoàn thiện. Bạn phải có sự kết hợp phù hợp giữa kỹ năng công nghệ, kỹ năng mềm và đặc điểm tính cách, và bạn không thể bỏ qua bất kỳ phần nào trong bộ ba này.
Đặc điểm nhân vật là phần khó khăn nhất. Hầu hết các nhà phát triển bỏ qua chúng vì họ không tự nhận thức được chúng, không biết cái nào là quan trọng hoặc không tin rằng chúng có thể uốn nắn được.
Nhưng nếu bạn có thể khắc phục lối suy nghĩ sai lầm này - nếu bạn có thể thay đổi suy nghĩ của mình - thì bạn có thể biến nó thành một siêu năng lực giúp nâng tầm sự nghiệp của bạn và khiến bạn thực sự nổi bật.