5

Giới thiệu

Đó không phải là tất cả những năm kinh nghiệm mà một nhà phát triển phần mềm có, mà là tư duy của họ, những kỹ năng họ phát triển và kiến ​​thức tích lũy được trong suốt quá trình đó. Rõ ràng, các nhà phát triển cấp cao sở hữu nhiều kỹ năng viết mã và kiến ​​thức tốt hơn nhiều so với các nhà phát triển cấp dưới và cấp trung, nhưng ngay cả những người cấp dưới thiếu kinh nghiệm nhất đôi khi cũng có thể cung cấp dự án phát triển phần mềm của bạn với thứ mà một cấp cao sẽ không thể làm được.

Một trong những khoảng cách về kỹ năng và kiến ​​thức lớn nhất giữa các nhà phát triển cấp dưới và cấp cao đến từ cách họ tiếp cận việc viết mã của mình. Một nhà phát triển cấp cao viết mã đơn giản, dễ hiểu với khả năng bảo trì và khả năng mở rộng. Họ nghĩ về tác động lâu dài của mã của họ đối với sự phát triển hơn nữa của phần mềm của bạn và những người sẽ phải làm việc với nó. Mặt khác, các nhà phát triển nhỏ tuổi chỉ muốn làm cho mã hoạt động. Mã của họ thường quá phức tạp do thiếu hiểu biết về bức tranh toàn cảnh đằng sau dự án.

Một sự khác biệt đáng kể khác giữa các nhà phát triển cấp dưới, cấp trung và cấp cao là những sai lầm mà họ mắc phải. Các nhà phát triển cấp cao và cấp trung đã trải qua toàn bộ chu trình phát triển phần mềm nhiều lần và có lẽ đã mắc rất nhiều lỗi mà họ rút ra được và sẽ không bao giờ lặp lại nữa. Đồng thời, đàn em chỉ đang bắt đầu hành trình thử và sai. Như vậy, họ rất dễ để xảy ra sơ suất chỗ này chỗ kia.

Nói chung, các nhà phát triển cơ sở được giao những nhiệm vụ đơn giản nhất, ít tác động nhất. Các nhà phát triển cấp trung thực hiện các nhiệm vụ có độ phức tạp khác nhau và ít bị giám sát hơn. Và, các chuyên gia cao cấp, ngoài việc hoàn thành các nhiệm vụ phức tạp nhất, còn có thể tham gia thiết kế kiến ​​trúc cho dự án hoặc tham gia vào quá trình ra quyết định cấp cao. Họ cảm thấy thoải mái trong bất kỳ hoạt động quản lý dự án nào, không ngại làm việc trong nhiều môi trường khác nhau và biết cách đặt câu hỏi phù hợp và cách theo dõi thông tin họ nhận được. Đó là lý do tại sao tại QArea, chúng tôi chỉ định một nhà phát triển cấp cao cho từng chuyên gia cấp dưới và cấp trung để cố vấn cho họ và giúp họ thành công với các nhiệm vụ đầy thử thách.

Tuy nhiên, có một đặc điểm quan trọng, một chuyên gia cấp dưới có thể đề nghị một nhà phát triển cấp cao có kinh nghiệm tự tin vào kỹ năng của họ — sự tò mò muốn học những điều mới. Các nhà phát triển mới tập trung mạnh vào việc học hỏi, thử nghiệm và trau dồi kỹ năng của họ. Họ có động lực và thái độ tích cực thúc đẩy sự sáng tạo của họ và có thể cung cấp cho dự án của bạn nhiều ý tưởng và giải pháp mới, thú vị, độc đáo.

Có thể nói rằng lựa chọn tốt nhất cho dự án phát triển phần mềm của bạn là thuê cả các nhà phát triển có kinh nghiệm (cấp cao và cấp trung) và các chuyên gia mới, cấp dưới. Một nhóm đa dạng như vậy sẽ bổ sung một cách hiệu quả tư duy, kỹ năng và kiến ​​thức cho nhau.

Trưởng nhóm

Hiếm khi là một phần của nhóm phát triển nhỏ, vai trò này rất phổ biến trong các dự án quy mô vừa và lớn, nơi các nhà phát triển phần mềm được chia thành các nhóm để đạt hiệu quả cao hơn trong nhóm. Trong những trường hợp như vậy, trưởng nhóm thường là một kỹ sư cấp cao chịu trách nhiệm về một số lượng nhỏ các nhà phát triển. Họ có hiểu biết tổng thể về các mục tiêu sản phẩm, các khía cạnh kỹ thuật và logic kinh doanh và đóng vai trò là người cố vấn, hướng dẫn nhóm của họ. Chúng đảm bảo sự phối hợp tốt hơn giữa các thành viên trong nhóm cá nhân và các nhiệm vụ được thực hiện tương ứng. 

Trưởng nhóm thực hiện các hướng dẫn và báo cáo cho người quản lý giao hàng hoặc người quản lý dự án. Trách nhiệm của trưởng nhóm có thể bao gồm:

  • xem xét mã và đưa ra phản hồi trung thực
  • huấn luyện các thành viên trong nhóm về việc mang lại kết quả và khuyến khích sự phát triển nghề nghiệp của họ
  • tạo điều kiện cho các sáng kiến ​​chạy nước rút hàng ngày và loại bỏ các yếu tố cản trở ảnh hưởng đến tiến độ dự án
  • bảo vệ các thành viên trong nhóm khỏi bị sao nhãng và bất kỳ sự can thiệp nào từ bên ngoài

Triển khai và Bảo trì

Khách hàng tiềm năng QA

Điều này chủ yếu phụ thuộc vào mức độ phức tạp của dự án và ngân sách của bạn eo hẹp đến mức nào, nhưng việc tham gia sớm vào chuyên gia QA như một phần của quy trình chắc chắn sẽ giúp duy trì chất lượng giải pháp phần mềm của bạn ở mức cao trong thời gian dài. Mặc dù chúng thực sự không nên, rất nhiều dự án ngày nay dựa vào các lập trình viên để thực hiện kiểm tra trong quá trình phát triển. Điều này chủ yếu là do hạn chế về ngân sách. Tuy nhiên, một số người thực sự tin rằng QA sẽ chỉ làm chậm quá trình phân phối và để nó tồn tại cuối cùng. Họ sai.

Những gì họ không hiểu là đảm bảo chất lượng và kiểm tra đòi hỏi một bộ kỹ năng hoàn toàn khác với sự phát triển. Các nhà phát triển không chỉ có nguy cơ thất bại thời hạn và mất tập trung vào việc phát triển dự án khi kiểm thử mà còn không thể xây dựng kế hoạch kiểm thử thích hợp hoặc duy trì các trường hợp kiểm thử cần thiết để đảm bảo chất lượng của sản phẩm đang phát triển. Đây là những gì làm cho vai trò của QA lãnh đạo và đội quân thử nghiệm trung thành của họ trở nên quan trọng.

Trưởng nhóm QA chịu trách nhiệm giám sát đội ngũ kỹ sư đảm bảo chất lượng và kiểm soát các quy trình kiểm thử phần mềm trong dự án. Họ chịu trách nhiệm về chiến lược thử nghiệm, lập kế hoạch nguồn lực, giao tiếp với nhóm nội bộ, ước tính quy trình thử nghiệm và kiểm soát chất lượng của dự án. Cùng với người quản lý giao hàng và người quản lý dự án, họ duy trì giao tiếp trực tiếp với khách hàng.

Danh sách các trách nhiệm chính của QA bao gồm:

  • thiết lập các mục tiêu và mục tiêu QA, thiết lập và giám sát các quy trình QA bằng cách sử dụng các phương pháp hay nhất trong ngành
  • xác định các tiêu chuẩn chất lượng, số liệu và các mốc quan trọng cho dự án, đảm bảo chúng được xem xét và thống nhất
  • đóng vai trò là đầu mối liên hệ chính cho tất cả các khía cạnh QA bên trong và bên ngoài của dự án
  • gửi báo cáo trạng thái về tất cả các báo cáo liên quan đến QA và thử nghiệm cho cấp quản lý cao hơn
  • kiểm soát rủi ro và tạo kế hoạch dự phòng
  • cộng tác với nhóm phát triển để đảm bảo khả năng kiểm tra phần mềm
  • đo lường hiệu suất của từng thành viên trong nhóm

Các sản phẩm chính mà bạn nhận được từ nhóm đảm bảo chất lượng của mình là:

  • Chiến lược thử nghiệm đóng vai trò là phác thảo của cách tiếp cận thử nghiệm, các nguyên tắc hướng dẫn cho thiết kế thử nghiệm và cách tiếp cận có hệ thống đối với các quy trình
  • Kế hoạch kiểm thử và ước tính ghi lại phạm vi, tiến trình và phương pháp cho các mục tiêu kiểm thử phần mềm trong dự án
  • Các tình huống và trường hợp kiểm tra bao gồm các bước kiểm tra, dữ liệu kiểm tra và tập hợp các hành động cần thiết để xác minh chất lượng của các tính năng riêng biệt và giải pháp phần mềm của bạn nói chung
  • Báo cáo lỗi chứa thông tin chi tiết về lỗi, lỗi, kết quả đầu ra không mong muốn và những thứ khác được tìm thấy trong phần mềm của bạn không hoạt động bình thường

Kỹ sư QA thủ công

Là một phần của nhóm QA, những người kiểm tra thủ công đảm bảo rằng giải pháp phần mềm của bạn không có lỗi và lỗi và đáp ứng tất cả các yêu cầu kỹ thuật và kinh doanh. Họ sử dụng các công cụ quản lý kiểm tra và theo dõi lỗi khác nhau như Jira, ReQtest và LoadRunner để khám phá mã của bạn, kiểm tra các giao diện của bạn và báo cáo về bất kỳ vấn đề nào ảnh hưởng đến hiệu suất, khả năng sử dụng, khả năng tương thích, cấu hình, bảo mật và nhiều khía cạnh chất lượng khác của phần mềm của bạn. 

Các kỹ sư QA viết tài liệu thử nghiệm, tạo các trường hợp thử nghiệm, đánh giá chất lượng cơ sở mã của bạn và xác định các nút thắt phát triển để giúp thiết lập các phương pháp phát triển tốt nhất cho dự án của bạn. Về lâu dài, việc thuê kỹ sư QA giúp bạn tránh được nhiều rắc rối như nợ công nghệ và làm lại không cần thiết.

Kỹ sư tự động hóa QA

Trong khi người kiểm tra thủ công chủ yếu tập trung vào việc đánh giá chất lượng của các tính năng mới được xây dựng và xác minh các yếu tố đòi hỏi sự đánh giá của con người, công việc của kỹ sư tự động hóa QA là đảm bảo những mã và chức năng mới này không phá vỡ bất kỳ điều gì trong các tính năng đã triển khai trước đó. Một kỹ sư tự động hóa QA áp dụng các công cụ và kỹ năng lập trình mạnh mẽ của họ như Selenium, Appium hoặc TestComplete để viết các tập lệnh khác nhau chạy trong nền, liên tục kiểm tra mã của bạn để tìm lỗi và lỗi. Họ tạo ra toàn bộ môi trường tự động hóa cho các thử nghiệm lặp lại.

Cho dù do sự lặp đi lặp lại tẻ nhạt hay quá phức tạp, một số loại kiểm tra đơn giản là không đáng để bạn tham gia vào tài nguyên kiểm tra thủ công. Sẽ nhanh hơn, đáng tin cậy hơn và tiết kiệm chi phí hơn rất nhiều nếu tự động hóa các quy trình QA này và tiết kiệm các trình kiểm tra thủ công của bạn cho các nhiệm vụ đòi hỏi sự chú ý của con người. Các ứng cử viên tốt nhất cho tự động hóa là các bài kiểm tra đơn vị, hồi quy, hiệu suất, khói và tích hợp.

Kỹ sư DevOps

Đúng như tên gọi, các kỹ sư DevOps của bạn đóng vai trò là một nhóm đa chức năng chịu trách nhiệm hỗ trợ việc phát triểnvận hành giải pháp phần mềm của bạn thông qua các công cụ, môi trường và thực tiễn Agile khác nhau.  

“Khi một khách hàng đến với chúng tôi với một dự án mà chúng tôi nghĩ rằng sẽ mất hơn 6 tháng để thực hiện, chúng tôi luôn đề xuất thiết lập một đường dẫn CI / CD và thuê một kỹ sư DevOps để đảm bảo khả năng mở rộng, tần suất phát hành và bảo trì tiết kiệm chi phí của họ dự án."

Bruce Mason, Giám đốc Giao hàng tại QArea

Kỹ sư DevOps chịu trách nhiệm quản lý các công cụ, môi trường phát triển và thử nghiệm, giải quyết các vấn đề về cơ sở hạ tầng và củng cố các quy trình phát triển tốt — thực hiện các tiêu chuẩn và thực tiễn CI / CD, tự động hóa hệ thống, kiểm soát phiên bản, v.v. Họ có thể phát hiện kiến ​​trúc, cơ sở hạ tầng và phát triển xử lý các khiếm khuyết trong dự án của bạn và đề xuất các giải pháp để loại bỏ hoặc tối ưu hóa chúng.

Bạn có thể nghĩ DevOps như một dòng ngân sách không cần thiết, nhưng thực tế là giải pháp dài hạn này giúp bạn không bị bội chi trong tương lai. DevOps cho phép bạn cải thiện tính ổn định của môi trường hoạt động, cập nhật giải pháp và cung cấp các tính năng mới nhanh hơn, đồng thời dễ dàng mở rộng cơ sở hạ tầng của bạn lên và xuống tùy theo nhu cầu của bạn.

Các vai trò phát triển phần mềm bổ sung có thể được thuê ngoài

Giám đốc Công nghệ

Trong khi các vai trò nói trên và các trách nhiệm tương ứng của chúng về cơ bản giúp bạn xây dựng sản phẩm hoặc dịch vụ phần mềm cụ thể mà bạn yêu cầu, thì một CTO đóng vai trò là người có tầm nhìn kỹ thuật cho toàn bộ doanh nghiệp của bạn. Họ cần phải thông thạo cả công nghệ và có sự nhạy bén trong kinh doanh để xây dựng các chiến lược hiệu quả và cung cấp khả năng lãnh đạo kỹ thuật tốt trong tất cả các khía cạnh của doanh nghiệp bạn.

CTO tham gia các cuộc họp phát triển kinh doanh. Họ hợp tác chặt chẽ với các bên liên quan, nhà phân tích kinh doanh và kiến ​​trúc sư phần mềm để khám phá và triển khai các công nghệ mới, phân tích các giải pháp sản phẩm hoặc dịch vụ sáng tạo, đồng thời thông báo cho các cải tiến / điều chỉnh công nghệ cần thiết phù hợp hoàn hảo với mục tiêu kinh doanh của công ty. Họ đánh giá hiệu suất công nghệ của doanh nghiệp của bạn, theo dõi KPI, kiểm soát ngân sách CNTT và giám sát các nhóm kỹ thuật để đảm bảo hiệu quả kinh doanh thông qua việc sử dụng công nghệ.

Có một CTO giàu kinh nghiệm, thành thạo đặc biệt quan trọng đối với các công ty khởi nghiệp, công nghệ và SaaS trẻ tuổi muốn mang lại lợi thế cạnh tranh. Chà… ai không? Đúng? Tuy nhiên, liệu một vai trò quan trọng như vậy có nên được thuê ngoài hay không là một câu hỏi gây tranh cãi.

Lập luận chính ủng hộ CTO gia công phần mềm là khá rõ ràng — kinh nghiệm và thành tích đã được chứng minh. Tất nhiên, nếu bạn là một công ty khởi nghiệp ở giai đoạn đầu với một nhóm nhỏ, bạn có thể giao vai trò này cho một nhà phát triển phần mềm ít nhiều kinh nghiệm và đầy tham vọng trong dự án của bạn. Nhưng liệu nền tảng kỹ thuật và kiến ​​thức kinh doanh của họ có đủ để cung cấp cho doanh nghiệp non trẻ của bạn một định hướng công nghệ rõ ràng? Các lợi thế thuê ngoài vai trò CTO ít rõ ràng hơn là tính linh hoạt và chi phí. Đối với các công ty chỉ cần một sự thúc đẩy tạm thời hoặc không đủ khả năng để thuê một CTO nội bộ, thuê ngoài có thể là cách phù hợp để đi.

Tuy nhiên, một số người tranh luận rằng có quá nhiều trách nhiệm và rủi ro liên quan đến vai trò CTO để lấp đầy nó bằng việc thuê bên ngoài. Và mặc dù cam kết và lòng trung thành là những yếu tố thực sự quan trọng cần xem xét khi thuê một CTO, nhưng liệu họ có mang lại kết quả như mong đợi hay không không liên quan gì đến cách bạn tương tác với họ. Tất cả phụ thuộc vào nhà cung cấp bạn chọn cho công việc và sự chú ý của bạn đến kinh nghiệm và thành tích trong quá khứ của ứng viên được đề nghị.

Một CTO có thể được thuê ở bất kỳ giai đoạn phát triển dự án nào của bạn. Nhưng tốt hơn hết là bạn nên tham gia sớm để bạn có thể phân tích các công nghệ trên thị trường và tìm cơ hội mới trước khi tham gia sâu vào giai đoạn phân phối.

Giám đốc Thông tin

Nói một cách đơn giản, điểm khác biệt lớn nhất giữa CTO và CIO là người này sử dụng công nghệ với trọng tâm là cải thiện quy trình kinh doanh và xây dựng môi trường CNTT lành mạnh trong tổ chức hơn là thúc đẩy đổi mới công nghệ và tăng trưởng kinh doanh. Bạn sẽ không thấy một CIO xây dựng các sản phẩm và dịch vụ mới để cung cấp cho tổ chức những lợi thế cạnh tranh. Nhưng bạn có thể chắc chắn rằng họ sẽ giải quyết xuất sắc các nhu cầu, mục tiêu và mục tiêu riêng của công ty thông qua các dự án tích hợp công nghệ và di chuyển dữ liệu.

Các CIO thường được thuê bởi các công ty thay vì tách rời khỏi lĩnh vực phát triển phần mềm. Những doanh nghiệp này không kinh doanh các sản phẩm hoặc dịch vụ phần mềm, họ cũng không cần một người chịu trách nhiệm xây dựng những thứ đó. Những gì họ đang tìm kiếm là một người có thể giúp họ đơn giản hóa quy trình làm việc, tối ưu hóa việc quản lý chuỗi cung ứng và cải thiện hiệu quả tổng thể của các hoạt động bên trong và bên ngoài của họ.

Trong khi CTO outsourcing là một chủ đề khá phức tạp, bạn không bao giờ có thể sai lầm với các dịch vụ CIO thuê ngoài. Đây là một lựa chọn rất hiệu quả về chi phí và linh hoạt cho các tổ chức không muốn xây dựng và duy trì đội ngũ CNTT nội bộ của riêng họ. 

Dưới hình thức nhà tư vấn hoặc đối tác chiến lược toàn diện của công ty, nhà cung cấp đáng tin cậy của bạn có thể cung cấp cho bạn một chuyên gia giàu kinh nghiệm, những người: 

  • đánh giá môi trường CNTT và quy trình kinh doanh của bạn
  • lập kế hoạch triển khai công nghệ và hệ thống để cải thiện hoạt động và mục tiêu kinh doanh của bạn
  • xem dự án đến khi hoàn thành, theo dõi các thay đổi và đề xuất hành động khi cần thiết

Giám đốc sản xuất

Người quản lý sản phẩm, còn được gọi là  chủ sở hữu sản phẩm trong Scrum, là người chịu trách nhiệm về lý do tại sao, khi nào và sản phẩm hoặc dịch vụ nào mà nhóm phát triển phần mềm của bạn phải xây dựng. Chịu trách nhiệm trực tiếp về chất lượng và sự thành công của sản phẩm, họ là người ra quyết định chính bằng cách sử dụng kiến ​​thức của họ về nhu cầu của người dùng và mục tiêu kinh doanh để xác định các vấn đề, thiết lập các ưu tiên và hướng dẫn quá trình phát triển sản phẩm từ khi hình thành ý tưởng và đến khi ra mắt. Vì vậy, những gì một người quản lý sản phẩm chính xác làm gì?

Vai trò chính của giám đốc sản phẩm trong dự án là cung cấp khả năng lãnh đạo đa chức năng, cung cấp thông tin cải tiến liên tục dựa trên phản hồi của các bên liên quan và đưa ra các quyết định về sản phẩm trung tâm như: 

  • đặt ra một tầm nhìn và chiến lược sản phẩm mạnh mẽ
  • điều phối quá trình phát triển và truyền đạt ý tưởng
  • chuyển các mục tiêu dự án thành các yêu cầu ngắn gọn và rõ ràng
  • thiết lập lộ trình và xác định các tính năng

“Giám đốc Sản phẩm có thể bổ sung vào thành phần của nhóm quyết định những gì cần xây dựng và liên tục theo dõi cả thị trường và những gì được xây dựng. Đó là một vai trò quan trọng đối với sự thành công chung của một dự án kinh doanh vì điều quan trọng là cả việc tìm ra hướng đi đúng và liên tục điều chỉnh dựa trên những gì khách hàng nói, các sự kiện thị trường, tính khả thi về kỹ thuật và chiến lược của công ty. ”

Alex Gostev, Huấn luyện viên Agile tại QArea

Thật sự khó tưởng tượng một công ty không có giám đốc sản phẩm. Ngay cả trong những công ty khởi nghiệp nhỏ nhất, vai trò chiến lược quan trọng này vẫn được bao phủ bởi một nhà phân tích kinh doanh hoặc một CTO. Và mặc dù nhà cung cấp của bạn chắc chắn sẽ có thể cung cấp cho bạn người quản lý sản phẩm hoặc ít nhất là người ủy quyền dưới dạng nhà phân tích kinh doanh, kịch bản lý tưởng là người quản lý sản phẩm luôn được khách hàng cung cấp. Điều này chủ yếu là do vai trò này đòi hỏi sự rộng rãi, thậm chí có thể nói thân mật, kiến ​​thức về công ty, quy trình kinh doanh và kế hoạch, mục tiêu và mục tiêu tương lai, đối tác và khách hàng của bạn. Ai biết tất cả những điều này tốt hơn nếu không phải là chính chủ doanh nghiệp?

|