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.
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:
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.
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.
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 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ó.
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
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:
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.
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.
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.
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.
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:
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.
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à
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!