Qua truyền thông, mọi người đều biết đến những huyền thoại trong giới công nghệ thông tin như Linus Torvalds hay Bill Gates. Nhưng những phầm mềm gắn liên với tên tuổi họ là Linux và Windows đều được tạo ra từ công sức của rất nhiều lập trình viên khác nhau. Những ngôi sao nổi tiếng như Lionel Messi hay Micheal Jordan cũng vậy, họ không chơi bóng một mình.
Lập trình phần mềm là một môn thể thao đồng đội mà đa phần người tham gia – những lập trình viên – đều không phải là thiên tài. Nhiệm vụ của một lập trình viên không phải là thay đổi thế giới. Nhiệm vụ của chúng ta là làm việc cùng nhau. Chia sẻ tầm nhìn. San sẻ công việc. Học hỏi từ những người khác. Và tạo ra một đội tuyệt vời.
1) Tinh thần HRT (Humility – Respect – Trust)
Vậy làm thế nào để có thể xây dựng nên một đội tuyệt vời? Ba nguyên tắc sau có thể làm nền tảng cho sự hợp tác vững chắc giữa các thành viên với nhau:
– Khiêm tốn (Humility): Bạn không phải là trung tâm của vũ trụ. Bạn không hoàn hảo và chắc chắn sẽ có những sai lầm. Bạn cần phải cởi mở suy nghĩ để có thể phát triển bản thân. Bạn cũng cần phải giảm đi tính tự tôn của mình. Ví dụ như hãy tự hỏi xem, bạn có đang cố tỏ ra mình là người thông minh nhất trong nhóm hay không, có đóng góp ý kiến vào mọi chủ đề ngay cả khi bạn không biết rõ hay không?
– Tôn trọng (Respect): Bạn phải quan tâm đến những người làm việc cùng mình. Đối xử tốt với họ. Đánh giá cao tài năng và thành tích của họ. Hướng những chỉ trích, đánh giá đến hành động và công việc chứ không phải cá nhân. Ví dụ như review một đoạn code, hãy đánh giá đoạn code đó có tốt hay không, chứ không phải để đánh giá người viết ra nó có giỏi hay không.
– Tin tưởng (Trust): Bạn phải tin tưởng những người trong nhóm mình đủ khả năng để đáp ứng công việc. Cho họ sự tự do và chủ động trong công việc. Không che dấu khuyết điểm và sai lầm của mình trước các thành viên trong nhóm. Tin tưởng những lời phê bình của họ dành cho bản thân mình sẽ giúp mình tiến bộ hơn.
Trong thực tế, hầu như mọi mâu thuẫn trong nhóm đều bắt nguồn từ sự thiếu vắng một trong ba yếu tố : khiêm tốn, tôn trọng và tin tưởng.
2) Vai trò của những thành viên ban đầu trong việc xây dựng văn hóa nhóm
Hãy nghĩ đến quá trình tạo ra bánh mỳ từ lúa mạch. Bạn cần có men và những vi khuẩn sống dựa trên lúa mỳ và nước. Không phải loại vi khuẩn nào cũng đem lại hương vị giống nhau. Người đầu bếp khi bắt đầu chế tạo một loại bánh, phải cân nhắc và điều chỉnh kỹ lưỡng tỉ lệ nước và lúa mỳ để những vi khuẩn ưng ý có thể sinh sôi và phát triển. Ban đầu người đầu bếp sẽ chỉ thử nghiệm trên một lượng nhỏ nguyên liệu. Sau khi tạo ra công thức, người đầu bếp có thể sản xuất hàng loạt những ổ bánh mỳ có chất lượng giống nhau.
Quá trình xây dựng văn hóa cho nhóm làm việc cũng tương tự như vậy. Ban đầu những người sáng lập đề ra những yếu tố văn hóa ban đầu. Nếu văn hóa được tạo dựng ra đủ mạnh, nó có thể hấp thụ được điều tốt đẹp từ văn hóa ngoại lại mà những người mới vào đem đến, đồng thời đào thải những nét văn hóa không thích hợp.
Nếu không có những yếu tố văn hóa nền tảng, hoạt động của nhóm làm việc sẽ dễ dàng bị chi phối bởi những cá nhân có cá tính mạnh. Điều này thường dẫn đến những mâu thuẫn khiến cho nhóm không thể tập trung vào việc tạo ra sản phẩm tốt, làm nhóm mất năng lượng vào những cuộc tranh cãi và bất đồng nội bộ.
Văn hóa của nhóm cũng có tính tự chọn lọc. Nếu những thành viên ban đầu xây dựng được một nền tảng văn hóa dựa trên tinh thần HRT nơi mà các thành viên trong nhóm cư xử tử tế với nhau, đóng góp ý kiến bằng những lời chỉ trích mang tính xây dựng thì sẽ thu hút được những kĩ sư làm việc với tinh thần tôn trọng và tin tưởng. Ngược lại nếu nhóm bắt đầu được xây dựng dựa trên sự hung hăng, bắt nạt và chỉ trích cá nhân, thì sẽ dễ thu hút và tiếp nhận những kĩ sư thích nhảy lên và hét vào mặt người khác.
3) Những hành vi độc hại
Dù không muốn thì vẫn có trường hợp trong nhóm của bạn tồn tại thành viên có cách hành động và cư xử gây tổn hại đến sự phát triển của nhóm. Lúc này hãy chọn cách tiếp cận hợp lý. Hãy hiểu rằng đối tượng bạn cần đối phó ở đây là những hành động gây tổn hại chứ không phải cá nhân nhân viên. Có thể những cư xử xấu đó không bắt nguồn từ sự cố ý của nhân viên mà chỉ do sự thiếu nhận thức và thiếu quan sát của họ gây ra.
Đừng suy nghĩ rằng mình sẽ tạo ra một nhóm gồm toàn những nhân viên xuất sắc, nơi không chấp nhận những người có trình độ yếu kém, hãy nghĩ là mình sẽ xây dựng một môi trường văn hóa tốt, nơi không chấp nhận những hành động thiếu ý thức. Ngay từ khi tạo dựng văn hóa của nhóm từ những thành viên đầu tiên, bạn đã phải xác định rõ những hành động nào là không thể chấp nhận tồn tại trong nhóm của mình.
Ví dụ với một nhóm dựa trên tinh thần HRT thì những hành vi như không tôn trọng thành viên trong nhóm, làm phiền gây mất thời gian của mọi người,… là không thể chấp nhận được: Nếu bạn định xây dựng một nhóm phát triển ổn định và lâu dài thì những hành động đem lại lợi ích trong thời gian ngắn cho nhóm nhưng có nguy cơ tạo ra những mâu thuẫn trong tương lai cũng cần phải loại bỏ ngay lập tức.
4) Những yếu tố của văn hóa nhóm
Văn hóa của một nhóm lập trình viên không chỉ nằm ở cách viết code hay cách các thành viên trong nhóm đối xử với nhau. Nó là tập hợp những kinh nghiệm, giá trị và mục tiêu độc nhất được chia sẽ giữa các thành viên. Những yếu tố tạo ra văn hóa cũng đa dạng. Có nhưng yếu tố liên quan trực tiếp đến công việc như quy trình phát triển phầm mềm nhóm áp dụng, cách thức review code,… có những yếu tố ngoài công việc như các bữa liên hoan hay những buổi đi ăn trưa cùng nhau.
Một số nơi có những nét văn hóa vô cùng độc đáo. Ví dụ như phòng làm việc của Google ở Pittsburgh ngay gần đường ray tàu hỏa, vì thế mỗi lần có tàu chạy qua, tất cả nhân viên đều nhày lên, hò hét và nhém phi tiêu đồ chơi vào mặt nhau.
Trách nhiệm xây dựng văn hóa không chỉ phụ thuộc vào những người lãnh đạo. Mọi thành viên trong nhóm đều có vai trò định nghĩa, duy trì và bảo vệ văn hóa. Khi một thành viên mới gia nhập, họ có thể nhanh chóng hấp thu được văn hóa của nhóm khi quan sát cách mọi người làm việc, tương tác và giải quyết mâu thuẫn.
5) Nhóm đồng thuận (consensus-based team)
Tạo ra phần mềm là việc đòi hỏi nhiều tư duy sáng tạo. Nó không đơn giản đến mức khi một nhân viên nghỉ việc, bạn có thể dễ dàng thay người khác vào ngay mà vẫn đáp ứng được nhu cầu công việc. Muốn tạo ra phần mềm tuyệt với, bạn cần phải có những kỹ sư tuyệt vời. Muốn có những kỹ sư tuyệt vời, bạn cần có môi trường để họ có thể chia sẻ ý tướng và đóng góp ý kiến vào quá trình đưa ra quyết định.
Đương nhiên bạn có thể(giống như vài công ty khác) xây dựng văn hóa quản lý theo hướng top-down, với chỉ một nhóm nhỏ những nhà thiết kế xuất sắc tham gia vào quá trình ra quyết định cho sản phẩm, còn lại là rất nhiều lập trình viên có trình độ trung binh tham gia vào quá trình phát triển. Mô hình như vậy vẫn có thể tạo ra sản phẩm tốt, nhưng không thể nào vui và thú vị bằng khi bạn làm việc ở một môi trường khác gồm toàn những người tuyệt vời, nơi mà ai cũng có thể dạy bảo, thách thức và truyền cảm hứng cho bạn.
Một cách tiếp cận khác, là xây dựng nhóm làm việc dựa trên sự “đồng thuận”(consensus-based team), nghĩa là ngoài những quyết định thông thường hàng ngày, người lãnh đạo phải thực sự biết lắng nghe ý kiến từ các thành viên. Phải có những cuộc họp để mọi người đều được tham gia ý kiến vào quá trình quyết định của sản phẩm. Phải làm sao để tất cả thành viên đều cảm nhận được rõ ràng quyền sở hữu cũng như trách nhiệm của mình đối với thành công của sản phẩm.
6) Lãnh đạo phục vụ (The Servant Leader)
Một phương thức quản lý rất nổi tiếng và được sử dụng rộng rãi là “cây gậy và củ cà rốt”. Theo đó những người quản lý đối xử với nhân viên như cách người chủ xe đối xử với con la của mình. Họ khích lệ nhân viên bằng những lời hứa hẹn (như cách chủ xe treo củ cà rốt trước mặt con la), và khi mọi chuyện không như ý muốn thì họ trừng phạt nhân viên mình (như cách chủ xe quất gậy vào con la).
Đối với những công việc đòi hỏi kỹ năng sáng tạo và giải quyết vấn đề, cách quản lý như thế đã không còn hiệu quả. Những người kỹ sư không cần những lời hứa hẹn và đe dọa, cái họ cần là kiến thức được trau dồi, là thời gian cùng không gian để suy nghĩ và kiến tạo. Khái niệm quản lý như trên trong giới kỹ thuật ngày nay đã trở nên lỗi thời, chúng ta có một khái niệm mới hơn, đó là lãnh đạo phục vụ (servant leader).
Lãnh đạo phục vụ là người có thể tạo ra không khí làm việc với tinh thần khiêm tốn, tôn trọng và tin tưởng. Là người đưa ra những vấn đề mà đội cần phải giải quyết nhưng không quản lý chi tiết(micro-management) nhân viên của mình, để nhân viên được tự do và chủ động tìm ra giải pháp giải quyết vấn đề. Là người biết quan tâm đến nhân viên, giúp nhân viên gỡ bỏ những trở ngại mà một mình người đó không giải quyết được, tìm cách đáp ứng mọi nhu cầu cần thiết của nhân viên.
Muốn xây dựng được một nhóm tốt thì người lãnh đạo không được thỏa hiệp với tiêu chuẩn tuyển dụng. Có những người lãnh đạo chỉ tìm cách thuê những người kém hơn mình để dễ bảo cũng như dễ giữ ghế của mình. Một trường hợp khác là khi có nhu cầu tuyển dụng năm ứng viên, nhóm tiến hành phỏng vấn khoảng 40-50 người, rồi chọn ra năm người tốt nhất trong số đó bất kể trình độ ra sao. Tuyển những ứng viên kém hơn yêu cầu là một trong những cách nhanh nhất hủy hoại chất lượng làm việc của nhóm.
Một người lãnh đạo tốt cũng là một người biết bắt tay vào giải quyết vấn đề ngay khi cần thiết. Có một câu châm ngôn ở Google: “Hi vọng không phải là một giải pháp”. Ví dụ như có một nhân viên có năng suất làm việc kém, hãy ngay lập tức nói chuyện thẳng thắn với anh ta. Tìm hiểu xem có lý do nào khiến anh ta mất đi động lực làm việc hay anh ta đang thiếu một định hướng đúng đắn hơn để phát triển bản thân. Bạn hi vọng các vấn đề đột nhiên tốt lên nhưng thực tế chả có phép màu nào xảy ra. Càng để rắc rối càng lâu thì càng gây cho nhóm của bạn những tổn thương và mâu thuẫn không thể hàn gắn.
7) Nhu cầu của mỗi cá nhân
Nhiều lãnh đạo tìm cách đối xử như nhau với các nhân viên, điều này có thể đem lại sự công bằng nhưng vì nhu cầu của mỗi người là khác nhau, nó có thể dẫn đến tình trạng không ai trong số nhân viên của bạn cảm thấy nhu cầu của mình được đáp ứng đầy đủ.
Một nhân viên thường có hai nhu cầu cơ bản: sự định hướng và động lực làm việc. Nếu như định hướng có thể xác định một cách rõ ràng – bạn muốn gì và cần phải làm gì để đạt được điều đó, thì động lực có phần mơ hồ và phức tạp hơn.
Động lực của mỗi người có thể chia làm hai loại: động lực bên ngoài như tiền bạc, sự thăng tiến và động lực bên trong. Người lãnh đạo có thể nâng cao động lực bên trong của nhân viên bằng cách đem lại cho họ ba thứ:
– Sự tự do: Lãnh đạo chỉ nên đưa ra một định hướng chung và để nhân viên tự quyết định cách thức thực hiện. Nó giúp cho nhân viên cảm thấy gần gũi và gắn bó hơn với các sản phẩm mình góp phần làm ra.
**– Sự thành thạo: **tạo điều kiện cho nhân viên học thêm những kĩ năng mới hay cải thiện những kĩ năng đang có.
**– Ý nghĩa công việc: **Cho nhân viên thấy được ảnh hưởng của những sản phẩm họ làm ra, tác động tích cực của chúng đến công ty, khách hàng và mọi thứ xung quanh.
8) Giải pháp khi ở trong một tổ chức tồi
Xây dựng một nhóm làm việc tốt phụ thuộc vào các thành viên bên trong nó. Nhưng còn các tác động bên ngoài thì sao? Có thể đội của bạn may mắn nằm trong một tổ chức tốt, nơi cho phép nhân viên tiếp nhận thử thách, học hỏi và phát triển nhưng cũng có thể đội của bạn nằm trong một công ty lớn với sự quan liêu đã phát triển từ lâu, nơi có những quản lý tồi tệ, sợ rủi ro, không quan tâm đến nhân viên mà chỉ nghĩ đến lợi ích bản thẩn, kiểm soát nhân viên như những đứa trẻ bằng những tiêu chí nực cười như đếm số dòng code bạn viết ra được trong ngày chả hạn.
Trong tình huống như thế, bạn có thể thử các giải pháp sau:
– Lan truyền ý tưởng: Khi bạn có một ý tưởng hay và muốn công ty thực hiện nó thì có nhất thiết bạn phải lấy công lao cho ý tưởng đó không? Nếu không thì hãy chia sẻ nó cho những người khác. Khi nhiều người lên tiếng từ nhiều góc độ khác nhau, rất có thể cấp trên của bạn sẽ sằn sàng lắng nghe hơn là tiếng nói chỉ từ một mình bản thân bạn.
– Tạo ra con đường mới: Thật khó để bạn có đấu tránh với những thói quen làm việc cũ không hiệu quả đã tồn tại trong công ty. Thay vì chống lại một cách vô vọng, hãy thay thế nó. Ví dụ bạn nhận thấy quá trình báo cáo mà công ty đang làm hiện nay là mất thời gian vô ích – hãy đề xuất một giải pháp tốt hơn thay vì chỉ tìm cách lên án.
– Giúp đỡ người khác: Khi giúp đỡ người khác, không phải tất cả nhưng chắc chắn sẽ có ai đó sẵn sàng giúp đỡ lại bạn. Điều đó sẽ làm công việc của bạn dễ dàng hơn nhiều so với trường hợp bạn không giúp đỡ ai cả và luôn giữ thái độ rằng “đó không phải việc của tôi”. Đặc biệt bạn nên tìm cách quan hệ tốt với những người có quyền lực “ẩn” – những người không có chức vụ chính thức nhưng lại có nhiều ảnh hưởng như những người quen biết rộng, những nhân viên lâu năm hay các trợ lý hành chính.
**– Nâng cao vị thế: **Rõ ràng tiếng nói của bạn sẽ có trọng lượng hơn khi vị thế trong công ty của bạn cao hơn. Thông thường công việc có thể chia làm hai loại :”tấn công” và “phòng thủ”. “Tấn công” là những việc gây được ấn tượng với người bên ngoài như tạo ra chức năng mới, tăng tốc độ sản phẩm trong khi “phòng thủ” là những công việc rất có giá trị nhưng lại khó nhận biết từ bên ngoài như tái cấu trúc lại code, cải thiện bảo mật,… Một đội muốn được đánh giá cao từ bên ngoài thì tối đa chỉ nên dành một nửa thời gian cho những công việc “phòng thủ”.
– Tìm cách thăng tiến: Có thể bạn đang hạnh phúc với công việc, lương bổng và không muốn chơi các “trò chơi chính trị”. Nhưng điều đó cũng có thể đem lại rủi ro như một ngày công ty thay đổi tổ chức và bạn phải chịu sự quản lý của một ông sếp mới tồi tệ chả hạn. Càng có vị trí cao thì bạn càng dễ thay đổi tổ chức theo nguyện vọng bản thân hơn. Vị trí cao cũng đem lại sự an toàn hơn cho sự nghiệp của bạn.
– Làm rồi mới báo cáo: có những vấn đề cần phải thực hiện mà khi bạn xin ý kiến từ cấp trên, câu trả lời chắc chắc là không. Vì thế thay vì xin phép theo nguyên tắc thông thường, hãy cứ làm trước. Nếu kết quả cho thấy tốt đẹp, có thể dễ dàng xin chấp thuận từ cấp trên. Tất nhiên giải pháp này đi kèm rủi ro là kết quả của hành động có thể không tốt như bạn hình dung. Vì thế trước khi làm hãy cân nhắc thật kĩ.
Và cuối cùng là sẵn sàng từ bỏ. Khi một nhân viên giàu thành tích ở Google được hỏi là làm sao để làm việc hiệu quả, ông ý đã trả lời :”Hãy làm việc đúng đắn rồi ngồi chờ bị sa thải. Nếu bạn không bị sa thải nghĩa là việc đúng đắn đó có ích cho mọi người. Nếu bạn bị sa thải, nghĩa là bạn đã ở nhầm chỗ và làm việc với nhầm người, hãy tìm hướng đi mới”.
9) Người dùng
Bạn có một đội xuất sắc, viết ra được những phần mềm tuyệt vời. Điều đó thật tốt đẹp, nhưng chưa đủ. Phần mềm bạn viết ra còn phải thỏa mãn được người dùng nữa. Thông thường khi lập trình viên tạo ra sản phẩm, bạn chỉ quan tâm đến tính logic của chương trình, nhưng cảm xúc của người dùng, đôi khi mới là thứ quyết định họ có mua sản phẩm của bạn hay không.
Ấn tượng của người dùng trong 30 giây hay 1 phút đầu tiên sử dụng sản phẩm của bạn là rất quan trọng. Vì thế hãy đặc biệt chú ý. Dù chương trình của bạn mạnh mẽ và nhiều chức năng, bạn cũng cần phải biết che dấu đi sự phức tạp, tạo ra sự đơn giản và dễ dàng nhất cho người dùng khi họ mới sử dụng lần đầu tiên. Google chính là một ví dụ rất tốt. Bạn có thể tìm kiếm nâng cao với nhiều chức năng khác nhau, nhưng lần đầu tiên sử dụng bạn chỉ cần nhập vào textbox và ấn enter.
Nếu có thể hay tiến hành thực nghiệm, cho những người khác nhau(lập trình viên, thiết kế, người dùng bình thường…) dùng thử sản phẩm của bạn trong thời gian ngắn rồi hỏi lại cảm xúc của họ. Họ có thấy phức tạp, căng thẳng hoặc dễ chịu khi sử dụng sản phẩm của bạn không?
Tạo ra một chức năng tiện lợi cho người dùng có thể mất rất nhiều công sức của lập trình viên nhưng khi tạo ra sản phẩm, bạn phải đặt sự tiện lợi của người dùng lên trên sự tiện lợi của lập trình viên. Bạn cũng cần phải xác định rõ đối tượng khách hàng mà mình cần tập trung phục vụ là ai, bởi không thể nào tạo ra một phần mềm có thế đáp ứng được tất cả nhu cầu khác nhau của người dùng.
Tốc độ cũng là một yếu tố quan trọng và ảnh hưởng lớn đến trải nghiệm của người dùng. Một chương trình có tốc độ nhanh sẽ đem lại cho người dùng sự dễ chịu và thoải mái khi sử dụng. Tưởng tượng trang web của bạn có một triệu người dùng, mỗi ngày gửi 20 request, thì việc tăng tốc lên hơn nửa giây cũng giúp bạn tiết kiệm được hàng ngàn giờ của người dùng!
Giữ quan hệ tốt với người dùng, blogger hay các nhà báo kĩ thuật. Lắng nghe ý kiến người dùng một cách kiên nhẫn và tôn trọng, ngay cả những ý kiến có vẻ ngờ nghệch. Hiểu rằng đôi khi người dùng đang diễn tả không đúng những gì họ mong muốn.
Và phải luôn nhớ rằng mục đích cuối cùng của việc tạo ra phần mềm là để người dùng – chứ không phải lập trình viên – sử dụng một cách tin tưởng và hài lòng.