paint-brush
Cách tôi xây dựng Công cụ tính chi phí phần mềmtừ tác giả@romanlapa
2,562 lượt đọc
2,562 lượt đọc

Cách tôi xây dựng Công cụ tính chi phí phần mềm

từ tác giả Roman Lapa10m2023/04/26
Read on Terminal Reader

dài quá đọc không nổi

Bài viết này trình bày chi tiết kinh nghiệm tạo một máy tính chi phí phát triển phần mềm để tạo ra các ước tính có độ chính xác cao. Đọc để tìm hiểu làm thế nào các giải pháp hoạt động dưới mui xe!
featured image - Cách tôi xây dựng Công cụ tính chi phí phần mềm
Roman Lapa HackerNoon profile picture
0-item
1-item

Với tư cách là CTO của một công ty phát triển phần mềm nhỏ đang xây dựng các giải pháp IoT tùy chỉnh, tôi giúp đồng đội của mình đánh giá chi phí phát triển ứng dụng khi chuẩn bị ước tính dự án cho khách hàng tiềm năng của chúng tôi.


Vì chúng tôi chủ yếu làm việc với các công ty mới thành lập nên khách hàng của chúng tôi rất nhạy cảm về ngân sách của họ.

Lý tưởng nhất là bạn bắt đầu mọi dự án phát triển phần mềm với giai đoạn khám phá và đi sâu vào các yêu cầu chức năng và phi chức năng của sản phẩm ngay từ đầu. Nhờ đó, bạn có thể xác định bộ tính năng của sản phẩm, từ nguyên mẫu chức năng đến MVP đến sản phẩm chính thức và đưa ra ước tính thực tế, chính xác.


Lý tưởng nhất — nhưng đó không phải là trường hợp của các công ty khởi nghiệp hoạt động trong điều kiện khó khăn nhất vì việc khám phá cũng tốn tiền.*


Một số khách hàng của chúng tôi cũng có thể có những kỳ vọng không thực tế về giá của việc phát triển một giải pháp công nghệ. Tất cả chúng ta đều đã nghe những câu chuyện cười về việc các công ty khởi nghiệp đang tìm cách xây dựng một bản sao Facebook với giá 10 nghìn đô la — và điều đáng buồn nhất là, một số người nghĩ rằng điều đó là có thể.


Do đó, tôi đang đùa giỡn với ý tưởng giảm thiểu công việc đánh giá về phía chúng tôi trong khi cung cấp cho khách hàng một mức giá gần như tuyệt đối để đưa ý tưởng công nghệ của họ vào cuộc sống trước khi họ liên hệ với nhóm của tôi. Một kiểm tra thực tế, nếu bạn muốn. 🙂


Đó là cách khái niệm máy tính chi phí phần mềm hình thành trong đầu tôi .


Là một người đam mê công nghệ và là một nhà phát triển di động chuyên nghiệp, tôi quyết định một mũi tên trúng hai đích. Bên cạnh các mục tiêu được đề cập ở trên, tôi cũng đưa kiến thức về Flutter của mình vào bài kiểm tra. Tôi đã phát triển một ứng dụng máy tính chi phí phần mềm đa nền tảng chạy trơn tru trên các thiết bị iOS và Android cũng như trong các trình duyệt mà không cần dùng đến JavaScript, thứ mà ở dạng thuần túy của nó khiến tôi phát điên.


Flutter tỏ ra đủ ổn định và hiệu quả cho nhiệm vụ đó. Tôi thậm chí đang nghĩ đến việc xây dựng một máy tính vật lý dựa trên máy tính một bảng như một món quà Giáng sinh cho những khách hàng trung thành của chúng tôi. Ngoài ra, các nhà phát triển đồng nghiệp có thể sử dụng máy tính để đánh giá chi phí phát triển một giải pháp công nghệ cụ thể (hoặc một phần của giải pháp đó!) ngoài chuyên môn của họ.


Dù sao đi nữa, trong bài viết này, tôi trình bày chi tiết kinh nghiệm của mình khi tạo ra giải pháp và những thách thức mà tôi gặp phải trên đường đi.


Vì vậy, ở đây chúng tôi đi.


Tôi đã thực hiện ý tưởng máy tính chi phí phát triển phần mềm như thế nào

Ok, ok, tôi biết bạn đang nghĩ gì.


*Thiết kế giải pháp phần mềm, dù là một cửa hàng trực tuyến nhỏ hay một cửa hàng hoàn chỉnh hệ thống back-office để sắp xếp các đơn vị áp lạnh , là một con đường dài lộng gió với hàng trăm ngã rẽ và cạm bẫy cần tránh.*


Và trừ khi bạn đã chuẩn bị một tài liệu đặc tả yêu cầu phần mềm (SRS) đầy đủ liệt kê bộ tính năng của sản phẩm, yêu cầu UI/UX, ngăn xếp công nghệ tối ưu, đối tượng mục tiêu, điều khoản tuân thủ và hàng tá vấn đề khác, bạn sẽ không thể đưa ra mức giá cho sản phẩm ứng dụng của bạn.


Đây chính xác là những mối quan tâm của tôi. Vì vậy, tôi quyết định kiểm tra xem các kỹ sư phần mềm khác đã tiếp cận vấn đề về độ chính xác của ước tính trước tôi như thế nào.


Sau khi thử nghiệm nhiều công cụ tính toán chi phí phần mềm, tôi đã chỉ ra một số vấn đề cần nhớ khi tạo giải pháp của mình:


  1. Máy tính của đối thủ cạnh tranh hoàn toàn bỏ qua nhu cầu của người dùng không có kỹ thuật. Ví dụ: làm thế quái nào mà tôi biết được ứng dụng của mình sẽ sử dụng ngôn ngữ lập trình nào nếu tôi mới học lập trình? Để giải quyết vấn đề này, tôi đảm bảo viết hướng dẫn chi tiết về cách sử dụng máy tính của mình trên trang đích đi kèm.


  2. Một số giải pháp ước tính giá của việc thiết lập một nhóm phần mềm hơn là xây dựng một sản phẩm phần mềm. Trừ khi bạn đã từng làm việc với các công ty công nghệ phần mềm trước đây hoặc tự mình điều hành một công ty, bạn có thể không biết những điều cốt lõi của quá trình phát triển phần mềm, bao gồm thành phần tối ưu của nhóm phần mềm và các vai trò trong đó. Đó là lý do tại sao tôi tập trung vào các tính năng của phần mềm hơn là trách nhiệm của nhà phát triển và triển khai công cụ sửa đổi tỷ lệ pha trộn để đơn giản hóa các phép tính.


  3. Hầu hết các máy tính chỉ đưa ra ước tính để đổi lấy địa chỉ email doanh nghiệp. Tôi là một kỹ sư phần mềm, không phải là một nhà tiếp thị. 🙂 Tôi muốn giải quyết vấn đề của các công ty thay vì tấn công họ bằng các email quảng cáo dịch vụ của chúng tôi; nếu họ cần giúp đỡ, dù sao họ cũng sẽ viết thư cho chúng tôi! Đó là lý do tại sao máy tính của tôi không thu thập bất kỳ dữ liệu nào và không yêu cầu bạn điền vào bất kỳ biểu mẫu nào trước khi nhận được ước tính của mình. Chúng tôi chỉ biết rằng ai đó đã đến trang đích của máy tính chi phí phần mềm, đánh dấu vào tất cả các ô và nhận được ước tính.

Máy tính của tôi đánh giá chi phí phát triển phần mềm tùy chỉnh như thế nào

Máy tính của tôi xem xét nền tảng mục tiêu của ứng dụng và các tính năng dự kiến để đưa ra các ước tính chi phí phần mềm chính xác. Tiếp theo, các công cụ sửa đổi khác nhau được triển khai để giảm hoặc tăng giá của phần mềm tùy chỉnh dựa trên giai đoạn dự án và ý nghĩa cụ thể của ngành. Ở bước cuối cùng, các nỗ lực phát triển phần mềm, được ước tính theo số giờ làm việc của con người, được nhân với tỷ lệ hỗn hợp của nhóm CNTT.


Để nghĩ ra cơ chế đánh giá, tôi đã nghiên cứu hơn 20 dự án mà công ty tôi đã hoàn thành và hàng chục dự án từ danh mục đầu tư của các đối tác của chúng tôi. Các dự án này có quy mô và độ phức tạp khác nhau, từ các ứng dụng đặt sự kiện đến các giải pháp nhà thông minh tùy chỉnh. Một số công nghệ và giải pháp, chẳng hạn như trí tuệ nhân tạo và AR/VR, cố tình không có trong máy tính vì tôi hiếm khi xây dựng các ứng dụng như vậy. Do đó, máy tính phản ánh kiến thức chuyên môn cốt lõi của công ty tôi và tôi có thể đảm bảo tính chính xác của các ước tính của nó.


Dưới đây là các yếu tố chi phí chính mà máy tính tính đến:


  • Nền tảng mục tiêu. Một ứng dụng được xây dựng cho một nền tảng cụ thể (iOS, Android, web hoặc giải pháp đa nền tảng dựa trên Flutter ) có một bộ tính năng khả thi tối thiểu, tổng cộng các nỗ lực phát triển phần mềm lên tới X giờ người. Nếu chúng tôi đang xây dựng một giải pháp đa nền tảng, chúng tôi phải nhân số giờ với số lượng nền tảng mục tiêu.


  • Giá tính năng. Mọi tính năng của ứng dụng ví dụ: hồ sơ người dùng cuối hoặc quản trị viên có thẻ thời gian tối thiểu là Y người-giờ. Những nỗ lực tăng tỷ lệ thuận khi bạn thêm các tính năng phụ để nâng cao chức năng của ứng dụng.


  • sửa đổi. Các ngành công nghiệp và tính năng phần mềm có độ khó tăng lên gấp bội. Ví dụ: tôi đã tăng số giờ lên 20% cho các dự án CNTT chăm sóc sức khỏe để giải quyết các vấn đề phát triển có thể xảy ra, chẳng hạn như tích hợp với các hệ thống y tế hiện có, tuân thủ, v.v. đếm. Công cụ sửa đổi hằng số thêm số quản lý dự án và đảm bảo chất lượng vào ước tính. Khi các tính năng của ứng dụng và nền tảng dự định đã được đánh giá, con số này sẽ được nhân với 1,3, tăng tổng số giờ lên 30%. Cuối cùng, có công cụ sửa đổi giai đoạn dự án, đánh giá chi phí phát triển phần mềm dựa trên mức độ sẵn sàng của sản phẩm. Nếu người dùng chỉ muốn thiết kế giao diện của ứng dụng, ước tính cuối cùng được nhân với 0,16. Đối với các nguyên mẫu chức năng, công cụ sửa đổi là 0,25. Phiên bản sản phẩm khả thi tối thiểu (MVP) của một giải pháp phần mềm chứa vừa đủ các tính năng để tung ra thị trường có hệ số sửa đổi là 0,5-0,75. Cuối cùng, những nỗ lực phát triển tính theo giờ của con người được nhân lên 1 đối với các sản phẩm sẵn sàng đưa ra thị trường.


  • Tỷ lệ hàng giờ của nhà phát triển. Giá của việc xây dựng một giải pháp phần mềm tùy chỉnh phụ thuộc vào người tạo ra nó. Mức lương theo giờ của kỹ sư phần mềm rất khác nhau tùy thuộc vào chuyên môn, kinh nghiệm và quốc gia cư trú của một người. Dựa theo một cuộc khảo sát gần đây của Accelerance , các mức giá này có thể dao động từ ít nhất là 25 USD/người/giờ đối với nhà phát triển di động ở Nam Á đến nhiều nhất là 172 USD/giờ (và còn tiếp tục tăng!) đối với kỹ sư phần mềm cấp cao ở Bắc Mỹ. Khi phát triển máy tính chi phí phần mềm của mình, tôi đã lập trình để nhân số giờ cuối cùng với tỷ lệ pha trộn của nhóm dự án phần mềm đóng tại Đông Âu, nơi công ty của tôi hoạt động. Hiện tại, nó dao động khoảng 41,6 đô la mỗi người-giờ.


Dưới đây, bạn sẽ tìm thấy một công thức tổng hợp các yếu tố được đề cập ở trên để đưa ra ước tính:

Để tính toán chi phí phát triển phần mềm tùy chỉnh, máy tính dựa trên Flutter đánh giá một số thông số, bao gồm số lượng nền tảng được hỗ trợ, giai đoạn dự án và độ phức tạp của tính năng phần mềm.



Hãy để tôi viết ra điều này cho bạn:


  1. Nếu một tính năng không liên quan đến thiết bị di động và không yêu cầu triển khai trên nhiều nền tảng, tính năng đó sẽ được đánh dấu là FeaturePrice.


  2. avgFeatureComplexityMult tăng ước tính dựa trên nhóm công nghệ của dự án và ngành mục tiêu.


  3. productStageMultiplier biểu thị giai đoạn mong muốn của sản phẩm — tức là xác nhận thiết kế, nguyên mẫu, MVP hoặc giải pháp sẵn sàng đưa ra thị trường.


  4. Giờ PM/QA là bắt buộc đối với tất cả các dự án trừ khi khách hàng xử lý phần quản lý và đảm bảo chất lượng. Tuy nhiên, trong trường hợp này, không nhà phát triển nào có thể đảm bảo rằng các lỗi sẽ không xuất hiện trong mã. Làm rõ một chút ở đây: một số công ty mong đợi nhà cung cấp của họ tạo ra mã không có lỗi trong lần thử đầu tiên và thực sự thắc mắc tại sao họ cần đảm bảo chất lượng.


    Ngược lại, các khách hàng trưởng thành có kỳ vọng đầy đủ về chất lượng mã kiểm tra và đầu tư sớm vào QA để tránh xử lý các lỗi sau khi ra mắt.


Câu hỏi đặt ra là những ước tính này chính xác đến mức nào?


Xem xét kinh nghiệm của tôi với tư cách là CTO và nhà phát triển Android cấp cao, máy tính chi phí phần mềm cung cấp các ước tính chính xác cho tất cả các dự án đơn giản và dự án có độ phức tạp trung bình.


Đối với những nỗ lực khó khăn hơn liên quan đến các công nghệ tiên tiến, chẳng hạn như Internet of Things, máy tính có thể hạ thấp ước tính cuối cùng xuống 10-13%. Trong những trường hợp như vậy, chúng tôi điều chỉnh lại giá sau khi quyết định bộ tính năng và ngăn xếp công nghệ của giải pháp. Cũng cần phải sửa đổi nếu hệ thống CNTT của bạn kết hợp các tính năng và công nghệ không có trong máy tính, chẳng hạn như trí tuệ nhân tạo và tích hợp với các dịch vụ của bên thứ ba.

Cách ước tính dự án của bạn bằng Máy tính chi phí phần mềm của tôi

Khách truy cập trang web được yêu cầu điền thông tin về các đặc điểm sau của ứng dụng:


  1. Loại giải pháp. Phần này cho phép người dùng chọn một trong sáu danh mục: Internet vạn vật, Thương mại điện tử, Giáo dục, Du lịch, Giáo dục hoặc Khác.
  2. Giai đoạn dự án. Như tôi đã nói với bạn trước đó, công cụ sửa đổi giai đoạn dự án làm tăng hoặc giảm chi phí phát triển phần mềm dựa trên mức độ sẵn sàng của sản phẩm phần mềm. Sự khác biệt giữa các ước tính cho các giai đoạn sản phẩm khác nhau cũng có thể cho khách hàng biết họ có thể phải trả bao nhiêu chi phí để đưa khái niệm của họ đi xa hơn, nâng cao giải pháp sau khi phát hành.
  3. Nền tảng mục tiêu. Phiên bản hiện tại của máy tính cho phép người dùng chọn giữa ngăn xếp công nghệ phát triển ứng dụng di động gốc (iOS, Android), ứng dụng đa nền tảng được xây dựng bằng Flutter cũng như ứng dụng web và máy tính bảng. Tôi đã chỉ ra phiên bản máy tính bảng của ứng dụng dành cho thiết bị di động là một danh mục độc lập do giao diện người dùng có nhiều tùy chỉnh.
  4. Thiết kế UI/UX. Dựa trên độ phức tạp của tài sản thiết kế dự kiến, công cụ sửa đổi UI/UX sẽ thêm một lượng thời gian làm việc nhất định vào ước tính. Tôi đã đưa tính năng Ảnh động vào danh sách dành cho những khách hàng muốn tạo chuyển đổi điều hướng mượt mà giữa các màn hình của ứng dụng trong các nguyên mẫu chức năng. Ước tính sẽ giảm nếu người dùng sẵn sàng cung cấp tài sản thiết kế của riêng họ.
  5. Vai trò của người dùng. Máy tính chi phí phần mềm chứa một phần liệt kê vai trò người dùng dự kiến của ứng dụng. Những phạm vi này từ người dùng cuối đến các giải pháp phần mềm đa cấp phục vụ nhu cầu của nhân viên, người quản lý ứng dụng và khách hàng của công ty.
  6. Các ngôn ngữ được hỗ trợ. Máy tính chi phí phát triển phần mềm sẽ tăng ước tính cho các trang web và ứng dụng đa ngôn ngữ.
  7. Tùy chọn đăng nhập. Ở đây, tôi đã chọn ba cơ chế đăng nhập được sử dụng nhiều nhất — tức là thông qua tài khoản mạng xã hội, địa chỉ email hoặc mật khẩu sử dụng một lần (OTP).
  8. Hỗ trợ khách hàng. Khách hàng tiềm năng có ý định giữ liên lạc với khách hàng của họ có thể chọn một hoặc một số tùy chọn hỗ trợ khách hàng có sẵn, khác nhau về mức độ phức tạp từ biểu mẫu liên hệ đến hệ thống bán vé tích hợp.
  9. Chiến lược kiếm tiền. Trong khối này, người dùng có thể chọn giữa mua một lần và đăng ký — hoặc chọn không tham gia bất kỳ cơ chế kiếm tiền nào.
  10. Các loại nội dung. Tôi đã liệt kê các tệp văn bản, ảnh, video và âm thanh là những loại nội dung phổ biến nhất có sẵn trong các giải pháp phần mềm đồng thời bổ sung khả năng phát trực tuyến dưới dạng một tính năng riêng biệt. Có thể thêm nhiều phương án vào dự toán.
  11. Trò chuyện trực tiếp và cuộc gọi âm thanh/video để hỗ trợ khách hàng. Là một phần của chức năng hỗ trợ khách hàng đã thảo luận trước đó, trò chuyện trực tiếp có thể cho phép nhiều người dùng tham gia cuộc trò chuyện và trao đổi tệp. Chức năng cuộc gọi âm thanh và video được tính phí riêng.
  12. Định vị địa lý. Khi tạo máy tính phần mềm, tôi đã định cấu hình bản đồ bằng ghim và bản đồ có định tuyến làm tùy chọn định vị địa lý chính.
  13. Đặt chỗ sự kiện. Con số ước tính sẽ tăng tùy thuộc vào việc ứng dụng của bạn có hỗ trợ chức năng đăng ký sự kiện hay không và ai có thể thực hiện chức năng đó (ví dụ: quản trị viên hoặc người dùng cuối).
  14. Sự gắn kết của khách hàng. Tôi đã chọn thông báo đẩy và liên kết sâu làm cơ chế chính để thu hút người dùng.
  15. Sự hài lòng và sự hài lòng. Máy tính chỉ cho phép người dùng chọn giữa lượt thích và xếp hạng. Người dùng cũng có thể thêm các tính năng trò chơi hóa như thanh tiến trình và ban lãnh đạo.
  16. Phân tích. Máy tính đề nghị bao gồm các khả năng phân tích cơ bản hoặc nâng cao trong bộ tính năng của ứng dụng. Xin lưu ý rằng chúng ta không nói về các phân tích do AI cung cấp ở đây.
  17. Sự tuân thủ. Nếu một ứng dụng tùy chỉnh cần tuân thủ các quy định nhất định, chẳng hạn như HIPAA, GDPR hoặc PCI/DSS, ước tính của chúng tôi chắc chắn sẽ tăng lên.
  18. Quản lý nội dung. Cuối cùng, máy tính chi phí phần mềm yêu cầu người dùng làm rõ nhu cầu quản lý nội dung của họ, từ khả năng soạn thảo nội dung cơ bản đến một CMS phù hợp và tổ hợp CMS cộng với trực quan hóa dữ liệu.

Tóm tắt nó lên

Hoan hô, chúng tôi đã làm được!


Giờ đây, người dùng đã có ước tính về sân bóng, họ có thể điều chỉnh ước tính đó bằng cách xóa hoặc thêm các tính năng phần mềm theo cách thủ công, chỉ định giai đoạn sản phẩm, v.v.


Trong khi viết bài này, tôi cũng đã điền vào biểu mẫu, chọn các đặc điểm của sản phẩm IoT y tế tùy chỉnh tuân thủ HIPAA sẵn sàng tung ra thị trường. Máy tính đưa ra ước tính cho tôi là 3390,4 người-giờ, hoặc 140.992 đô la nếu nhân với tỷ lệ nhóm hỗn hợp (41,6 đô la).


Hãy tăng ước tính lên 10%, tính đến những khác biệt có thể xảy ra bắt nguồn từ loại dự án ( IoT ) và ngành mục tiêu (chăm sóc sức khỏe) và chúng ta sẽ nhận được 150.000 đô la.


Đây có phải là mức giá thực tế cho giải pháp Internet of Things tùy chỉnh không?


Bộ phần mềm buồng lạnh mà tôi đã tham khảo ở phần đầu của bài viết giúp khách hàng của chúng tôi quản lý các thiết bị lạnh được kết nối được cài đặt tại hàng chục trung tâm thể dục và thẩm mỹ viện trên khắp Hoa Kỳ. Trong khi dự án vẫn đang được phát triển và chi phí hơn 1.000.000 đô la ở dạng hiện tại , hai năm trước, khi giải pháp phần mềm vượt mốc 3.000 giờ làm việc, nó sở hữu chức năng gần giống như dự án tưởng tượng mà tôi đã cố gắng ước tính bằng máy tính.


Nhìn chung, tôi hài lòng với kết quả: Tôi đã thử nghiệm thành công Flutter, tự trấn an bản thân về khả năng phát triển đa nền tảng mạnh mẽ của nó, giảm thiểu công việc đánh giá từ phía nhóm của tôi và cho phép khách hàng tiềm năng của chúng tôi có được ước tính thực tế về các dự án phần mềm của họ trước đó tiếp cận với một công ty kỹ thuật phần mềm.


Nhưng vì tôi có thể có đủ loại thành kiến - sau tất cả, chính tôi là người đã viết mã! — Tôi khuyến khích bạn dùng thử máy tính và chia sẻ suy nghĩ của bạn về chức năng và độ chính xác của nó!


Vì vậy, hãy nhấn vào phần bình luận bên dưới! Phản hồi của bạn được rất nhiều đánh giá cao!