Dự án chạy trên Ipad

Bài viết được sự cho phép của tác giả Tin Tran

Phát triển ứng dụng mobile hay ipad thời bấy giờ rất đang là thịnh. Người người dùng smart phone nhà nhà dùng ipad. Tụi Nhật họ còn đi trước nước mình khá lâu nên việc phát triển ứng dụng để chạy trên Ipad là bình thường, không có gì để bàn cãi.

  "Dân làm Product khác hoàn toàn 180 độ với dân làm outsourcing"
  10 bước để bắt đầu áp dụng kiểm thử tự động vào dự án

Từ sau khi vào công ty thì tôi đã trải qua hai dự án maintenance, maintenance là gì thì tôi đã giải thích ở phần 5 . Lần đầu tiên tôi được làm một cái dự án mà tạo mới từ đầu, không phải đọc source code của người khác viết nữa. Dự án lần này khách hàng yêu cầu công ty chúng tôi phát triển ứng dụng chạy trên hệ điều hành iOS (Ipad), về công nghệ sử dụng thì khách hàng họ muốn viết bằng jquery mobile, html và css. Lý do sử dụng cái này là vì họ đã có sẵn một hệ thống để build source code ra ứng dụng để chạy trên iOS.

Về javascript, jquery thì tôi khá là gà mờ, chứ đừng nói gì tới jquery mobile. Từ khi đi học đến khi đi làm cũng chỉ đụng sơ sơ, làm vài cái cơ bản, chứ chưa làm chuyên sâu, kinh nghiệm về mảng này chưa có nhiều. Dự án lần này vẫn là anh leader cũ quản lý, hiện tại tôi đang thuộc team này nên các dự án mà anh nhận về thì tôi đều phải chịu sự quản lý anh ấy. Như thường lệ buổi đầu tiên vẫn là kick off dự án, dự án chúng tôi không tính anh leader thì có bốn người, có một anh vào trước tôi sáu tháng và hai đứa đã thử việc xong vừa mới được nhận vào, một đứa nam và một đứa nữ. Anh leader phổ biến về dự án, những thông tin về khách hàng, về công nghệ sử dụng, về các thông tin liên quan khác của dự án. Lần này thì dự án sẽ có thêm một giai đoạn làm mockup màn hình. Có nghĩa là chúng tôi sẽ làm giao diện, chưa có xử lý nghiệp vụ bên trong, sau khi làm xong tất cả màn hình thì sẽ gửi lại cho bên phía Nhật họ xác nhận lại, cần chỉnh sửa gì thì sẽ chỉnh lại theo ý của họ. Sau khi xác nhận xong thì chúng tôi sẽ tiến hành coding nghiệp vụ của màn hình đó. Thiết kế chi tiết thì cũng đã được họ cung cấp sẵn cho chúng tôi, tài liệu thì hoàn toàn bằng tiếng nhật, cũng như những dự án khác thì sẽ có phiên dịch dịch lại sang tiếng việt.

Như đã nói thì bên Nhật họ sẽ cung cấp thiết kế chi tiết màn hình cho chúng tôi, trong thiết kế này họ sẽ mô tả toàn bộ các nghiệp vụ xử lý của các control bên trong màn hình. Nếu các bạn đã học quy trình phát triển phần mềm thì chắc các bạn cũng đã biết một quy trình thì bắt đầu từ việc lấy yêu cầu, thiết kế, code, test. Tuy nhiên tại sao những dự án tôi làm thì toàn bắt đầu từ giai đoạn code, test. Còn việc lấy yêu cầu, thiết kế tại sao lại không có. Vì những dự án đó chúng tôi nhận từ các công ty bên Nhật mà các công ty đó cũng là công ty phần mềm, họ sẽ lấy yêu cầu từ khách hàng (end user) của họ, rồi thiết kế. Sau đó sẽ đưa cho các nước như Việt Nam, Trung Quốc để gia công, do số tiền các nước này so với bên Nhật thì sẽ rẻ hơn. Chúng tôi gọi như vậy là oursource.

Trở lại với dự án thì việc đầu tiên chúng tôi sẽ lên layout cho toàn bộ màn hình, số lượng màn hình cũng gần chục cái. Mỗi người sẽ đảm nhận khoảng hai cái màn hình, trước giờ tôi chỉ code backend, còn frontend ngu lắm, trước kia làm thì toàn những màn hình đơn giản hoặc có những màn hình tương tự thì sẽ copy lại để chỉnh sửa. Lần này thì chúng tôi phải làm giao diện từ đầu nên để hoàn thành một màn hình thì tôi tốn khá nhiều thời gian. Trong team thì có một đứa con gái rất giỏi về khoản làm html, css, làm rất lẹ. Tôi đã từng hỏi nó vì sao lại chọn công nghệ thông tin thì nó trả lời là trước kia có thằng nào nói con gái học công nghệ thông tin ngu lắm, thế là nó theo học để chứng tỏ cho thằng kia biết :)).

Trong thời gian code giao diện cho màn hình thì khách hàng yêu cầu nâng version của jquery mobile, trước đó thì họ đã chỉ định sử dụng một version khác. Các màn hình làm thì đã gần xong hết, việc nâng version lên đã ảnh hưởng đến màn hình tôi đảm nhận, mà màn hình này thì đã làm xong rồi. Sau khi đưa version jquery mobile mới vào thì nó làm bể hết layout. Vì tôi đang sử dụng các class của jquery mobile để làm giao diện cho màn hình, lúc này tôi lại tốn thêm mớ thời gian nữa để sửa lại.

Sau khi làm xong các màn hình thì chúng tôi gửi source code cho bên khách hàng để họ xem, dĩ nhiên là code sẽ được build ra ứng dụng để chạy trên ipad, việc di chuyển giữa các màn hình, hiệu ứng di chuyển này nọ phải trơn tru hết, giao hàng cho khách mà có bug hay chạy không được thì rất là phiền toái.

Trong thời gian phía khách hàng họ xem màn hình mockup thì chúng tôi cũng tiến hành coding cho màn hình, ai đảm nhận code giao diện màn hình nào thì cũng code xử lý nghiệp vụ cho màn hình đó luôn. Ứng dụng này quản lý thông tin của những công trình, khi ứng dụng được chạy trên ipad thì những công trình sẽ được chụp hình lại và gửi về server. Lần này tôi được làm với API, từ trước giờ tôi chưa làm về cái này bao giờ. Về API là gì thì tôi xin giải thích thêm cho những bạn chưa biết, ở đây tôi không định nghĩa về nó mà chỉ nói về cách làm việc cho các bạn dễ hiểu. API thực chất là một web service, nơi mà nhận yêu cầu từ phía client và trả về thông tin mà client muốn lấy thông qua json (đối với restful web service). Ví dụ thực tế với dự án của tôi, khi ứng dụng của tôi chạy, tôi muốn lấy thông tin từ server để hiển thị ra Ipad, thì tôi sẽ xử dụng ajax để gửi một yêu cầu (request) đến một địa chỉ của server, tại server sẽ xử lý yêu cầu và trả về một chuỗi json cho ứng dụng của tôi để hiển thị ra màn hình, cơ chế của nó là như vậy.

Trở lại với màn hình của tôi, một màn hình khi hiển thị thông tin được lấy từ server về thì không phải là có mỗi một yêu cầu (request) mà là sẽ có nhiều yêu cầu(request) lên phía server để lấy dữ liệu về. Màn hình của tôi khi hiển thị ra thì sẽ hiển thị những thông tin trong dropdownlist, thông tin trong table… Việc gửi yêu cầu liên tục như vậy bằng ajax theo cơ chế bất đồng bộ như vậy thì khi một yêu cầu gửi lên server thành công thì lúc này thì mới thực hiện yêu cầu tiếp theo và cứ liên tục lặp lại cho đến khi tất cả các yêu cầu được thực hiện thành công. Sau khi coding xong thì vẫn là anh leader review lại source code, xem có gì phải chỉnh sửa hay không, code thừa, code thiếu, code không logic, code không đẹp. Nói chung khi nào được review thì vẫn phải sửa thôi, lần này tôi mắc một lỗi khá là nghiêm trọng đó là thiết kế có vấn đề mà không phát hiện ra, tới khi anh leader review thì gọi lại hỏi thì mới lòi ra nhiều vấn đề hơn tôi tưởng. Lúc này thì anh leader kêu tôi viết câu hỏi để đi hỏi khách hàng. Đây cũng là lần đầu tôi tự viết, sau khi viết xong thì anh leader cũng sẽ review lại, cảm thấy ổn thì sẽ đưa phiên dịch để dịch và gửi khách hàng. Tuy nhiên, đây là lần đầu tôi viết câu hỏi, như các bạn đã biết phần trước tôi đã nói anh leader quản lý tôi khó, tôi viết câu hỏi về câu cú không đúng ý anh ta, bắt tôi sửa lại cho đúng ý, ok tôi sửa lại, sau đó tôi lại đưa review, lại chưa đúng ý, tiếp tục bắt tôi sửa, sửa đến khi nào đúng ý thì thôi. Tôi sửa đâu bốn, năm lần gì đó. Việc viết câu hỏi đúng là một thảm họa và tốn thời gian kinh khủng, có những lúc không biết ghi như thế nào. Sau khi gửi cho khách hàng thì tùy theo thời gian thì khách hàng sẽ hồi đáp câu hỏi của bạn, có những câu hỏi khách hàng họ trả lời liền, có câu họ ngâm ba bốn ngày mới trả lời, lúc này thì deadline vẫn trôi và màn hình chưa được hoàn thành. May mắn thay là câu hỏi của tôi cũng được trả lời sớm và màn hình cũng được hoàn thành.

Khi toàn bộ coding xong hết thì đến giai đoạn viết testcase, và vẫn cách làm của anh leader như phần 5 tôi đã nói thì tôi vẫn tiếp tục trải qua những ngày tháng OT xuyên màn đêm không có hồi kết. Việc testing ở dự án này có khác một chút với những dự án khác là chúng tôi sẽ test trên Ipad, mà công ty chỉ cho được có một máy Ipad để test mà thôi. Sau khi test xong thì chụp ảnh màn hình kết quả lại sau đó copy vào máy tính và đưa vào file excel để làm bằng chứng. Tuy nhiên ở công ty này rất là bựa, tất cả các cổng USB của máy bàn đều được khóa hết, không thể cắm Ipad vào để chép hình sau khi test vào máy. Muốn mở phải xin phép IT, mà IT chỉ cho mở được có một máy, vì vậy test ở dự án này rất chi là cực khổ.

Và dự án thì cuối cùng cũng đã xong, như những bài trước thì sau khi kể về dự án thì tôi sẽ rút ra những bài học cho các bạn như sau.

1. Không phải thiết kế nào cũng đúng hoàn toàn, việc đọc và lý giải thiết kế rất là quan trọng để dự án của bạn hoàn thiện, tránh sau này khách hàng phải sửa tới sửa lui.
2. Khi bạn đặt câu hỏi thì bạn hãy đặt mình vào người đang được nhận câu hỏi. Chữ viết câu cú, hình ảnh phải đầy đủ, phải làm sao để khách hàng họ hiểu rõ nhất về nội dung mà bạn muốn hỏi. Đôi khi trong đầu bạn hiểu là bạn hỏi gì, tuy nhiên khách hàng họ lại không hiểu bạn muốn nói gì. Về việc tôi bị cho sửa đi sửa lại như vậy đó là việc hỏi không rõ ràng, tránh tình trạng trao đổi qua lại mà không bên nào hiểu nhau.

Các bạn nhớ like fanpage để theo dõi những bài viết mới nhất nhé.

Bài viết gốc được đăng tải tại chickencodes.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev