Phân biệt mô hình các công ty phần mềm

Bữa rồi đi phỏng vấn tuyển dụng cho cty anh bạn, mình ra một câu hỏi: "Em hãy phân biệt mô hình các công ty phần mềm". Một câu hỏi mà mình nghĩ là khá cơ bản, cơ mà 8 trường hợp chỉ có 1 người chỉ ra được, nhưng khá mông lung.


Nếu bạn cũng không thể trả lời được sự khác nhau giữa các cty phần mềm là gì, bài viết này sẽ giúp bạn phân biệt các khái niệm về Solutions, Consulting, Development, Packaged Software, Software Service hay Internet Service, etc. bằng một case study như sau:

Case study: Một khách hàng (KH) có nhu cầu xây dựng một mạng xã hội. KH này không biết cách nào tiếp cận hoặc bắt đầu từ đâu là tốt cho mình.

Vì lý do đó KH nhờ đến một công ty Consulting (cty tư vấn phần mềm) để được tư vấn giải pháp nào phù hợp mà đảm bảo trung lập đứng về phía KH. Giải pháp có thể là:
  1. 1. Xây dựng từ đầu
  1. 2. Dùng một trong platform có sẵn: SE, phpFox, Dolphin, etc.
  1. 3. Dùng hosted solutions như Ning
Rõ ràng, cty consulting phải trung lập và tư vấn KH dựa vào chi phí, thời gian, mục đích để đưa ra tư vấn phù hợp.

Tư vấn có output là điểm mạnh và điểm yếu của từng giải pháp với chi phí ước lượng (có thể). Dựa vào output đó, KH có thể nhận biết giải pháp nào là phù hợp.

Ví dụ, KH chọn giải pháp dùng platform và KH có thể chọn 1 cty có kinh nghiệm về platform đó để phát triển thì công ty này gọi là công ty Development.

Tuy nhiên, KH có thể chọn công ty consulting trên để develop luôn thì cty này vừa làm consulting và cả development.

Vậy công ty phát triển ra platform là công ty Solutions/ giải pháp – có sản phẩm, công nghệ để giải quyết 1 bài toán, vấn đề nào đó. Công ty giải pháp cũng có thể vừa làm customization/development và consulting. 
Ví dụ, Elgg là platform và công ty này có làm luôn customization/development cho khách hàng.
Đặc thù của giải pháp này là có tính deployment và customization theo yêu cầu. Ví dụ, giải pháp ERP, giải pháp CRM, giải pháp HRM, etc.

Như vậy, ít có công ty nào thuần túy một model: Development, Consulting hay Solutions. Tuy nhiên, Consulting và Solutions thì thường có development nhưng development thì hàm lượng consulting thường ít (outsourcing).
  • Ví dụ dễ thấy là các công ty development là các công ty outsourcing , FPT software là 1 cty outsourcing tiêu biểu.
  • Các công ty này nhận bản thiết kế sẵn có, chỉ code theo bản thiết kế và theo đúng chỉ dẫn đến từng variable, function convention, etc.
Cty sản phẩm đóng gói (Packaged Software): Là công ty làm ra sản phẩm cho chính mình và tự bán.Như vậy, loại hình này giống với công ty solutions (giải pháp) là làm ra 1 sản phẩm. Tuy nhiên, sự khác nhau là sản phẩm có tính đóng gói (packaged) hay không.
Ví dụ: Windows là sản phẩm đóng gói và không có tính customization. Packaged Software gắn liền với installation, trong khi Software Solutions gắn liền với deployment (triển khai).
Cty dịch vụ phần mềm (Software Service): Là công ty cung cấp dịch vụ phần mềm, ví dụ, trong case study trên, KH có thể dùng Ning là một dịch vụ phần mềm để tạo ra 1 MXH dạng congty.ning.com và Ning đảm nhận phần host. Một ví dụ khác là dịch vụ online CRM của Salesforce là dạng Sofwarre Service khác với giải pháp CRM triển khai riêng cho KH, ví dụ VTiger là Solutions.

Cty Internet Service: Nếu chúng ta nghe nhạc online từ Zing Mp3 hay NCT thì các công ty cung cấp dịch vụ online này là các công ty Internet Service. Như vậy, đâu là sự khác nhau của cty Internet Sevice và Software Service?
Ở Việt Nam, VNG, VC corp hay NCT là những cty internet lớn và tiêu biểu nhất.
Sự khác nhau ở chỗ: Internet Service thường là B2C còn Software Service thường là B2B. Software service cung cấp dịch vụ để khách hàng vận hành hệ thống, ví dụ: Online CRM, online HRM, online payment, hoặc anti-virus như Bkis chẳng han... etc.

Cty  Apps Provider/ Linh kiện phần mềm (apps, module/add-on/plugin-in):  Ngày nay, có hai đối tượng cung cấp dịch vụ phần mềm, internet phổ biến là Platform providerThird party developer.
  • Platform provider: iOS, Facebook, SocialEngine, phpFox, etc. là các platform có cơ chế để các third party developer phát triển apps, plugin, add-on.
  • Third party developer: phát triển các apps trên các platform và thường port vào các platform cùng loại: Android, iOS, etc.
Mặc dù, Third party developer có vẻ như phụ thuộc vào platform và có giá trị thấp, tuy nhiên chưa hẳn là vậy. Ví dụ Zynga là một Third party developer cực kỳ thành công, hay Angry Bird có giá hàng tỷ USD hoặc Instagram cũng là các apps  trên các social platforms. Các apps có thể port vào các platform nên có lợi thế của nó. Ngay cả 1 platform có down thì tất yếu sẽ có 1 platform khác up và việc port cũng không phải là điều khó khăn.

Bài viết này khá nhiều thuật ngữ, tuy nhiên cũng khá dễ hiểu. Hy vọng sẽ có ích với người nào đó. :)
post-edit

Không có nhận xét nào :

- Không bình luận các vấn đề to lớn như chính trị và tôn giáo
- Nội dung nên liên quan tới bài viết.
- Hãy đóng góp ý kiến của bạn để Blog hoàn thiện hơn.