Dự án đầu tiên – Ngôn ngữ Delphi

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

Trong bài viết tôi có sử dụng một số thuật ngữ chuyên ngành, có thể những bạn sinh viên không biết về những thuật ngữ này, những ai mà không biết thì hãy để lại bình luận để tôi giải thích thêm nhé.

Sau khi được nhận vào chính thức thì tôi ngồi chơi khoảng một tuần thì được join vào dự án mới, đây là dự án đầu tiên của tôi. Có phải các bạn đang thắc mắc tại sao các phần trước tôi nói rằng tôi học chủ yếu là java, đi thử việc cũng là java nhưng tiêu đề lại ghi là ngôn ngữ delphi. Đúng như các bạn nghĩ, tôi đã tham gia vào dự án được viết bằng ngôn ngữ delphi. Cuốc sống không phải lúc nào cũng màu hồng, đôi khi bạn tính không bằng công ty tính, cứ tưởng vào sẽ được làm dự án về java, ai ngờ.

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

  CSS Box Model - Các cách hiển thị element với thuộc tính display
  10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java

Delphi là một ngôn ngữ phát triển dựa trên pascal và mở rộng hướng đối tượng và được sử dụng để tạo ra các phần mềm cho windown, linux, MAC, android, iOS và đây cũng là lần đâu tiên tôi biết về nó.

Đây là một dự án đã lâu năm về trước, đã được phát triển bởi một công ty nào đó mà tôi cũng không biết, dự án phát triển để chạy trên window, nó tương tự như phần mềm viết bằng c#, còn ở đây nó viết bằng delphi. Công việc của team chúng tôi đó là convert project từ delphi 6 lên delphi XE4. Các bạn có thể hiểu đơn giản đó là việc nâng cấp từ version nhỏ lên version cao. Nếu các bạn biết về c# thì cũng tương tự convert từ winform lên WPF.

Tôi được vào team của một chị senior quản lý, dự án gồm chị và hai ông anh, một ông làm một năm rưỡi và một ông làm tầm một năm và tôi thằng có số năm kinh nghiệm là zero. Tôi bắt đầu làm quen với mọi người, cái anh ngồi gần tôi khá là khó bắt chuyện, tôi hỏi han đủ thứ các kiểu như tên, tuổi, làm ở đây lâu chưa. Lý do vì sao tôi phải làm như vậy, đó là tôi mới vào làm nên nhiều thứ còn chưa biết, phải làm quen để sau này có gì khó còn hỏi chứ. Cái này cũng rất quan trọng là mọi người. Cái anh này sau này lại thân với tôi, cực kỳ vui tính, luôn chỉ cho tôi những gì mà tôi hỏi.

Quay trở lại với dự án để không bị lạc trôi, như thường lệ của những dự án khác, buổi đầu tiên luôn gọi là kick off dự án. Ở đây kick off mang ý nghĩa là bắt đầu một dự án mới, các anh chị quản lý sẽ giới thiệu về dự án, các thành viên, độ dài của dự án khoảng bao lâu, khách hàng là ai. Còn vấn đề số tiền của dự án thu được thì là bí mật của công ty, chỉ có leader trở lên mới biết về vấn đề này. Trở lại với vấn đề chính của dự án, trước đây không lâu đã có một dự án tương tự như cái mà tôi đang làm, nhớ không nhầm cũng là của khách hàng này luôn. Cách convert đã có, mọi tài liệu của dự án cũ đều được lưu giữ lại cẩn thận.

Sau khi họp xong thì chúng tôi bắt đầu làm dự án, schedule thì được chị quản lý lên cho mọi người. Schedule là lịch trình được sắp xếp sẵn, ví dụ như ngày hôm nay sẽ làm công việc A, mai sẽ làm công việc B. Việc lên schedule là của quản lý, còn việc tuân thủ đúng thời gian của schedule là công việc của bạn. Tôi được giao màn hình mà các anh chị trong đó nói là màn hình khó nhất, số tôi rất nhọ, khi đi làm lúc nào cũng được giao cái khó nhất. Ok thôi, đã đi làm thì giao cái nào thì quất cái đó, những dự án sau tôi sẽ kể các bạn nghe tôi làm fail dự án như thế nào vì giao cho tôi những cái quá khả năng. haha.

Mọi tài liệu, source code của dự án đều được lưu trữ trên SVN, là server nội bộ của công ty, tôi phải học cách sử dụng nó. Những bạn nào chưa biết về cái này thì nên học cách sử dụng. Một là SVN, thứ hai là GIT. Học cả hai cái này thì càng tốt, tùy công ty họ sẽ sử dụng cái nào. Tôi tiến hành checkout source code về máy, cài đặt môi trường, tool để chạy source code.

Vấn đề đầu tiên khi tôi gặp phải khi chạy ứng dụng lên để xem thử màn hình tôi làm nó trông như thế nào là không lên được màn hình =)). Tôi bị bí chỗ này luôn, đối với một gà mờ như tôi thì việc nghiên cứu framework thì được, chứ chuyển sang một ngôn ngữ mới thì khá là chua. Một lúc sau chạy mãi không được, tôi bắt đầu lân la đi hỏi cái anh ngồi cạnh, tôi gọi là anh B và tiến hành debug cho tôi, lúc này tôi vẫn chưa biết debug là gì nhé. Tôi thấy anh ấy bấm bấm cái gì đó hiện ra hình tròn tròn, rồi khi chạy chương trình lên thì nó tô màu một dòng code, sau đó nhấn phím để nó chạy qua từng dòng code. Sau đó tôi mới biết đây là debug, tôi thấy được sự lợi hại của nó mang lại, cái này ở trường tôi thì họ không dạy, tôi cũng không biết về nó để mà tìm hiểu. Giải thích một chút về debug cho những bạn chưa biết. Debug có nghĩa là gỡ lỗi, là công cụ của hầu hết ngôn ngữ lập trình nào cũng có, nó sẽ chạy qua từng dòng code của bạn, xem được dữ liệu của cái biến, list, array…Từ đó giúp chúng ta có thể phán đoán được lỗi mà mình đang gặp phải. Dĩ nhiên cái này cũng phải dựa trên kinh nghiêm làm việc mà phán đoán được.

Quay trở lại với màn hình của tôi, sau khi một vài phút anh B hỗ trợ thì cuối cùng cũng tìm được là thông tin kết nối database tôi không chính xác, cái ngu của tôi lòi ra ở đây, tôi nhập thông tin kết nối database sai. Làm mất thời gian của anh B, bị ãnh sạc cho một trận. Nhưng chỉ nói vui thôi và nói lần sau rút kinh nghiệm, sau khi kết nối được database và chạy lên được màn hình thì tôi bắt đầu convert, giữa hai phiên bản Delphi 6 và Delphi XE4 thì nó khác nhau về các control như button, label…Đồng nghĩa với các library của các control đó cũng khác nhau. Việc chỉnh sửa không đơn giản là bạn thay thế các control cũ mà bạn phải comment những dòng chỉnh sửa lại theo một format nhất định. Trường hợp là những dòng code có sẵn mà muốn xóa thì không phải xóa hẳn khỏi file mà là sẽ comment nó lại. Hãy xem ví dụ bên dưới.

// 20190205 Delete Start
// source code cũ của bạn
// 20190205 Delete End

Trường hợp đối với những dòng code mà mình muốn thêm vào sẽ được comment như sau.

// 20190205 Add Start
source code mới của bạn
// 20190205 Add End

Trường hợp đối với những dòng code mà mình muốn chỉnh sửa sẽ được comment như sau.

// 20190205 Change Start
// source code cũ của bạn
source code mới của bạn
// 20190205 Change End

Như đã nói thì tôi được giao cho một màn hình khó, sau khi convert tất cả source code thì cần phải chạy lại màn hình để kiểm tra các chức năng của màn hình đó xem có giống y chang trước khi convert hay không. Tôi tiến hành chạy màn hình của mình, kiểm tra thì thấy chức năng chạy khác so với trước khi convert, tôi không biết nguyên nhân vì sao lại như vậy, mày mò khá lâu và cũng không thể tìm ra nguyên nhân. Tôi liền nghĩ tới cầu cứu anh B, tuy nhiên tôi chợt nghĩ, mọi người ai cũng có công việc của họ, làm như vậy là làm phiền người khác, tốn thời gian quý báu của mọi người. Tôi liền tiến hành học cách debug, tại thời điểm này thì chỉ có debug thì mới có thể tìm ra được nguyên nhân mà thôi, việc tiếp cận một ngôn ngữ mới cũng không dễ dàng gì chứ đừng nói đến việc debug của ngôn ngữ đó đối với một người mới bước chân vào con đường lập trình chuyên nghiệp. Tôi tự mày mò cách đặt debug, chăm chỉ debug để chạy qua từng dòng code, tuy nhiên tôi khá lạ lẫm với các dòng code này vì kỹ năng đọc để hiểu được đoạn code đó chưa có. Loay hoay cả buổi mà vẫn chưa tìm được nguyên nhân, lần đầu tiên tôi cảm thấy mình kém cỏi như vậy, tôi lo lắng về deadline, gần tới deadline mà vẫn chưa làm xong màn hình của mình và cũng lần đầu tiên tôi cảm thấy lo sợ như vậy, lo sợ không hoàn thành được việc, lo sợ sẽ bị công ty đuổi việc. Tới nước này tôi bắt buộc phải cầu cứu tới anh B, tôi tranh thủ lúc anh B đang rảnh liền qua hỏi, anh B cũng hướng dẫn tận tình cách debug, chỉ cho tôi cách xem dữ liệu của từng biến, từng hàm trả về là gì, cuối cùng đã tìm ra nguyên nhân dẫn đến sai khác. Màn hình của tôi cũng đã hoàn thành đúng deadline, tôi cũng đã có một chút kinh nghiệm về cách debug.

Sau khi code xong một màn hình thì chị quản lý sẽ review lại source code của tôi, xem cách tôi convert đã đúng chưa, comment đúng chuẩn chưa, có dư thừa code gì hay không, dư một dòng enter thôi cũng bắt phải sửa lại cho giống source code trước khi convert. Ở công ty tôi được biết tới một phần mềm tên là Beyond compare, phần mềm này cho phép bạn so sánh giữa các file source code trước và sau khi chỉnh sửa, vì vậy mình sẽ biết được là đã chỉnh sửa những dòng nào và ở vị trí nào. Quán trình review source code rất là chặt chẽ, sai một tí xíu thôi cũng phải sửa lại mặc dù nó không ảnh hưởng tới logic của màn hình, ban đầu tôi hơi khó chịu với cách làm như vậy, nhưng thôi kệ, đi làm công ăn lương thì phải tuân thủ, dù là những cái khắt khe hơn cũng phải tuân thủ.

Tôi cũng đã nhận thêm màn hình mới cho mình sau khi đã hoàn thành màn hình đầu tiên, giờ đây tôi cũng đã dần quen với ngôn ngữ delphi và cách debug, những màn hình sau không có khó khăn gì cả, dự án này thật ra nghiệp vụ không quá phức tạp, cái khó của tôi là cách đọc source code để hiểu nó đang dùng để làm gì và dĩ nhiên vì đó là ngôn ngữ chưa học qua nên giai đoạn đầu là giai đoạn khó khăn cho việc này.

Sau khi tất cả các màn hình đã được convert xong thì tiếp đến là giai đoạn tạo testcase và tiến hành test. Vì công ty tôi đang làm không giống như những công ty khác, các công ty khác họ sẽ có đội ngũ test riêng, tuy nhiên công ty chúng tôi ôm xô luôn cả việc đó. Chị quản lý đã viết sẵn testcase cho một màn hình và chúng tôi sẽ bắt chước để viết theo cho những màn hình còn lại. Testcase đại loại là sẽ test những chức năng của màn hình đã convert chạy giống với những chức năng của màn hình đó trước khi convert là được. Sau khi testcase đã viết xong thì chúng tôi bắt đầu test, công việc này tương đối tốn thời gian, có khi thời gian còn nhiều hơn cả code, chúng tôi test thì phải chụp cả hình ảnh để làm bằng chứng là đã test và lưu vào file excel, mỗi testcase chụp cả hình ảnh của chức năng trước khi convert và sau khi convert, để khẳng định rằng trước và sau khi convert thì logic không có gì thay đổi, trường hợp test có bug thì sẽ fix bug. Sau khi test xong thì chị quản lý sẽ review lại những hình chụp có chính xác với testcase hay chưa, nếu chưa đúng thì sẽ được yêu cầu chụp lại.

Và dự án của chúng tôi cũng đã đi đến 95% chặng đường, còn lại sẽ do chị quản lý sẽ lo. Tới ngày giao hàng, sẽ gom source code, tài liệu gồm các file testcase và file chụp hình để giao cho khách hàng. Sau khi giao hàng xong khách hàng sẽ nghiệm thu và sẽ gửi bug về công ty nếu có. Kết thúc dự án mọi người được nghỉ ngơi vài ngày và sau đó sẽ được cho làm những dự án khác. Đến đây thì cũng kết thúc bài viết về dự án đầu tiên, hy vọng sẽ có ích cho các bạn sinh viên sau này khi đi làm.

Sau bài viết mình xin rút ra những kinh nghiệm dành cho những bạn sinh viên đang học hoặc sắp đi làm như sau.
1. Học cách debug cho ngôn ngữ của mình đang học, để lúc đi làm khi gặp bug mà không giải quyết được thì phải dùng đến debug. Chứ đừng như tôi, ra trận mới học.
2. Học ít nhất một trong hai source control là git và svn. Đây là những công cụ quản lý source và nơi lưu trữ source code cho bạn, ở đây bạn có thể quản lý được các version code của mình.
3. Lúc mới vào công ty nên làm quen một vài người bạn để họ có thể chỉ cho bạn những cái bạn hỏi trong tâm trạng vui vẻ 😀

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 IT hấp dẫn trên TopDev