12 Apr, 2021
Phần mềm e-Commerce
Một người phát triển viết cho tôi: “Em làm việc cho một công ti phát triển phần mềm e-commerce và websites cho vài công ti cỡ trung bình. Chúng em cần làm mọi sự nhanh chóng cho nên “Viết mã và gửi đi” là kĩ thuật duy nhất chúng em dùng. Người quản lí của em nói rằng chúng em không cần kĩ nghệ phần mềm và mọi thứ qui trình mà thầy đã nhắc tới trong website của thầy. Thầy nghĩ sao? Xin thầy lời khuyên.”
Đáp: Có quan niệm sai để coi phần mềm e-commerce và phát triển web là khác với các sản phẩm phần mềm khác. Một số người quản lí khuyến khích người phát triển bỏ qua các kĩ thuật kĩ nghệ phần mềm và nhảy vào thái độ “viết mã trước, sửa nó sau.” Những người quản lí này quan tâm nhiều tới lịch biểu hơn là chất lượng và điều đó là xấu cho kinh doanh của công ti.
Phần mềm e-commerce đầu tiên vẫn là sản phẩm phần mềm có yêu cầu những phẩm chất nào đó bởi vì các yêu cầu duy nhất của nó như hiệu năng cao, lưu thông cao, tin cậy cao cho mọi giao tác; và an ninh dữ liệu là quan trọng nhất. Không tuân theo qui trình, bạn có thể phá hoại các yêu cầu này, điều có thể dẫn tới sản phẩm nhiều rủi ro. Tưởng tượng một website e-commerce trực tuyến chạy rất chậm và khách hàng mất kiên nhẫn thế rồi với một cú bấm chuột họ có thể chuyển sang website khác. Tưởng tượng rằng khách hàng gõ thông tin của họ vào để mua cái gì đó và nó mất hút vì lỗi không biết nào đó; tưởng tượng dữ liệu quan trọng nào đó có thể bị kẻ chọc ngoáy lấy mất vì website không được giữ an ninh tốt.
Thứ hai, phần mềm e-commerce cần được xây dựng và gửi đi nhanh chóng để đáp ứng cho nhu cầu của khách hàng; bất kì vấn đề hay chậm trễ nào đều có thể làm cho khách hàng rất không hài lòng. Bằng việc tuân theo qui trình, có thể đảm bảo sản phẩm chất lượng cao trong lịch biểu và chi phí. Tất nhiên, bạn có thể viết mã nhanh và gửi đi nhanh nhưng điều gì xảy ra nếu có nhiều lỗi? Điều đó nghĩa là phải sửa thêm và điều đó yêu cầu thêm thời gian, điều làm chậm trễ kinh doanh của khách hàng. Một website thường xuyên bị sập bởi lỗi có nghĩa là người phát triển không có kĩ năng, người quản lí đang làm việc kém và điều đó phản ánh vào công ti như được quản lí kém và không đáng tin. Ai sẽ làm kinh doanh với một công ti như vậy?
Thứ ba, bản chất của phần mềm e-commerce là nó bao giờ cũng cần cập nhật và phải dùng được trên các nền tảng khác nhau. Một sản phẩm phần mềm mà không có thiết kế tốt và kiến trúc được xác định tốt thường là ác mộng cho cập nhật và bảo trì. “Viết mã cẩu thả” thường dẫn tới nhiều lỗi hơn mà cần được sửa, điều làm tốn kém thêm và mất thời gian lâu hơn.
Phần mềm e-commerce và phát triển web có thể không cần qui trình vững chắc và kỉ luật mạnh như phần mềm khác nhưng điều đó không có nghĩa là bạn có thể làm nó mà không có qui trình hay không theo cách thức có kỉ luật. Tôi thường khuyến cáo dùng cách tiếp cận agile cho hầu hết các dự án e-commerce và phát triển web vì chúng có thể được đạt tới với ít chi phí và rủi ro. Cách tiếp cận agile như phương pháp Scrum là rất tốt cho kiểu phần mềm này nhưng bạn không thể nói rằng Scrum không có qui trình hay không tuân theo kỉ luật kĩ nghệ phần mềm.
Tôi đã quản lí nhiều dự án e-commerce dùng Scrum, và chúng rất thành công. Tôi không tin vào cách tiếp cận “Viết mã và gửi chúng đi rồi sửa sau” nơi người quản lí thúc người phát triển làm việc cho nhanh rồi hi vọng điều tốt nhất. Tôi nghĩ tất cả chúng ta đều cần phải chắc rằng bất kì cái gì chúng ta xây dựng ra đều phải có chất lượng cao và đáp ứng hay vượt quá mong đợi của khách hàng. Bằng việc có qui trình được xác định tốt và kỉ luật nghiêm, bạn vẫn có thể phát triển bất kì kiểu phần mềm nào trong lịch biểu và chi phí. Dù bạn xây dựng sản phẩm e-commerce hay cái gì đó khác, bạn vẫn phải có các mục đích chất lượng nào đó để đáp ứng. Bạn có thể làm điều đó ngay lần đầu tiên và không lo nghĩ về nó hay bạn có thể chọn làm nó cho nhanh rồi lo nghĩ về sửa lỗi nó về sau. Đó là chọn lựa của bạn.
—-English version—-
e-commerce software
A developer wrote to me: “I work for a company that develops e-commerce software and websites for several medium sized companies. We need to do thing fast so “code and ship” is the only technique that we used. My manager said that we do not need software engineering and all the processes that you mentioned in your website. What do you think? Please advice.
Answer: There is a misconception to treat e-commerce software and web development as different from other software products. Some managers encourage developers to ignore software engineering techniques and jump into the “Code first, fix it later” attitude. These managers are more concern about schedule rather than quality and it is bad for company business.
First e-commerce software is still a software product that requires certain quality because of its unique requirements such as high performance; high traffic; high reliability for all transactions; and most important data security. Without following a process, you may compromise these requirements which may lead to a risky product. Imagine of an online e-commerce website that run very slow and customers are losing patient then with just one click they can switch to another website. Imagine that a customer types in their information to buy something and it gets lost due to some unknown bug; imagine some important data can be stolen by hackers because the website is not well secured.
Second, e-commerce software needs to be built and shipped quickly to meet customers’ demand; any problem or delay could make customers very unhappy. By following a process, it can ensure high quality product within schedule and cost. Of course, you can code fast and ship quickly but what happen if it has a lot of bugs? It means more fixing and it requires more time which delay the business of customers. A website that constantly goes down with errors means developers are unskilled, managers are doing a poor jobs and it reflects on the company as poorly managed and untrustworthy. Who are going to do business with a company like that?
Third, the nature of e-commerce software is it always need update and must be usable in different platforms. A software product without good design and well defined architecture is often a nightmare for update and maintenance. “Sloppy code” often leads to more bugs that needed to be fixed which is costly and takes much longer.
E-commerce software and web development may not need a robust process and strong disciplines as other software but it does not mean you can do it without a process or an undisciplined way. I often recommend using agile approach for most e-commerce and web development projects as they can be achieved with less cost and risk. Agile approach such as Scrum method are very good for this type of software but you cannot say that Scrum does not have a process or does not follow a software engineering discipline.
I have managed many e-commerce projects using Scrum, and they were very successful. I do not believe in the “Code and Ship then Fix later” approach where managers push developers to work fast then hope for the best. I think we all need to make sure that whatever we build must be high quality and meet or exceed customer’s expectation. By having a well defined process and strict discipline, you still can develop any type of software within schedule and cost. Whether you are building e-commerce products or something else, you do have certain quality goals to meet. You can do it right for the first time and not worry about it or you can choose to do it fast then worry about fixing it later. It is your choice.