Home Blog Page 44

Debug trong Android Studio – Đây là kỹ năng cần phải giỏi

debug-trong-android-studio-day-la-ky-nang-can-phai-gioi

Bài viết được sự cho phép của tác giả Sơn Dương

Sau khi bạn đã hoàn thành việc cài đặt máy ảo Android và biết cách kết nối điện thoại tới PC. Hãy khoan nghĩ tới việc bắt tay vào lập trình luôn. Cũng như các ngôn ngữ lập trình khác, hay bất kể ai lập trình cũng đều phải biết cách debug. Debug ứng dụng là một kỹ năng rất quan trọng cho mọi lập trình viên. Đó là lý do mình trình bày về cách debug trong android studio trước khi bắt tay vào học code ứng dụng.

Nội dung bài viết gồm có:

  • Hướng dẫn sử dụng Android Studio Debugger
  • Tìm hiểu Breakpoit là gì và cách sử dụng nó để debug trong Android Studio
  • Và một số thủ thuật “đắt giá” khi debug trong Android Studio

Chúng ta bắt đầu nhé

#1. Cách sử dụng công cụ Android Studio Debugger

Công cụ Android Studio Debugger cho phép ta theo dõi ứng dụng theo thời gian thực. Ngoài ra nó còn cung cấp thêm thông tin về thiết bị đã kết nối hoặc máy ảo mà bạn đang sử dụng.

Để minh họa quá  trình sử dụng công cụ này để debug chương trình. Mình sẽ minh họa bằng đoạn code sau:

public class RestaurantsActivity extends AppCompatActivity {
    @Bind(R.id.locationTextView) TextView mLocationTextView;
    @Bind(R.id.listView) ListView mListView;

    private String[] restaurants = new String[] {"Sweet Hereafter", "Cricket", "Hawthorne Fish House", "Viking Soul Food",
            "Red Square", "Horse Brass", "Dick's Kitchen", "Taco Bell", "Me Kha Noodle Bar",
            "La Bonita Taqueria", "Smokehouse Tavern", "Pembiche", "Kay's Bar", "Gnarly Grey", "Slappy Cakes", "Mi Mero Mole" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_restaurants);
        ButterKnife.bind(this);

        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, restaurants);
        mListView.setAdapter(adapter);

        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String restaurant = ((TextView)view).getText().toString();
                Toast.makeText(RestaurantsActivity.this, restaurant, Toast.LENGTH_LONG).show();
            }
        });

        Intent intent = getIntent();
        String location = intent.getStringExtra("location");

        mLocationTextView.setText("Here are all the restaurants near: " + location);
    }
}

  Tổng Hợp Các Tip Khi Sử Dụng Android Studio

  Android Studio: Phần mềm hỗ trợ lập trình ứng dụng Android

#2. Breakpoint là gì? Cách đặt Breakpoint khi debug trong Android Studio

Khi ứng dụng chạy, với tốc độ của máy tính thì các dòng code sẽ được thực thi rất nhanh, cứ vèo vèo như gió vậy. Vậy làm sao để tạm dừng chương trình tại một dòng code nào đó để kiểm tra xem các tham số đầu vào đã chuẩn chưa? Kết quả trả về thế nào? Đó là lúc chúng ta cần đến Breakpoint. Breakpoint là một thuật ngữ lập trình có nghĩa là vị trí ở dòng code nào mà ta muốn chương trình khi sẽ dừng tại đó.

Chúng ta có thể chèn thêm một breakpoint (hoặc nhiều breakpoint tùy ý muốn) ở vị trí nào mà chúng ta muốn chương trình khi chạy đến đấy thì dừng lại. Có nhiều cách để thêm breakpoint.

Đây là một cách:

Click vào vị trí mà bạn muốn thêm breakpoint. Sau đó chọn Run > Toggle Line Breakpoint

Debug trong Android Studio

Một vòng tròn màu đỏ sẽ xuất hiện trực tiếp ngay bên trái của dòng code này. Vùng vòng tròn màu đỏ này nằm trong người ta gọi là gutter:

debug trong android studio

Để xóa điểm breakpoint, chúng ta có thể chọn dòng tương tự, sau đó chọn Run > Toggle Line Breakpoint một lần nữa để tắt nó đi. Hoặc đơn giản là click đúp vào vòng tròn đỏ.

Cách sử dụng Breakpoints

Sau đó, chúng ta có thể chạy debug bằng cách chọn icon “Debug” ở trên thanh công cụ. Việc này sẽ chạy ứng dụng ở chế độ debug lên thiết bị hay máy ảo

đặt breakpoint trong android studio

Một khi ứng dụng chạy, bạn mở đến màn hình ứng dụng mà dòng code được đặt breakpoint trước đó có thể được gọi. Nếu dòng code đó được thực hiện, ứng dụng sẽ dừng lại và màn hình console debuger sẽ xuất hiện.

Khi ứng dụng dừng lại tại breakpoint, để có thể kiểm tra giá trị của các biến thì chúng ta có một cách. Cách đơn giản là di chuột qua các biến để thấy các giá trị hiện tại của nó:

Debug ứng dụng trong Android Studio

Nếu chúng ta click vào biểu tượng “+” ở bên trái của cửa sổ màu vàng xuất hiện khi chúng ta di chuột qua một biến, chúng ta có thể xem thêm chi tiết hơn:

Debug ứng dụng trong Android Studio

Tìm việc làm Android lương cao trên TopDev!

Cách điều hướng các dòng code khi debug

Khi debug thì không chỉ đơn giản là kiểm tra giá trị tại dòng code mà bạn đặt breakpoint. Bạn còn phải kiểm tra xem luồng code có chạy đúng ý của mình không? Đây là lúc chúng ta cần đến kỹ năng sử dụng điều hướng.

Bạn nhìn thấy cửa sổ Debugger phía dưới chứ? Cửa sổ này sẽ hiện khi ứng dụng dừng tại breakpoint. Trình gỡ lỗi debugger chứa nhiều nút để tương tác với code. Dưới đây là 10 nút mà bạn sẽ thường sử dụng nhất:

Debug ứng dụng trong Android Studio

Chúng ta sẽ lần lượt tìm hiểu tác dụng của từng nút nhé

­­1. Nút hiển thị Breakpoint đang active
Bạn có thể đặt rất nhiều breakpoint trong ứng dụng. Và đôi lúc mải đọc code mà quên không biết mình đang debug dòng nào. Nút này có tác dụng đặt con trỏ trở lại vào vị trí mà bạn đang debug lỗi. (ví dụ: nếu bạn chèn một breakpoint vào một nơi nào đó, nhìn xung quanh một số file khác, bạn có thể nhấn vào nút này để trở lại breakpoint ban đầu của bạn).

2. Step Over
Nút này sẽ giúp debug nhảy xuống dòng code tiếp theo

3. Step Into
Nút này sẽ nhảy vào bên trong hàm

4. Force Step Into
Nút này sẽ cho phép nhảy thẳng đến dòng đầu tiên bên trong của hàm được gọi

5. Thoát ra ngoài
Cái này thì dễ hiểu rùi, đơn giản là nhảy ra khỏi hàm đang debug.

6. Tiếp tục chương trình(Resume Program)
Nút này sẽ tiếp tục chạy ứng dụng một cách bình thường. Tạm thời bỏ qua debug

7. Tạm dừng chương trình(Pause Program)
Nút này sẽ được greyed-out trước tiên bởi vì chương trình đã sẳn sàng tạm dừng. Nếu bạn chọn tiếp tục chương trình, bạn sẽ tạm dừng nó lại với tùy chọn này.

8. Dừng ứng dụng (Stop App)
Nút này sẽ làm ứng dụng đang chạy trên thiết bị hoặc máy ảo dừng lại hoàn toàn. Hiểu nôm na là tắt ứng dụng và không debug nữa.

9. Xem các Breakpoints
Nút này sẽ mở một cửa sổ hiển thị các tất cả breakpoint đã được chèn. Ngoài ra, nó cho phép bạn tinh chỉnh cài đặt cho từng breakpoint riêng biệt.

Ví dụ bạn chọn Remove once hit để tự động xóa breakpoint này đi khi bạn dừng chương trình.
Hay Log message to console tức là sẽ “bắn” một message trong logcat khi mà breakpoint này được active.

Nhiều lắm, các bạn tự khám phá các option khác nhé

Debug ứng dụng trong Android Studio

10. Mute Breakpoint
Tùy chọn này giúp bạn có thể bật – tắt tạm thời tất cả các breakpoint.

Tóm lại, Android Studio Debugger là một công cụ hết sức hữu hiệu. Bạn hãy thử trải nghiệm với việc sử dụng debugger trong các project mà bạn đang thực hành, debug ngay cả khi không gặp lỗi. Bằng cách này, bạn sẽ hiểu rất rõ về luồng code của dự án mà mình đang phát triển.

#3. Một số thủ thuật Debug nâng cao

Attach Debugger  – Công dụng không ngờ

Có lẽ thời gian mình phải debug ứng dụng chắc có ngót nghét 5 năm. Thời gian đầu, mình cũng được các bạn trên mạng hướng dẫn debug là dùng nút hình con bọ xanh, và chỉ biết vậy thôi. Đến một ngày đẹp trời, mình quyết định thử click vào nút nhỏ trên thanh điều hướng, có tên là Attach Debugger.

Thật tuyệt vời! Công cụ này cho phép debug ứng dụng đang chạy hiện tại – mà không phải cài đặt lại. Điều này tiết kiệm được rất nhiều thời gian khi mà thời gian build gradle ngày càng chậm. Có thể nhiều bạn đã biết đến nút này, nhưng mình tin là ít người sử dụng.

Attach Debugger

Đặt Breakpoint có điều kiện

Khi bạn debug một vòng lặp và vì lý do nào đó bạn muốn kiểm tra vòng lặp thứ 6 chẳng hạn. Có lẽ phần lớn các bạn sẽ đặt một điểm breakpoint vào trong vòng lặp ấy và sau đó bạn tự nhấn phím F8 đúng 5 lần để đi đến nơi mà bạn muốn.

Với các breakpoint có điều kiện, bạn chỉ cần đưa điều kiện vào breakpoint và Android Studio chỉ dừng khi điều kiện là đúng. Để làm được như vậy, bạn làm như sau:

  1. Click chuột phải vào breakpoint và điền vào điều kiện.
  2. Tiến hành Debug lỗi như bạn thường làm và thật kinh ngạc. Android Studio chỉ dừng lại chỉ khi điều kiện được đáp ứng.

Ví dụ như hình vẽ

debug-ung-dung-trong-android-studio

Click chuột phải vào breakpoint và đặt điều kiện cho breakpoint

debug-ung-dung-trong-android-studio-11

và đây là kết quả

Exception Breakpoints – Tự động tìm dòng code bị exception

Chức năng này cực kì hữu ích khi bạn không biết ứng dụng đang bị lỗi ở đâu, và chưa có ý tưởng gì về việc phải đặt breakpoint chỗ nào. Thay vì thử đặt các breakpoint khắp nơi để dò xét. Bạn có thể yêu cầu IDE tạm dừng bất kể khi nào mà một exception có thể hiện  ra.

Đây là cách thực hiện: Run > View Breakpoints hoặc cmd + shift + F8 để hiển thị cửa sổ Breakpoint

  1. Nhấn + sau đó chọn Java Exception Breakpoint.

debug-ung-dung-trong-android-studio-13

Chọn/tìm kiếm một exception mà bạn nghi ngờ.

debug-ung-dung-trong-android-studio-14

debug-ung-dung-trong-android-studio-15

Chỉ định bất kì tùy chọn nào nếu bạn muốn và đảm bảo rằng các điểm breakpoint này trong trang thái được cho phép.

debug-ung-dung-trong-android-studio-17

debug-ung-dung-trong-android-studio-18

debug-ung-dung-trong-android-studio-19

Như vậy là mình đã chia sẻ toàn bộ những kiến thức cơ bản và có đôi chút nâng cao để hướng dẫn debug trong Android Studio cho bạn. Về cơ bản là chúng ta đã được trang bị đầy đủ công cụ để có thể chiến được Android rồi. Tiếp tục trong khoá học tự học lập trình Android, bài viết sau chúng ta sẽ tìm hiểu về Activity, thành phần quan trọng nhất của ứng dụng android. Các bạn đón đọc nhé!

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

Xem thêm:

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

Kỹ năng quan trọng cần có của một automation tester

Kỹ năng quan trọng cần có của một automation tester

Từ hồi mới bắt đầu đi làm, vị trí của mình là manual tester, ngày đấy cũng chỉ biết chút chút khái niệm về manual test với automation test. Nhưng cũng chẳng hiểu rõ nó như thế nào, chỉ ngộ nhận là automation test thì nó dùng tool thế thôi.

Hai trong những automation tools mà mình biết lúc đó là HP Quick test pro, và Selenium. Mà với cả hai tool ấy thì cũng chỉ biết đến mỗi nhóm tính năng record – play back thôi xong rồi cứ nghĩ là nó có đến vậy.

Thế rồi, sau gần hai năm làm manual, trăn trở nhiều về công việc hiện tại, và nghĩ rằng nếu 10 năm sau mà cũng làm như thế này thì sẽ ra sao? Nếu không thì sẽ dẫn đến đâu, mình sẽ làm gì? Đúng lúc ấy thì tình cờ nhờ có một anh chàng đẹp zai, anh ấy đã gửi cho mình một link có thông tin về một lớp học Selenium basic để tham khảo và cân nhắc việc tham gia thử xem sao. Từ ngày đấy đến giờ ấy thế mà cũng đã hơn một năm rồi.

Từ một manual tester chính thống, mình nghĩ đến việc sẽ làm quen thử với automation test, và đã bắt đầu với lớp học basic ấy.

automation tester

Sau khi được giới thiệu và học một vài buổi làm quen ban đầu với automation, mình nghĩ rằng, các kỹ năng của một automation tester cần có chắc chắn phải bao gồm những yếu tố dưới đây:

  • Phải cao siêu về các Web element như XPATH và CSS
  • Phải biết và làm đươc JUNIT cho các script giống code unit test mà đội dev thường làm đó
  • Về các hệ quản trị cơ sở dữ liệu các câu lệnh truy vấn
  • Biết lập trình, các kỹ năng về lập trình
  • Sử dụng được một vài ngôn ngữ lập trình nào đó
  • Nắm được một vài automation framework
  • Hiểu biết về Page – object – model

automation tester

Nhưng trong cả tá những thứ đó, thì kỹ năng nào là quan trọng nhất?!

Bây giờ cũng không hẳn là đã có nhiều kinh nghiêm làm về automation nhưng mình vẫn nghĩ là bản thân vẫn cần phải có các kiến thức, kỹ năng trên, không cần quá cao siêu nhưng ít nhất phải nắm được những thứ cơ bản của từng cái, hiểu được bản chất của nó.

Và Theo mình, cái quan trong hơn cả chính là kỹ năng lập trình. Còn những cái khác sẽ là những điều kiện đủ để bổ trợ cho mình trong quá trình làm việc mà thôi.

  Các thành phần cơ bản trong một automation project

Tại sao kỹ năng lập trình lại là điều quan trọng nhất?

  • Automation test là viết các script để run các scenario tương tác với ứng dụng. Ngoài việc để cho nó có thể chạy được, bạn còn phải làm để có thể bảo trì nâng cấp một cách dễ dàng nhất, thích ứng với sự thay đổi của những lần release, sao cho code của bạn phải sửa ít nhất.
  • Có kỹ năng lập trình tốt bạn có thể giải quyết vấn đề liên quan đến technical một cách tối ưu hơn, hiệu năng code tối ưu hơn.
  • Project automation của bạn cũng cần phải có tổ chức một cách khoa học, áp dụng các kỹ thuật giống như việc đội dev đã xây dựng lên sản phẩm đó. Ngoại trừ mục đích của hai người khác nhau: một bên xây dựng sản phẩm, một bên là kiểm tra sản phẩm hoạt động đúng yêu cầu hay chưa mà thôi.
  • Có kỹ năng lập trình tốt giúp bạn tiếp cận và ứng dụng các automation framework tốt hơn, hiệu quả hơn.
  • Với kỹ năng lập trình tốt bạn có thể tiếp thu các công nghệ mới một cách nhanh chóng, có thể xác định và đưa vào áp dụng một cách dễ dàng cho project mà không phải gặp quá nhiều khó khăn.
  • Có kỹ năng lập trình và tư duy lập trình tốt bạn sẽ không bị ảnh hưởng và quá phụ thuộc vào một ngôn ngữ lập trình nào đó. Tuy nhiên, thì mình cũng nên lựa chọn một ngôn ngữ lập trình và đầu tư thời gian để phát triển sâu hơn, chứ đừng tham mà học nhiều nhưng lại chẳng chuyên sâu về cái gì cả. Ngôn ngữ lập trình có thể thay đổi, nhưng tư duy nền tảng của nó thì cũng gần như tương đương nhau, nên cũng không cần quá lo lắng.

Kỹ năng lập trình chính là yếu tố cốt lõi để bạn có thể xây dựng và giải quyết các bài toán trong atuomation project một cách hiệu quả.

JavaSelenium là cặp đôi được sử dụng rất phổ biến hiện nay, rất nhiều các tài liệu, diễn đàn hay các cuốn sách hướng dẫn đang sử dụng.

Để luyện tập và phát triển kỹ năng lập trình, hãy bắt đầu từ những script đơn giản trong và nâng cao dần độ khó, lặp lại nhiều nhiều và nhiều lần. Hoặc thực hành với một project nho nhỏ, bạn sẽ gặp được nhiều vấn đề hơn, đòi hỏi bạn phải giải quyết chúng, làm nhiều rồi đến khi bạn sẽ tích lũy được nhiều kinh nghiệm giải quyết các vấn đề.

Xem thêm nhiều việc làm Tester lương cao trên TopDev

automation tester

Sẽ có những lúc bạn sẽ gặp phải những vấn đề rất rối rem, bạn chẳng biết làm thế nào, lúc đó phải thật kiên trì và bình tĩnh, đào bới google và tìm đến sự giúp đỡ của một anh code nào đó, kiểu gì cũng phải xong. Đến lúc làm được rồi, mặc dù chỉ nhỏ thôi nhưng chắc chắn bạn sẽ biết được một cảm giác vô cùng phiêu!!!

  Automation testing: Một số công cụ hữu ích cho tester

Vì bản thân mình, cũng đã từng trải qua cảm giác như vậy cũng khá nhiều lần rồi. Cho đến lúc xong, nhiều lần mình còn tự trách dễ như thế mà làm ko ra được, hay tại sao lúc đấy mình lại làm như vậy được nhỉ?

Từ những lần ấy, bản thân bạn sẽ cảm thấy như được tiếp thêm động lực để cố gắng hơn nữa, làm nhiều hơn nữa. Không chỉ để test mà còn để tạo ra những thứ giúp bạn giảm các công việc tay chân của mình đi nữa cơ.

Hi vọng rằng đây cũng sẽ là động lực để bản thân mình khi gặp khó khăn có thể mạnh mẽ vượt qua. Hay có bạn nào mà muốn từ manual nhảy qua có thể xác định được tư tưởng để rồi phấn đấu.

automation tester

Bài viết dựa theo quan điểm cá nhân và ngẫu hứng, nếu có gì góp ý các bạn có thể để lại comment cho mình ở phía dưới nhé!

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

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

Đừng bỏ lỡ Việc làm Developer hấp dẫn trên TopDev

7 khái niệm Javascript cơ bản không thể bỏ qua

7 khái niệm Javascript cơ bản không thể bỏ qua

Bài viết được sự cho phép của tác giả Sơn Dương

Những khái niệm Javascript cơ bản cần phải biết

1. Promises

Nhắc đến Javascript là nhắc đến khái niệm lập trình bất đồng bộ. Vậy phải làm sao để ứng dụng chạy đúng luồng mà bạn mong muốn? Khái niệm Callback ra đời.

Tuy nhiên, khi bạn sử dụng callback một cách vô tội vạ sẽ dẫn đến callback hell. Đây là một bad smell cực kì tệ, làm bộ source code trở nên khó đọc, khó bảo trì và dễ phát sinh bug.

Để giải quyết vấn đề callback hell, người ta lại nghĩ ra Promises.

Promise là một cơ chế đặc biệt trong JavaScript giúp bạn thực hiện các tác vụ bất đồng bộ mà không bị callback hell hay pyramid of doom.

Promises là trung tâm của thế giới lập trình bất đồng bộ Javascript. Hiểu được cách thức hoạt động và sử dụng nó một cách chính xác là điều cần thiết để xây dựng các ứng dụng javascript cơ bản hiện đại.

Mình sẽ lấy một ví dụ về Callback hell:

api.getUser('pikalong', function(err, user) {
  if (err) throw err
  api.getPostsOfUser(user, function(err, posts) {
    if (err) throw err
    api.getCommentsOfPosts(posts, function(err, comments) {
      // vân vân và mây mây...
    })
  })
})

Và sử dụng Promise để xử callback hell như sau:

api.getUser('pikalong')
  .then(user => api.getPostsOfUser(user))
  .then(posts => api.getCommentsOfPosts(posts))
  .catch(err => { throw err })

Bạn thấy code đẹp trai hơn chưa!

Xem việc làm javascript đãi ngộ tốt trên TopDev

2. Async/Await

Mặc dù viết code sử dụng promises giúp mã nguồn trở nên trong sáng hơn rất nhiều. Tuy nhiên, nếu không cẩn thận thì vẫn có thể lại bị promises hell. “Tránh vỏ dưa lại gặp vỏ dừa”.

Ngoài ra, nếu bạn đã quen với ngôn ngữ lập trình tuần tự như PHP, Java… thì việc tiếp cận với Javascript sẽ trở thành cực hình.

Vì vậy, Async/Await ra đời. Từ khóa Async/Await giúp mã nguồn Javascript chạy tuần tự từ trên xuống dưới. Nhờ đó, bạn có thể viết mã không đồng bộ theo cách đồng bộ.

Đây là một ví dụ về Async/Await:

async function() {
  try {
    const user = await api.getUser('pikalong')
    const posts = await api.getPostsOfUser(user)
    const comments = await api.getCommentsOfPosts(posts)

    console.log(comments)
  } catch (err) {
    console.log(err)
  }
}

Cần lưu ý là kết quả trả về của async function luôn là một Promise.

Hiện tại thì cả Promise và Async/Await đều được hỗ trợ bởi tất cả các trình duyệt hiện đại (trừ IE11). Còn phía server (Nodejs), cả Promise và Async/Await đều được hỗ trợ bởi Nodejs phiên bản mới nhất.

  Xử lý bất đồng bộ với Promise.all trong JavaScript

  Tất tần tật về ASYNC/AWAIT trong JavaScript

3. Fetch

Để tạo một request từ client lên server lấy dữ liệu. Bạn có nhiều cách, sử dụng Ajax chẳng hạn. Ngoài ra, bạn cũng có thể sử dụng fetch().

Một ứng dụng hiện đại, có lẽ không thể thiếu phần kết nối tới server. Do đó, fetch() được sử dụng rất nhiều.

Fetch API là một API đơn giản cho việc gửi và nhận requesst bằng js. Fetch() giống với XMLHttpRequest, nhưng điểm hiện đại hơn là fetch() trả về một Promise.

Vì vậy, bạn có thể sử dụng fetch() kết hợp với Async/Await hay Promise để code được “sạch sẽ” hơn.

Để dễ hình dung, mình lấy một ví dụ đơn giản như sau:

async function getRedditJSON () {
  const response = await fetch('https://www.reddit.com/.json')

  return response.json()
}

getRedditJSON().then((data) => {
  console.log(data)
})

Việc làm JavaScript Hồ Chí Minh dành cho bạn!

4. Classes & Objects

Nếu trước kia, nhắc đến Javascript mà lại muốn viết hướng đối tượng thì thật buồn cười. Nhưng giờ thì đã khác. Rất nhiều framework javascript ra đời dựa trên component như ReactJs, VueJs… Đặc biệt, sự có mặt của TypeScript đã mang các khái niệm Interface, static type checking lên Javascript.

Với TypeScript, giờ bạn có thể viết code clean hơn, ứng dụng triết lý SOLID vào mã nguồn. Nếu bạn tò mò về cách ứng dụng triết lý SOLID trên Javscript thì đọc thêm bài viết này: SOLID trong Node.js

Chính vì điều này mà bạn cần phải hiểu và nắm vững các khái niệm về Classes/Objects giống như các ngôn ngữ Java.

import React from 'react';

export interface SampleComponentProps {
  firstword: string,
  secondword: string
}

export interface SampleComponentState {
  phrase: string
}

class SampleComponent extends 
React.Component<SampleComponentProps, SampleComponentState> {
  readonly state: SampleComponentState = {
    phrase: ''
  }

  constructor(props: SampleComponentProps) {
    super(props)
    this.state = {
      phrase: `${props.firstword} ${props.secondword}`
    }
  }

  render () {
    const { phrase } = this.state
    return (
      <div>
        <p>{phrase}</p>
      </div>
    )
  }
}

export default SampleComponent;

Qua ví dụ trên, bạn biết được về Component, Classes, Objects, Contructors, và TypeScript interface.

5. Import/export

Như mình đã nói ở trên, ngày nay càng nhiều Javascript Framework ra đời và phổ biến dựa trên component. Điển hình là ReactJS của facebook, VueJS…

Và để sử dụng component trong dự án, bạn sẽ phải sử dụng Import/Export rất nhiều. Mặc dù, hai khái niệm này rất dễ. Nhưng cũng đừng chủ quan mà học lướt qua. Nếu bạn sử dụng đúng cách Impor/Export có thể cải thiện đáng kể hiệu xuất và kích thước ứng dụng.

6. Hiểu đúng từ khóa “This”

Khi bạn học lập trình ứng dụng web, bạn sẽ hiểu tầm quan trọng của lập trình bất đồng bộ.

Trong thế giới bất đồng bộ, context của mã thực thi bị thay đổi liên tục. Là developer, bạn sẽ dễ dàng hiểu hơn mã nguồn bất đồng bộ khi hiểu rõ cách thức từ khóa “this” hoạt động thế nào.

Bạn đã hiểu rõ về cách thức hoạt động của từ khóa “This” chưa? Nếu chưa thì mình khuyên bạn nên đọc những bài viết sau:

 7. Events & Event Listeners

Đặc thù của ứng dụng web đó là luôn lắng nghe và phản hồi những tương tác của người dùng. Có rất nhiều cách để xử lý vấn đề này, trong đó kiểu thiết kế hướng sự kiện ra đời để xử lý event data và responsive action.

Ví dụ, mô hình MVC với 2-way databinding đã tồn tại trong thời gian dài. Với kiểu thiết kế này, Model sẽ được update cùng với View thông qua controller. Khi Model thay đổi thì toàn bộ View cũng sẽ thay đổi theo và ngược lại.

Với cách thiết kế này thì thực sự giúp bạn dễ dàng viết code thiết kế giao diện. Tuy nhiên, nhược điểm là khó debug khi giao diện phức tạp.

Triết lý hướng sự kiện ra đời để giải quyết điều đó. Với triết lý này, các thành phần trong View sẽ chỉ cập nhật khi xuất hiện action, và chỉ cập nhật bản thân nó mà không cập nhật toàn View.

Sẽ thật khập khiễng, khi bạn học về Javascript mà lại không biết về Event, Event Listeners. Khi tìm hiểu về Javascript cơ bản bạn sẽ thấy nhan nhản về Event. Kiểu như thế này:

var myEl = document.getElementById('myelement');

myEl.addEventListener('click', function() {
    alert('Hello world');
}, false);

myEl.addEventListener('click', function() {
    alert('Hello world again!!!');
}, false);

#Tạm kết

Trên đây là những khái niệm Javascript cơ bản cực kì quan trọng. Vì vậy, mình khuyên chân thành bạn nên bỏ nhiều thời gian hơn chút để hiểu kỹ những khái niệm này.

Javascript là ngôn ngữ khó học nhưng đã biết thì cực thích.

Tương lai của javascript đang rất rộng mở, nên mình hi vọng các bạn sẽ thích ngôn ngữ này.

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

Xem thêm:

Tìm việc làm IT mới nhất trên TopDev

[Update] Điểm tên TOP 5 công nghệ mới đang HOT trong năm 2024

Điểm tên TOP 5 công nghệ mới đang HOT trong năm 2023

Công nghệ mới liên tục ra mắt đòi hỏi người kĩ sư phần mềm (Software Engineer) cần chú ý cập nhật các nội dung mới để tránh bị lạc hậu.

Cập nhật kiến thức mới về các tech trend cũng giúp kỹ sư phần mềm và các vị trí khác có cái nhìn rộng hơn về tương lai. Bổ sung kiến thức phù hợp cũng là điều cần thiết khi có các trend công nghệ mới, hoặc cập nhật cho các công nghệ cốt lõi.

Bài viết này trình bày 5 công nghệ mới cần chú ý năm 2023.

1. Trí tuệ nhân tạo (AI) và Machine Learning

Machine Learningtrí tuệ nhân tạo thường bị nhầm lẫn với nhau. Nhưng học máy là một thành phần con của Trí tuệ nhân tạo (AI). Mặc dù AI cách đây vài năm có thể xem là khoa học viễn tưởng với nhiều người, nhưng riêng trong năm 2022 và đầu năm 2023 đã đánh dấu những phát triển vượt bậc của AI (trí tuệ nhân tạo).

Việc phát triển nhanh và bền vững của AI đánh dấu bằng việc AI không chỉ đem vào ứng dụng trong HiTech, mà nó đã dần lấn sân qua cả FinTech.

tech trend

AI đang được các doanh nghiệp đầu tư phát triển khi họ nhận thấy tiềm năng to lớn của AI, khi AI đem vào sử dụng tại doanh nghiệp, nó hỗ trợ đưa ra các dự đoán. Lập kế hoạch hoặc phân tích lượng dữ liệu khổng lồ mà doanh nghiệp đang có.

Riêng đối với lĩnh vực phát triển phần mềm, các task ở cấp thấp (low-level) sẽ dần dần được thay thế bởi AI. Lập trình viên cũng như các nhà phát triển phần mềm có thể dành nhiều thời gian hơn để tập trung vào các công việc đem lại lợi ích lớn hơn cho toàn dự án.

  [Update] 5 xu hướng dẫn dắt “làn sóng” công nghệ trong năm 2024

  IoV (Internet of vehicle) là gì? Kiến trúc IoV

2. Low code và no code

Với Low code và no code, năm 2022 đánh dấu sự phát triển mạnh mẽ của Low code. Các platform cho phép người dùng kéo thả để tạo ra các tính năng. Các component có độ phức tạp cao được xây dựng sẵn.

Cùng với sự phát triển đa dạng và nhanh chóng của low code, giờ đây bạn không cần phải hiểu quá sâu về kĩ thuật, cũng không cần phải để ý chi tiết. Chỉ cần hiểu và nắm chắc business mà bạn muốn xây dựng là gì? Low code và no code platform sẽ xử lý phần công việc còn lại.

tech trend

Ngoài ra, thời gian phát triển dự án phần mềm càng ngày càng ngắn còn thúc đẩy một bộ phận không nhỏ các kỹ sư phần mềm tìm tới low-code. Nhanh chóng dựng nên phần thô hoặc tính năng đơn giản cho ứng dụng hoặc dự án.

Năm 2022 tuy là năm phát triển của Low code nhưng cũng là năm mà low code bộc lộ nhiều các điểm yếu, nhưng chúng cũng đang được cải thiện nhanh chóng. Việc low code và no code phát triển mở ra một kỷ nguyên mới, nơi mà người bình thường cũng có thể dễ dàng tiếp cận công nghệ.

3. DevSecOps

Công nghệ mới thứ 3 được điểm danh là DevSecOps. Nếu bạn chịu khó để ý tin tức hoặc theo dõi tin tức thường xuyên. Hẳn là bạn biết mức độ thiệt hại nếu các cuộc tấn công mạng nhắm tới doanh nghiệp và chính phủ.

Bảo mật, an toàn là yếu tố đầu tiên cần quan tâm ngay khi phát triển dự án phần mềm. DevSecOps là phương pháp phát triển phần mềm mới đem bảo mật vào mọi giai đoạn của phát triển phần mềm.

Ngoài ra, việc phát triển nhanh và mạnh của khoa học dữ liệu cũng đòi hỏi việc đảm bảo an toàn cho lượng dữ liệu lớn đã thu thập được. DevSecOps sẽ trực tiếp can dự vào quá trình phát triển phần mềm. Bắt buộc đem toàn bộ tính năng an toàn vào trong từng giai đoạn phát triển.

Tham khảo việc làm JavaScript HOT trên TopDev

4. Cloud-Native Software Architecture

Kiến trúc phần mềm dựa trên cloud cũng như các dịch vụ ở trên cloud đã quá quen thuộc với nhiều người. Không những khách hàng cá nhân, các khách hàng doanh nghiệp cũng thực hiện chuyển đổi và di chuyển phần lớn hạ tầng lên cloud.

Kiến trúc phần mềm dựa trên Cloud là bước đi cần thiết khi thực hiện số hoá cho doanh nghiệp. Amazon, Google và Microsoft đã và đang cung cấp các giải pháp cloud, giá thành thì càng ngày càng trở nên hợp lý.

tech trend

Việc sử dụng tài nguyên cũng trở nên hợp lý hơn bao giờ hết. Thay vì phải cung cấp dư thừa như trước đây, với các dịch vụ từ Cloud, doanh nghiệp chỉ phải trả tiền cho những gì họ sử dụng. Không nhiều hơn mà cũng chẳng ít hơn.

Chính vì vậy, năm 2024 vẫn được dự đoán là một năm phát triển vượt bậc của Cloud Software Architecture.

5. Microservices

Năm 2023 và cuối năm 2022 vẫn là khoảng thời gian mà microservices phát triển cực nhanh. Giờ đây, microservices đã là khái niệm phổ biến thường xuyên được nhắc tới khi xây dựng kiến trúc cho dự án phần mềm.

Với ưu điểm là tính năng riêng việc, xử lý công việc riêng biệt, khả năng scale up của microservices giờ đây được tận dụng triệt để. Số lượng user truy cập + tương tác ngày càng nhiều, việc mở rộng và scale up giờ đây đã là vấn đề nghiêm túc cần các doanh nghiệp xem xét khi phát triển dự án phần mềm.

tech trend

Năm 2023 là năm dự đoán microservices sẽ tiếp tục phát triển, len lỏi sâu hơn vào các ưng dụng hoặc hệ thống phần mềm.

6. Tham khảo thêm về công nghệ mới năm 2023

Cảm ơn anh em đã đọc bài – Thank you for your attension – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm:

Xem thêm tuyển dụng CNTT hấp dẫn trên TopDev

‘Chiếc ghế khách hàng’ trên hành trình chuyển đổi của Techcombank

Mục tiêu quan trọng nhất mà Techcombank hướng đến trong những năm tới không phải là các chỉ số tài chính, mà là việc phục vụ được nhiều nhất và mở rộng số lượng khách hàng thân thiết sử dụng Techcombank là ngân hàng giao dịch chính. “Muốn thành công dài hạn và phát triển bền vững, điều Techcombank luôn chú trọng là lấy khách hàng làm trọng tâm.”

Gần 3 thập kỷ có mặt trên thị trường, từ một ngân hàng với vốn điều lệ chỉ 20 tỷ đồng vào năm 1993, đến nay, Techcombank đã là một trong những ngân hàng tư nhân lớn nhất và hoạt động hiệu quả nhất hệ thống ngân hàng Việt Nam. Nhà băng này đặt mục tiêu tới năm 2025 vốn hóa thị trường sẽ đạt 20 tỷ USD, lợi nhuận 2 tỷ USD, nhưng quan trọng hơn là tạo dựng được nhiều giá trị và trở thành động lực tích cực thay đổi đời sống tài chính của doanh nghiệp, cũng như người dân Việt Nam.

Với CEO của Techcombank, những doanh nghiệp tên tuổi trên thế giới như Apple, Amazon hay Spotify chỉ thành công khi lấy khách hàng làm trọng tâm. Họ luôn nỗ lực mang lại trải nghiệm đơn giản nhất, và tiện lợi nhất đến cho khách hàng thông qua ứng dụng công nghệ mới. “Ví dụ, mỗi cuộc họp quan trọng của ban lãnh đạo ở Amazon đều có một chiếc ghế đặt ở giữa được gắn tên “Khách hàng” để nhắc nhở về “trọng tâm” thảo luận. Bất kể người trình bày, thay thuyết trình có nhìn hướng nào thì “chiếc ghế khách hàng” vẫn trong luồng mắt trung tâm của họ”, vị CEO người Đức chia sẻ.

Điều này được thực hiện tương tự tại Techcombank. Theo CEO Jens Lottner, mỗi khi ngân hàng cho ra mắt một ứng dụng, hoặc sản phẩm mới, đội dự án được yêu cầu phải mời trực tiếp khách hàng đến sử dụng thử nghiệm, và cho ý kiến. Đội ngũ thiết kế phải ngồi cùng với khách hàng nhiều lần, để xem họ có hài lòng với tính năng mới không, việc sử dụng có dễ dàng hay không. Từ đó, họ phải đưa ra những điều chỉnh thiết kế phù hợp, thậm chí cấu trúc lại cả hành trình khách hàng. “Chiếc ghế khách hàng” ở Techcombank không còn là một chỗ ngồi trống, mà có gương mặt, cá tính và tiếng nói quyền lực trong mọi quyết định của chúng tôi”, vị CEO Techcombank nói.

Chúng tôi muốn “chiếc ghế khách hàng” luôn phải nằm trong mọi suy nghĩ của mỗi cán bộ nhân viên, hay nói cách khác phải “ám ảnh” họ và hiện diện trong mọi việc họ làm. Cùng với đó, mọi bộ phận trên toàn hàng đều được yêu cầu phải áp dụng đo lường chỉ số mức độ hài lòng và sự sẵn sàng giới thiệu dịch vụ của khách hàng (NPS), và đưa vào hoạt động văn hóa tổ chức của toàn ngân hàng.

Một trong những nhiệm vụ quan trọng mà Techcombank đang thực hiện đó là xây dựng giao diện trên nền tảng số thông minh, để mang đến trải nghiệm tiện lợi và đơn giản nhất có thể đối với các khách hàng. Mô tả một cách đơn giản nhất, Techcombank mong muốn mang đến các tính năng và ứng dụng ngân hàng đơn giản, tiện ích và thú vị như “tải một bài hát trên Spotify”.

“Spotify có thể đưa ra lời gợi ý về bài hát theo đúng gu âm nhạc của người dùng chỉ trong vòng vài tích tắc. Hay Amazon cũng có thể gợi ý về các sản phẩm, nhà cung cấp cho người dùng dựa trên thói quen mua hàng, hoặc thói quen tìm kiếm của khách hàng. Câu hỏi đặt ra ở đây là làm thế nào để Techcombank có thể làm những điều tương tự, và chúng tôi cần làm gì khi khách hàng thay đổi hành vi tiêu dùng và kỳ vọng về sản phẩm, dịch vụ?“, ông lý giải.

Ví dụ điển hình là các tính năng trên ứng dụng ngân hàng điện tử Techcombank Mobile, mới ra mắt đầu năm 2022, được xây dựng dựa trên ý kiến đóng góp từ 4.000 khách hàng của Techcombank. Hiện tại cứ 2 tuần/lần, Techcombank liên tục cập nhật thêm những tính năng mới trên ứng dụng Techcombank Mobile dành cho khách hàng cá nhân. Tổ dự án cũng được yêu cầu kiểm thử liên tục với sản phẩm để giảm thiểu cao nhất rủi ro gian lận, hay mạo danh. Song ông Jens cho rằng điều đó chưa đủ.

“Chúng tôi phải xác định xem những năng lực, hay tính năng nào có thể cho ra mắt trên nền tảng ứng dụng mới để cải thiện giao diện và giúp khách hàng giao dịch thuận tiện. Tiếp đó, chúng tôi cần lắng nghe từ phía khách hàng thông qua các kênh tương tác, xem họ đánh giá ra sao, có nhu cầu như thế nào khi sử dụng ứng dụng. Từ đó, ngân hàng sẽ tiếp tục có những thay đổi phù hợp nhằm đảm bảo trải nghiệm khách hàng xuyên suốt nhất có thể” – ông Jens Lottner nói.

Theo CEO Jens Lottner, mục tiêu xuyên suốt của Techcombank là nâng tầm giá trị và mang lại ý nghĩa nhiều hơn cho đời sống tài chính của người dân và doanh nghiệp Việt Nam. Để hiện thực mục tiêu ấy, ngân hàng hướng tới mở rộng thị phần khách hàng và tiếp cận nhiều khách hàng nhiều hơn. Trên hành trình đó, công nghệ và dữ liệu số hóa sẽ đóng vai trò quan trọng. “Rõ ràng khi số lượng và dữ liệu khách hàng tăng lên, thì mức độ hoạt động hay lưu lượng hoạt động trên các ứng dụng số hóa của chúng tôi cũng phải tăng tốc phù hợp” – ông nói.

Vị CEO này chia sẻ, với số lượng khách hàng hiện hơn 10 triệu người, và tăng trưởng khoảng hơn một triệu người mỗi năm, áp lực về chuyển đổi cách thức vận hành cũng tỷ lệ thuận, nhằm đảm bảo trải nghiệm khách hàng trên nền tảng số, cũng như tại các chi nhánh. Muốn làm được điều đó, đòi hỏi ngân hàng phải đẩy mạnh hơn nữa năng lực phân tích dữ liệu và am hiểu khách hàng tốt hơn. Đó là mục tiêu của Techcombank trong nhiều năm tới chứ không phải chỉ là trong hành trình 5 năm hiện tại.

CASA của Techcombank đã vượt mức 50% vào cuối năm 2021, là ngân hàng dẫn đầu thị trường, cũng là hiện tượng đầu tiên và duy nhất tại Việt Nam cho đến thời điểm này có CASA chiếm hơn một nửa tổng huy động tiền gửi. Cuối tháng 9/2022, CASA tại Techcombank giảm nhẹ cuống 46.5%, song vẫn giữ vững vị thế đứng đầu.

“Chúng tôi am hiểu khách hàng và nhận diện được nguyên nhân khiến cho CASA giảm nhẹ do nhu cầu đầu tư cũng như dòng tiền của các nhóm khách hàng thay đổi, bên cạnh tác động của room tín dụng hạn chế khiến khách hàng phải rút tiền. Từ đây, ngân hàng đã có các giải pháp để thúc đẩy chỉ số này tăng trở lại, như đầu tư nhiều hơn về nền tảng công nghệ để hỗ trợ khách hàng quản lý gia sản tốt hơn, qua đó thu hút thêm nguồn CASA. Tỷ lệ tiền gửi không kỳ hạn trong tổng nguồn vốn huy động có thể giảm ở thời điểm này, nhưng khi thị trường ổn định hơn thì tình hình sẽ khả quan hơn và Techcombank tự tin giữ vị trí số 1 về CASA trên thị trường” – ông Jens nói.

Theo CEO Techcombank, đạt được CASA cao đồng nghĩa với việc Techcombank sẽ trở thành một trong những ngân hàng giao dịch chính của khách hàng ở hầu khắp các vùng miền tại Việt Nam. Thêm vào đó, CASA cao còn giúp ngân hàng có nguồn vốn rẻ dồi dào, giúp thuận tiện hơn cho đầu tư. Song quan trọng hơn tất cả, Techcombank muốn hướng đến mục tiêu trở thành ngân hàng đóng góp nhiều giá trị nhất cho đời sống tài chính của các doanh nghiệp, cũng như người dân Việt Nam.

Techcombank sẽ tiếp tục đầu tư mạnh mẽ hơn cho nền tảng công nghệ và dữ liệu, bởi khi hướng tới các chỉ số tài chính như trên, ngân hàng sẽ phải chuyển đổi mô hình kinh doanh nhanh hơn để có thể áp dụng mô hình hoạt động mới, dựa trên am hiểu và dự đoán tốt nhất và đúng nhất nhu cầu khách hàng.

Tổng Giám đốc Techcombank cho biết, ngân hàng hiện đã thực hiện 20% trong tổng số 500 triệu USD kế hoạch đầu tư cho giai đoạn 5 năm 2021 – 2025. Sắp tới, ngân hàng sẽ tiếp tục đầu tư mạnh hơn, trong đó chú trọng tới phát triển cơ sở dữ liệu và trải nghiệm khách hàng. “Chúng tôi vẫn muốn tốc độ chuyển đổi số tại Techombank phải nhanh hơn để có thể cung cấp tốt nhất các sản phẩm, dịch vụ phù hợp với nhu cầu của khách hàng”, ông nói.

Techcombank đang là ngân hàng hàng đầu Việt Nam, chỉ đứng sau Vietcombank về quy mô lợi nhuận. Ngân hàng đặt mục tiêu lợi nhuận cho năm 2022 ở mức 27 nghìn tỷ đồng, tức khoảng 1,2 tỷ USD. Trước thời điểm hiện tại, Techcombank đã có gần một thập kỷ tăng trưởng liên tục, và ngân hàng đang hướng tới con số tỷ USD, tương đương 47 nghìn tỷ đồng vào năm 2025.

Tuy nhiên, ông Jens Lottner cho biết ngân hàng rất tự tin với các mục tiêu trên. Thậm chí ông nói vui: “Hội đồng quản trị của Techcombank chỉ cho phép chúng tôi rút ngắn thời gian về đích, hoặc tăng thêm các chỉ số tài chính chứ không có chiều ngược lại“. Techcombank lạc quan vốn hóa 20 tỷ USD sẽ đạt được, và vị CEO tin rằng ngân hàng sẽ hoàn thành mục tiêu ấy sớm hơn 1 năm so với thời hạn, tức là vào năm 2024.

Không chủ quan trước những biến động của thị trường tài chính hiện nay, song theo CEO của Techcombank, mọi chỉ số phát triển vẫn đang rất “ổn”.

Thứ nhất, là góc nhìn của nhà đầu tư về môi trường Việt Nam. Hiện nay, Việt Nam là điểm sáng trong bức tranh kinh tế thế giới. Chẳng hạn, nhiều nước có tỷ lệ lạm phát 2 chữ số nhưng ở Việt Nam được kiểm soát ở mức chỉ 3%, trong lúc GDP tăng trưởng ấn tượng ở 7%. Nguồn vốn FDI đến Việt Nam cũng ngày càng nhiều hơn. Các công ty định hạng tín nhiệm quốc tế uy tín đều nâng mức xếp hạng tín nhiệm quốc gia của Việt Nam. “Mặc dù có những thách thức, nhưng xét một cách tương đối, chúng tôi chắc chắn tình hình của Việt Nam tích cực hơn nhiều các quốc gia trong khu vực và trên thế giới” – ông Jens Lottner nhấn mạnh.

Khi nền kinh tế Việt Nam ổn định, theo CEO của Techcombank, ngành tài chính ngân hàng tất yếu cũng ổn định. Vài năm qua ngành tài chính ngân hàng có lợi nhuận khá tốt và phát triển lành mạnh nhờ chính sách điều hành ổn định, nên dù năm nay có thể giảm đôi chút, nhưng so với khu vực thì vẫn rất tốt.

KẾT QUẢ NỔI BẬT 9 THÁNG ĐẦU 2022

• Lợi nhuận trước thuế đạt 20,8 nghìn tỷ đồng, hiện đứng đầu khối ngân hàng tư nhân. Tổng thu nhập hoạt động tăng 16,9% so với cùng kỳ, đạt 31,5 nghìn tỷ đồng

• Tỷ lệ tiền gửi không kỳ hạn (CASA) và tỷ suất lợi nhuận trên tổng tài sản (ROA) cao, tiếp tục ở vị thế đầu ngành, đạt 46,5% và 3,6%

• Tỷ lệ an toàn vốn (CAR) theo Basel II đạt 15,7%, tăng 68% so với cùng kỳ

• Quý 3/2022, Techcombank thu hút thêm hơn 300.000 khách hàng mới, nâng tổng số khách hàng lên 10,4 triệu

• Tổ chức xếp hạng tín nhiệm quốc tế Moody’s đánh giá Techcombank là ngân hàng có mức độ uy tín cao nhất trong số các Ngân hàng tại Việt Nam, với các điểm mạnh nổi bật về vốn và khả năng sinh lời.

• Techcombank được tạp chí tài chính danh tiếng Global Finance trao giải “Ngân hàng số tốt nhất cho khách hàng” tại Việt Nam. Đến nay, Techcombank là ngân hàng đầu tiên và duy nhất tại Việt Nam được Global Finance vinh danh giải thưởng uy tín này.

• Techcombank dành nguồn lực lớn cho các hoạt động CSR. Khoảng 11,8 nghìn tỷ dư nợ đã được Ngân hàng tái cơ cấu cho khách hàng kể từ khi đại dịch covid bắt đầu, đồng thời, hỗ trợ khách hàng thông qua giảm lãi suất là 540 tỷ đồng trong năm 2021. Ngân hàng cũng dành đến 400 tỷ đồng cho các hoạt động phòng chống covid năm 2021, bao gồm ủng hộ quỹ vắc-xin, đóng góp xây dựng bệnh viện điều trị COVID-19 và trang thiết bị y tế, cũng như hỗ trợ trực tiếp tới các bệnh nhân và gia đình của họ.

 

Thuộc dự án Inside GemTechnology do TopDev hợp tác cùng Techcombank triển khai, chuỗi nội dung thuần “Tech” độc quyền được chia sẻ bởi đội ngũ chuyên gia Công nghệ & Dữ liệu tại Techcombank sẽ được cập nhật liên tục tại chuyên mục Tech Blog | Techcombank Careers x TopDev. Cùng theo dõi & gặp gỡ các chuyên gia bạn nhé!

 

Các cơ hội việc làm tại Techcombank

Techcombank: Đích đến của ngân hàng số là thấu hiểu cảm xúc người dùng

Ở thời đại thói quen thanh toán đang dịch chuyển dần sang xu hướng không dùng tiền mặt, hãy thử hình dung 1 ngày chi tiêu của một người trẻ để thấy chỉ cần một chiếc điện thoại thông minh sử dụng các app thanh toán thì mọi giao dịch mua bán chỉ mất vài giây.

Từ việc gọi một chiếc xe công nghệ để đi làm, đặt đồ ăn, thức uống, mua sắm các sản phẩm tiêu dùng như: sách, đồ tiêu dùng, quần áo, mỹ phẩm; mua vé máy bay, đi xem phim, đi ăn nhà hàng hay mua sắm ở cửa hàng tiện lợi, đến gửi tiết kiệm, đầu tư, vay mua trả góp,… người dùng đều có thể thực hiện qua app ngân hàng, ví điện tử…

Với thế hệ mà smartphone trở thành vật bất ly thân, đặc biệt đối với những người trẻ, ưa chuộng trải nghiệm công nghệ, xu hướng tài chính không tiền mặt đang ngày càng phát triển mạnh mẽ. Theo số liệu thống kê từ Ngân hàng Nhà nước tính đến tháng 4/2022, giao dịch thanh toán không dùng tiền mặt tăng 69,7% về số lượng, 27,5% về giá trị; giao dịch qua internet cũng tăng tương ứng 48,39% và 32,76%; qua điện thoại di động tăng tương ứng 97,65% và 86,68%; qua mã QR tăng tương ứng 56,52% và 111,62% so cùng kỳ năm 2021.

Cùng với sự dịch chuyển của người dùng, nhiều phương thức thanh toán số đã ra đời và được đón nhận như: thẻ chip, QR Code, ứng dụng mobile banking… Trong cuộc đua thanh toán số, các ngân hàng thậm chí đã tích hợp nhiều phương thức thanh toán trên 1 app để thỏa mãn mọi nhu cầu thanh toán tiêu dùng của khách hàng.

Ứng dụng Techcombank Mobile của Ngân hàng kỹ thương Việt Nam (Techcombank) là một ví dụ điển hình cho khả năng gói gọn mọi nhu cầu tài chính trên một app điện thoại. Với Techcombank Mobile, người dùng có thể rút tiền từ ATM không cần thẻ, thanh toán, quét và chuyển khoản qua mã QR cá nhân chỉ trong vòng 30 giây, thanh toán các hóa đơn dễ dàng với tính năng tự động (autobill)… Tất tần tật tiền vào, tiền ra đều có thể xử lý qua app với vài thao tác vừa nhanh, vừa tiện, lại vừa dễ dàng quản lý chi tiêu.

Không chỉ thanh toán, Techcombank Mobile còn là một công cụ giúp người dùng quản lý tài chính cá nhân hiệu quả. Hệ thống có biểu đồ thu chi hiển thị dòng tiền vào ra giúp người dùng thống kê tình hình chi tiêu trong tháng và gợi ý tiết kiệm với số tiền phù hợp đồng thời hỗ trợ lên kế hoạch tích lũy phù hợp với tình hình tài chính. App còn gợi ý và giúp người dùng làm quen với các sản phẩm đầu tư như: Tiết kiệm, trái phiếu, chứng chỉ quỹ,… và chủ động theo dõi hiệu quả đầu tư. Đây là vòng tròn giải pháp khép kín nhằm giúp người dùng quản lý hiệu quả dòng tiền và nâng cao sức khỏe tài chính.

Cá nhân hóa đến mức tối đa là cách Techcombank gia tăng điểm chạm cảm xúc với người dùng. Nếu đã từng ấn tượng với câu hỏi của mạng xã hội Facebook: Hôm nay, bạn cảm thấy thế nào? Thì ắt hẳn khi mở app Techcombank Mobile, người dùng sẽ chạm ngay vào sự ấm áp với câu chào được cá nhân hóa: “Chào (buổi) + tên đăng ký của bạn”.

Với người Việt, lời chào cao hơn mâm cỗ nên “cú chạm” cảm xúc đầu tiên của app khiến người dùng cảm thấy như gặp lại một người thân quen. Chưa dừng lại ở đó, giao diện của app Techcombank Mobile còn cho phép người dùng có thể thay đổi hình nền.

Điều đặc biệt, Techcombank đã mang đến những thiết kế đậm chất riêng khi 100% màn hình nền được chính đội ngũ thiết kế của ngân hàng lên ý tưởng và vẽ, lấy cảm hứng từ những nét văn hóa truyền thống, những lễ hội đặc trưng, những công trình, danh lam nổi tiếng của Việt Nam. Các giao diện này còn được cập nhật theo mùa giúp người dùng có thể thường xuyên thay đổi hình nền theo tâm trạng, sở thích.

Ngoài ra, khách hàng cũng được tùy thích lựa chọn từ 2-6 số cuối của tài khoản trong dãy số có độ dài 10, 12, 14 số. Đây là một tính năng khiến người dùng cảm thấy dễ chịu vì được lựa chọn những con số dễ nhớ, gần gũi với bản thân như số ngày sinh, ngày kỷ niệm, những con số may mắn của bản thân.

Không chỉ chăm chút cho những thiết kế cá nhân hóa trên Techcombank Mobile, ở dòng thẻ thanh toán quốc tế Techcombank Visa Platinum cũng được Techcombank “biến hóa” lên đến 10 mẫu để giúp người dùng có thể thoải mái thể hiện phong cách, cá tính theo sở thích. Khách hàng có thể tùy chọn mẫu thẻ phù hợp sở thích ngay trên app. Bên cạnh việc đầu tư lớn cho thiết kế giao diện thẻ mà còn tạo ra nhiều giá trị ưu đãi để gia tăng những trải nghiệm cho người dùng khi sở hữu thẻ thanh toán quốc tế của ngân hàng.

Với dòng thẻ đa phong cách này, Techcombank kèm theo hàng loạt ưu đãi: hoàn toàn miễn phí mở thẻ và giao tận nhà. Người dùng thoải mái giao dịch với phí 0 đồng hoàn 1% không giới hạn cho khách hàng chi tiêu trên 5 triệu/tháng; với khách hàng là thành viên Aspire sẽ được hoàn 1,5% khi chi tiêu từ 15 triệu đồng và 2% cho mức chi 35 triệu đồng trở lên.

Tạo sự khác biệt ở những chi tiết nhỏ, Techcombank cho thấy khả năng thấu hiểu sở thích, thói quen người dùng và nỗ lực để tạo những điểm chạm cảm xúc tinh tế.

 

Chuyển đổi số là trong lĩnh vực ngân hàng đang diễn ra một cách mạnh mẽ. Đây là cuộc đua gay cấn của các nhà băng để thu hút sự chú ý của khách hàng. Với vai trò tiên phong dẫn dắt chuyển đổi số của ngành, Techcombank luôn đi đầu trong việc tạo ra những trải nghiệm thú vị, tiện lợi cho người dùng. Tuy nhiên, Techcombank đã chọn một hướng đi riêng trong hành trình chuyển đổi số: đó là câu chuyện thấu hiểu người dùng dựa trên dữ liệu và khoa học hành vi từ đó tạo ra  hệ sinh thái sản phẩm của ngân hàng được xây dựng trên tiêu chí lấy “khách hàng là trung tâm”.

Để tạo ra một thao tác đơn giản, tiện lợi cho người dùng trên không gian số là sự đầu tư, tính toán phức tạp của một đội ngũ, là một quá trình vừa xây giải pháp, vừa lấy ý kiến khách hàng để chỉnh sửa nhằm đem đến những trải nghiệm tốt nhất. Chẳng hạn, chỉ trong khoảng 3 giây, thông qua hệ thống định danh điện tử (eKYC), thẻ tín dụng của khách hàng có thể được phê duyệt, phát hành.

Đằng sau những cái nhất đó là một sự đầu tư “khủng” về con người, công nghệ. Techcombank đã dành 500 triệu USD cho chuyển đổi số hóa đến 2025. Chỉ tính riêng năm 2021, Techcombank đã tuyển 3.000 nhân viên, 700 người trong số đó làm về công nghệ, dữ liệu, phát triển bảo mật vận hành…

Nói về khả năng bảo mật của ngân hàng, ông Pranav Seth chia sẻ: “Điều thú vị trong lĩnh vực này, chúng ta đang làm việc với tiền của khách hàng. Chúng tôi quan tâm đến cách mà khách hàng cảm thấy dù họ đang gửi tiền cho ai, người đó đã nhận được tiền và hoàn thành. Những điều nhỏ nhặt đó rất quan trọng. Để đảm bảo mọi thứ đơn giản, anh phải củng cố nó bằng công nghệ phức tạp. Chúng tôi sử dụng một trong những tiêu chuẩn bảo mật tốt nhất thế giới của FIDO Security Alliance, sử dụng tất cả những tiêu chuẩn để tạo ra một môi trường hoàn toàn không mật khẩu, những thuật toán khác nhau để bảo vệ ứng dụng trên điện thoại của bạn.”

“Chúng tôi trân trọng cách mà họ cảm thấy” là câu trả lời của ông Pranav Seth, người đang dẫn dắt hành trình chuyển đổi số của Techcombank về nguyên tắc cốt lõi để ngân hàng không ngừng cải tiến những sản phẩm số để tạo nên những trải nghiệm tuyệt vời cho người dùng.

Gói gọn sản phẩm trên 1 app và trân trọng cảm xúc, trải nghiệm của người dùng, Techcombank đã khiến cho trải nghiệm ngân hàng số của khách hàng trở nên thú vị hơn. Bởi người dùng cảm nhận được chất riêng biệt, cá nhân, được nâng niu cảm xúc trong một thế giới tưởng chừng chỉ được đo lường bằng những tính từ lý tính: an toàn, tiện lợi, dễ dàng. Techcombank đã chọn một con đường khó khăn hơn nhưng thú vị hơn khi “thổi” vào đó những tính từ thiên về cảm xúc: hài lòng, thích thú, thú vị, tự hào…

Đó là cảm giác hài lòng khi chạm vào một ứng dụng chạy mượt, nhanh chóng; là cảm giác thú vị khi được tùy biến ứng dụng theo sở thích cá nhân, sở hữu dãy số mang đậm dấu ấn riêng; cảm giác tự hào khi hành trình tích lũy của mình đã tạo ra kết quả… Đây là những điểm chạm không thể đo đếm bằng những con số nhưng nó có sức mạnh vô hình rất lớn để một thương hiệu ngày càng in đậm vào tâm trí người dùng.

Một nhà cung cấp dịch vụ sẽ không bao giờ biết được khi nào họ sẽ chạm được đến cảm xúc, lòng tin của khách hàng. Những giải pháp mang đến sự an toàn, tiện lợi, dễ dàng là chuyện đương nhiên có thể ngân hàng số nào cũng có, chỉ riêng những trải nghiệm cảm xúc đặc biệt như niềm vui, sự tự hào, hài lòng… được đính kèm trong mỗi trải nghiệm số thì chỉ những người thật sự thấu hiểu, trân trọng cảm xúc và sẵn lòng dốc sức thì mới có thể tạo ra được.

Thuộc dự án Inside GemTechnology do TopDev hợp tác cùng Techcombank triển khai, chuỗi nội dung thuần “Tech” độc quyền được chia sẻ bởi đội ngũ chuyên gia Công nghệ & Dữ liệu tại Techcombank sẽ được cập nhật liên tục tại chuyên mục Tech Blog | Techcombank Careers x TopDev. Cùng theo dõi & gặp gỡ các chuyên gia bạn nhé!

 

Các cơ hội việc làm tại Techcombank

Security Engineer

Quận Cầu Giấy, Hà Nội - Quận 1, Hồ Chí Minh

Ngân Hàng

“Con người là nhân tố quyết định để chuyển đổi số thành công”

Đó là khẳng định của ông Nguyễn Anh Tuấn – Giám đốc Khối Công nghệ (CIO), Ngân hàng Techcombank tại Tọa đàm AWS Summit ASEAN 2022 diễn ra tại Singapore vào ngày 17-18/5 vừa qua…

Con người là nhân tố quyết định để chuyển đổi số thành công.
Con người là nhân tố quyết định để chuyển đổi số thành công.

Theo ông Anh Tuấn, Techcombank đầu tư đến 500 triệu USD cho công nghệ giai đoạn 2021- 2025, trong đó tập trung vào việc dịch chuyển và hiện đại hóa các ứng dụng hiện có trên nền tảng điện toán đám mây.

CLOUD FIRST VÀ NHÂN TÀI

Điện toán đám mây đang dần hình thành nên “cuộc đua” mới trong việc ứng dụng công nghệ trên toàn hệ thống ngân hàng thời gian gần đây. Theo “Chiến lược phát triển công nghệ thông tin ngành Ngân hàng Việt Nam đến năm 2025, định hướng đến 2030”, mục tiêu đến năm 2025 có 60% ngân hàng Việt Nam sử dụng dịch vụ điện toán đám mây, và tăng lên 100% vào năm 2030.

Mặc dù đã được nhiều ngân hàng xác định tầm quan trọng từ sớm, nhưng chỉ một vài nhà băng thật sự mạnh tay đầu tư vào công nghệ, trong đó tiên phong với chiến lược “Cloud First” là Techcombank. Tháng 9/2021, ngân hàng này công bố lựa chọn Amazon Web Services (AWS) làm đối tác cung cấp dịch vụ điện toán đám mây, nhằm nâng cao chất lượng hạ tầng công nghệ và trải nghiệm khách hàng.

Theo đó, Techcombank sẽ nâng cấp hệ thống công nghệ bằng cách tận dụng dịch vụ đám mây hàng đầu của AWS, xây dựng nền tảng dữ liệu tích hợp cho phép ngân hàng đưa ra các quyết định theo thời gian thực, tối ưu hóa hạ tầng nhằm tăng tốc sáng tạo sản phẩm và dịch vụ mới, từ đó nâng cao chất lượng dịch vụ và trải nghiệm trực tuyến cho khách hàng.

Chia sẻ tại Tọa đàm AWS Summit ASEAN tháng 5/2022 vừa qua, ông Nguyễn Anh Tuấn – CIO Techcombank cho biết: nghiên cứu mới nhất của các công ty tư vấn tài chính đáng tin cậy chỉ ra rằng khách hàng của các ngân hàng Việt Nam ngày càng hiểu biết hơn về kỹ thuật số, với hơn 70% thích mua các sản phẩm hoặc dịch vụ ngân hàng thông qua các kênh số.

“Chỉ công nghệ đám mây mới có thể đáp ứng tốt nhất nhu cầu của khách hàng, mang đến trải nghiệm dịch vụ xuyên suốt và liền mạch. Hơn nữa, điện toán đám mây có thể hỗ trợ chúng tôi phân tích hành vi, thấu hiểu để cải thiện hiệu quả dịch vụ và các sản phẩm được cung cấp tới khách hàng”, ông Tuấn nói.

&Ocirc;ng Nguyễn Anh Tuấn, CIO của Techcombank chia sẻ tại Tọa đ&agrave;m AWS Summit ASEAN 2022.
Ông Nguyễn Anh Tuấn, CIO của Techcombank chia sẻ tại Tọa đàm AWS Summit ASEAN 2022.

Hướng đi mới luôn có thách thức. Thách thức đầu tiên mà CIO Techcombank nhận diện là thiếu nhân sự có chuyên môn và năng lực về điện toán đám mây. “Trong thời gian đầu triển khai dự án, rất ít thành viên có kiến thức và kinh nghiệm về điện toán đám mây phù hợp”, ông Anh Tuấn chia sẻ.

Lúc đó, Techcombank đã phải vận dụng đồng thời nhiều giải pháp như tuyển dụng nhân tài trên toàn cầu với các kỹ năng đám mây cần thiết, thúc đẩy đào tạo và tái đào tạo lực lượng nhân sự trong ngân hàng để nâng cao năng lực, tối ưu hóa mạng lưới chuyên gia để quản trị rủi ro…

Nhờ những giải pháp quyết liệt, từ cuối năm 2021 Techcombank đã triển khai thành công Chương trình AWS Skills Guild cho 700 cán bộ nhân viên. Đây là chương trình hỗ trợ kỹ năng toàn diện được thiết kế để phát triển năng lực điện toán đám mây và dự kiến sẽ mở rộng đào tạo cho 2.000 nhân viên vào cuối năm 2022.

THỬ THÁCH LỚN NHẤT CHÍNH LÀ DÁM THAY ĐỔI

Anh Nguyễn Hà Thiên Ân, Giám đốc Phát triển phần mềm, quản lý sáng kiến chiến lược về cloud của Techcombank, chia sẻ: “Thử thách lớn nhất chính là sự thay đổi. Tại Việt Nam, Techcombank là ngân hàng tiên phong triển khai, nên mọi việc đều quá mới mẻ với đội ngũ cán bộ nhân viên. Tư duy, hệ thống, quy định, quy trình, thiết kế, cách làm việc… đều phải thay đổi và cập nhật liên tục”.

“Từ những gì được đào tạo, kinh nghiệm và mô hình làm việc hiện có, chúng tôi áp dụng kết hợp vào công việc – học đi đôi với hành. Từ kiến thức nền tảng ban đầu, chúng tôi vận dụng hợp lý để phù hợp vào thực tế ngân hàng. Thử thách thật sự đến ở giai đoạn này: đâu là năng lực có sẵn, đâu là năng lực cần phải có khi lên cloud; sự khác biệt là gì, ảnh hưởng đến tổ chức như thế nào và lộ trình thay đổi ra sao,…  Techcombank đã tạo ra môi trường làm việc mở để tất cả chúng tôi cùng nhau dám làm, dám thử nghiệm, dám thay đổi và hoàn thiện dần năng lực”, anh Thiên Ân nói thêm.

Kondor – hệ thống quản lý giao dịch của khối Giao dịch Toàn cầu (GTS – Techcombank) – được xem là một trong những ứng dụng phức tạp nhất từng được ngân hàng dịch chuyển lên cloud do bản chất hệ thống phức tạp, mô hình triển khai không được thiết kế theo hướng cloud native, kho dữ liệu lớn… Tuy nhiên, tháng 3/2022, Finastra – một trong những công ty hàng đầu thế giới về công nghệ được nhiều nhà băng tin cậy chọn làm đối tác chiến lược, ghi nhận Techcombank là ngân hàng đầu tiên của Việt Nam dịch chuyển thành công Kondor lên Cloud.

Về hệ thống này, anh Nguyễn Mạnh Tâm – Quản lý Cao cấp Phát triển Phần mềm, Khối Công nghệ Techcombank, phụ trách dự án, cho biết: Kondor là ứng dụng phức tạp và chưa từng có đơn vị nào triển khai lên môi trường điện toán đám mây. Kết quả này thể hiện sự quyết tâm, năng lực và nỗ lực của CBNV trong tiếp cận nền tảng công nghệ mới. Thành công này đồng thời khẳng định Techcombank hoàn toàn có đủ năng lực để triển khai các hệ thống phức tạp khác lên cloud.

Những lần xuyên đêm kiểm thử, họp xuyên biên giới để tìm giải pháp khắc phục… với Tâm và đồng nghiệp luôn là thời điểm đáng nhớ. “Đây là thành quả của sự nỗ lực, cùng nhau gắn kết, và chúng tôi càng thấm thía hơn giá trị về con người mà Techcombank đã luôn định hướng cho mọi hoạt động”, anh Tâm nói.

Hành trình dịch chuyển lên cloud của Techcombank vẫn đang tiếp tục, với con người là nhân tố trung tâm quyết định sự thành công. Bất kỳ sự thay đổi chiến lược nào cũng đều khó khăn, và việc tạo động lực là yếu tố cơ bản để CBNV gắn bó và cùng nhau thực hiện.

“Tại Techcombank, cloud chưa bao giờ là dự án độc lập, mà trở thành một phần không thể thiếu trong mọi hoạt động hàng ngày của cả ngân hàng. Hành trình này trước hết là vì khách hàng, bởi các ứng dụng trên cloud sẽ cho phép chúng tôi phát triển sản phẩm và dịch vụ nhanh hơn, có đầy đủ thông tin hơn để phát triển các dịch vụ cá nhân hóa theo trải nghiệm người dùng”, CIO của Techcombank khẳng định.

Thuộc dự án Inside GemTechnology do TopDev hợp tác cùng Techcombank triển khai, chuỗi nội dung thuần “Tech” độc quyền được chia sẻ bởi đội ngũ chuyên gia Công nghệ & Dữ liệu tại Techcombank sẽ được cập nhật liên tục tại chuyên mục Tech Blog | Techcombank Careers x TopDev. Cùng theo dõi & gặp gỡ các chuyên gia bạn nhé!

 

Các cơ hội việc làm tại Techcombank

Hơn cả một phương pháp, DevSecOps chính là “triết lý bảo mật” tại Techcombank

Là một thành viên mới tại Techcombank, anh Bùi Nguyễn Tuấn Minh hiện đang là Giám đốc DevSecOps, đây cũng là công việc đầu tiên của anh sau những năm tháng làm việc tại Singapore. Anh cũng là một trong những người góp phần mang lại những góc nhìn mới trong các phương pháp phát triển phần mềm của Techcombank.

Được biết, Techcombank là một trong những đơn vị tiên phong ứng dụng phương pháp DevSecOps trong việc phát triển sản phẩm. Đây cũng được xem là một trong những định hướng giúp các ngân hàng số hóa và phát triển mạnh mẽ trong tương lai. Sau đây là những chia sẻ của anh Bùi Nguyễn Tuấn Minh về công việc DevSecOps tại Techcombank.

Anh có thể chia sẻ một chút về môi trường làm việc tại Techcombank?

Khi chuyển công tác từ Singapore về Việt Nam, mình nhận thấy môi trường và cách thức làm việc không khác mấy, mọi thứ thậm chí còn phát triển nhanh hơn, không khí làm việc dân chủ, có định hướng rõ ràng. Techcombank luôn tạo điều kiện tốt nhất để nhân viên thực thi những công nghệ mới mà nhận định tốt cho tổ chức. Ban lãnh đạo cũng là những nhân sự cấp cao từ các nước phát triển như Mỹ, UK,… nên rất có tầm nhìn và tâm thế cởi mở, tạo môi trường làm việc lành mạnh nên anh không thấy có gặp khó khăn gì. Ngược lại, anh còn thấy có nhiều thuận lợi để phát triển hơn trong công việc khi làm việc trong môi trường Techcombank. 

Trong ngành tài chính ngân hàng đặc thù có sự kiểm soát kỹ lưỡng từ các cơ quan, và ngân hàng nhà nước. Điều này vừa mang lại khó khăn cũng vừa mang lại thuận lợi cho việc ứng dụng DevSecOps trong phát triển phần mềm.

Cái tên DevSecOps thật ra là để đề cao cái chủ trương phát triển sản phẩm của ngân hàng, đặc biệt là các tổ chức tài chính trong việc bảo mật thông tin, đây là một tiêu chí cực kỳ quan trọng trong tư duy phát triển sản phẩm. Có thể nói DevSecOps chính là định hướng của các cấp lãnh đạo cao nhất Techcombank, luôn đặt vấn đề bảo mật thông tin của khách hàng lên hàng đầu, từ đó đảm bảo sự an toàn cho tài sản của khách hàng một cách tuyệt đối. Có lẽ là đây là một trong những yếu tố cạnh tranh giữa các ngân hàng trong bối cảnh vài năm gần đây.

Anh có thể chia sẻ về cách mà DevSecOps phản ánh lên mọi ngóc ngách như thế nào?

Mô hình Techcombank đang vận hành giai đoạn chuyển đổi số (Digital transformation), ở giai đoạn này này sẽ có ít nhiều sự khác biệt so với những gì mà chúng ta từng biết về các mô hình DevSecOps bên ngoài.

Mô hình chia thành 03 nhóm:

  • Core Team (Platform Team): Xây dựng nền thô Platform, Standard Framework, tất cả những thứ liên quan đến DevSecOps, không chỉ là mỗi CI/CD. 
  • DevSecOps Support: Vận hành/ áp dụng các Framework vào dự án, giúp dự án xây dựng mô hình CI/CD và áp dụng vào trong mỗi Line Project hay mỗi Line Development.
  • Vận hành nền tảng infrastructure từ platform (UX) đến application: Team này là team Non-production. Làm nhiệm vụ dựng IaC code cho môi trường non-production và sau đó vận hành và chạy môi trường đó một cách tự động.

Hơn thế nữa, tính bảo mật (Security) và đặc biệt là bảo mật thông tin (Information Security) là kim chỉ nam cực kỳ quan trọng. Một số hoạt động được thực hiện bởi DevSecOps trong Techcombank:

  • Tự động hóa việc liên tục tích hợp và triển khai phần mềm (CI/CD), từ đó đảm bảo các phiên bản phần mềm trong suốt quá trình phát triển được kiểm tra và đối chiếu liên tục giúp đảm bảo tính ổn định và đáng tin cậy cũng như các tính năng được cập nhật và xử lý đầy đủ, giảm thiểu thời gian triển khai và đảm bảo tính linh hoạt trong quá trình phát triển phần mềm.
  • Tự động hóa quy trình kiểm tra bảo mật để đảm bảo tính năng an toàn của ứng dụng từ những bước đầu phát triển và xuyên suốt trong quá trình phát triển phần mềm nhằm bảo vệ tốt thông tin và tài sản của khách hàng, giúp tăng cường niềm tin và độ tin cậy đối với ngân hàng.
  • Tự động hóa việc kiểm soát chất lượng phần mềm, đảm bảo rằng chỉ những ứng dụng an toàn và đảm bảo tuân thủ các tiêu chuẩn chất lượng do Techcombank đề ra mới được triển khai và đưa vào hoạt động.
  • Tự động hóa việc kiểm thử liên tục: Truyền tải kiến thức về DevSecOps cho đội ngũ phát triển và vận hành để họ có thể tự cập nhật và đưa ra các giải pháp tự động hóa và bảo mật trong chính những công việc hàng ngày.
  • Tự động hóa tất cả các tác vụ IT Operation

Theo anh, đâu là những thử thách khi triển khai DevSecOps?

Khi triển khai mô hình DevSecOps, điều khó khăn nhất chính là việc bạn sẽ tốn nhiều công sức hơn trong quá trình ra quyết định phát triển sản phẩm, quy trình sẽ ngặt nghèo và cần nhiều thời gian để thông qua hơn. Những mô hình như thế này chưa có khuôn khổ (framework) chuẩn nên phải liên tục đào tạo nghiệp vụ và kiến thức của nhân viên, đó cũng là một thử thách. Tuy nhiên, cũng có những thuận lợi nhất định, DevSecOps sẽ đảm bảo hoạt động IT của ngân hàng chắc chắn hơn, chặt chẽ hơn với người dùng, đảm bảo xác suất thấp về rủi ro có thể ảnh hưởng tới khách hàng. Tức là nếu bạn bám sát quy trình, thì có thể chỉ cần làm 1 lần là đã chuẩn hóa toàn bộ. 

Vậy đâu là cơ hội mà Techcombank đang thấy được khi ứng dụng DevSecOps?

Việc phát triển DevSecOps tại Techcombank luôn tập trung vào 03 yếu tố: Fast – Secure – Performance. Như chúng ta thường biết, ba yếu tố này ít khi nào tăng cùng lúc, một “ông” tiến thì đồng thời “ông” kia lùi. Tuy nhiên, DevSecOps là cách có thể khiến 03 yếu tố này cùng tiến lên song hành cho sự phát triển và yêu cầu khắt khe của Techcombank.

Techcombank hiện đang là đơn vị tiên phong trong việc triển khai DevSecOps trong các định chế tài chính cùng quy mô ở khu vực châu Á Thái Bình Dương. Với những khó khăn thử thách sẽ còn nhiều phía trước, nhưng anh nghĩ khi mọi thứ đạt được đúng mục tiêu đề ra thì thành quả sẽ rất xứng đáng.If you can make it here, you can make it anywhere. Cũng chính vì độ khó của nó, anh tin rằng khi các bạn Engineer nếu làm tốt sản phẩm ở Techcombank rồi thì chắc chắn làm ở đâu cũng vẫn sẽ làm được. 

Ban lãnh đạo Techcombank có chủ trương DevSecOps luôn là mũi nhọn, là cơ hội, là điểm cạnh tranh của Techcombank trong việc đưa ra sản phẩm số nhanh, chất lượng tốt và đảm bảo bảo mật. Đó cũng là cách Techcombank vượt qua giai đoạn chuyển đổi số, không tiếc chi phí cho sự phát triển các mũi nhọn then chốt của ngân hàng

Hành trang tôi luyện một DevSecOps Engineer: biến thử thách thành kim cương, những điều gì chờ đợi một Engineer khi làm việc tại Techcombank?

Môi trường làm việc thì sẽ làm mọi người bất ngờ, vì yêu cầu tính chuyên môn cao, chuyên nghiệp nhưng rất tạo điều kiện, cởi mở và bình đẳng. Có những trường hợp các bạn nhân viên 2K chưa có bằng tốt nghiệp vẫn trao đổi ý kiến với cấp trên, tôn trọng ý kiến và ý tưởng của nhân viên, rất dân chủ, làm điều gì cũng được giải thích lý do làm việc đó. Nhân viên làm ở đây không phải chỉ vì lương cuối tháng mà nhân viên DevSecOps đang làm cuộc cách mạng, có đóng góp trong quá trình making a change của Techcombank.

Mặc dù quy định về thời gian làm việc tại Techcombank khá quy cũ, nhưng Techcombank lại không có sử dụng thời gian làm thước đo năng lực của các bạn mà quan trọng là khả năng đảm bảo tiến độ và chất lượng công việc. Ban lãnh đạo luôn khuyến khích các bạn tìm thấy đam mê trong công việc tại môi trường Techcombank. Vị thế của Techcombank hiện nay là nhờ tính kỷ luật của một tập thể. 

Xin cảm ơn anh về những trao đổi rất bổ ích cho cộng đồng IT nói riêng, cũng như những ai đang quan tâm đến lĩnh vực banking nói chung.

Hiện tại, tôi đang làm việc cho team DevSecOps Platform tại Techcombank. Để giới thiệu qua về chức năng nhiệm vụ của bộ phận, thì DevSecOps Platform là một nền tảng tích hợp bảo mật vào mọi khía cạnh của quá trình phát triển phần mềm. Điều này bao gồm mọi thứ từ việc phát triển code, kiểm thử, triển khai, giám sát và bảo trì liên tục. Nền tảng được thiết kế để đảm bảo rằng bảo mật không phải là điều được tính đến sau cùng, mà là một phần không thể thiếu của quá trình phát triển từ đầu đến cuối.

Để đạt được điều này, DevSecOps platform sử dụng một loạt các công cụ, quy trình và công nghệ để tự động hóa và tối ưu hóa quá trình phát triển, đồng thời cũng đảm bảo bảo mật. Điều này được thể hiện qua những CI/CD pipeline bằng những công cụ giúp kiểm thử, phân tích mã nguồn, lưu trữ, tích hợp và triển khai tự động, liên tục.

Công việc chính của tôi hằng ngày:

  • Phát triển và duy trì DevSecOps Platform trên nền tảng điện toán đám mây Amazon Web Services. 
  • Các công cụ và hệ thống được chúng tôi triển khai cho DevSecOps gồm có: Gitlab, Jenkins, Nexus, SonarQube, Vault, EKS… Để giúp cho hệ thống triển khai nhanh chóng và đảm bảo tính co dãn, phục hồi, chúng tôi phát triển các building block cho hệ thống bằng Terraform, Terragrunt và TFE.
  • Tạo các module quản lý cấu hình với Puppet, Ansible và liên tục nghiên cứu các công nghệ mới để nâng cao tính năng và bảo mật của nền tảng.

Bên cạnh việc phát triển, chúng tôi cũng thực hiện đưa ra những tiêu chuẩn chung trong quy trình phát triển phần mềm, ví dụ như là xây dựng tiêu chuẩn Gitflow, xây dựng các thư viện dùng chung cho các pipeline CI/CD cũng như tự động hóa các công việc hàng ngày của các team khác bằng việc sử dụng code.

 


Thuộc dự án "InsideGem Technology" do Techcombank x TopDev triển khai, chuỗi nội dung thuần Tech "độc quyền" được chia sẻ bởi đội ngũ Tech Leader đến từ Silicon Valley tại Techcombank sẽ được cập nhật liên tục tại chuyên mục Tech Blog Techcombank x TopDev. Cùng theo dõi & gặp gỡ các chuyên gia bạn nhé!

 

Các cơ hội việc làm tại Techcombank

Bài viết liên quan

Infrastructure as code (IaC)

Bài viết đến từ anh Bùi Nguyễn Huy Hoàng - Quản lý DevSecOps DevSecOp team @Techcombank I. Tại sao lại sử dụng Infrastructure as Code? Những công việc như ảo hóa, điện toán đám mây (Cloud), container, tự động hóa (CI/CD) giúp đơn giản hóa công việc vận hành hành công nghệ thông tin (IT Operations). Việc triển khai, cấu hình, cập nhật và vận hành dịch vụ sẽ tiêu tốn ít thời gian và công sức hơn. Vấn đề sẽ được phát hiện và giải quyết nhanh chóng, các hệ thống luôn được cấu hình và cập nhật một cách đồng nhất. Những kỹ sư IT sẽ tiết kiệm được thời gian trong công việc vận hành hàng ngày, để có thể nhanh chóng thay đổi, học hỏi và cải tiến bản thân đáp ứng nhu cầu thay đổi liên tục của thế giới công nghệ. Tuy nhiên, ngay cả với những công cụ và nền tảng mới nhất, các [...]

DevSecOps Philosophy (Triết lý DevSecOps)

Bài viết đến từ Ngô Doãn Thông - DevSecOps Engineer    DevSecOps team @Techcombank Giới thiệu Trong 20 năm qua, DevOps đã cùng với Agile, thay thế cho mô hình phát triển Waterfall. Microservices được coi là công nghệ tiên tiến nhất để triển khai kiến trúc dịch vụ. Thời gian phát triển sản phẩm đã được giảm đi, triển khai tự động được thực hiện hàng tuần hoặc hàng ngày và cloud thì cung cấp khả năng tính toán, cơ sở hạ tầng, lưu trữ và mạng rất mạnh mẽ. Triết lý DevOps thường được tóm tắt bằng khẩu hiệu "move fast and break things", điều này có nghĩa là triển khai mọi thứ nhanh hơn, mạnh dạn hơn và sẵn sàng, phá bỏ các cấu trúc silo, rào cản, chấp nhận rủi ro và khắc phục nhanh từ những rủi ro đó. Tuy nhiên, có một yếu tố quan trọng chưa được đề cập tới. Các tổ chức áp dụng DevOps vẫn cần đáp ứng tiêu chuẩn an [...]

Data Lake – Nền tảng lý trí cho mọi quyết định tài chính

Anh Nguyễn Quang Huy từng có kinh nghiệm nhiều năm về Khoa học dữ liệu cũng như phát triển và quản lý Hệ thống Dữ liệu lớn (Big Data) khi công tác tại các tập đoàn đa quốc gia tại tại Sing và Mỹ. Được truyền cảm hứng từ những bài toán lớn trên hành trình số hóa mà Techcombank đang giải quyết cho thị trường ngân hàng, Anh Nguyễn Quang Huy đã quyết định quay trở về Việt Nam để đồng hành với đội ngũ Techcombank trong giai đoạn chuyển đổi số mạnh mẽ nhất từ trước đến nay.

Ở thời điểm hiện tại, anh đang giữ vị trí Director, Data Engineer tại Techcombank. Công việc chính của anh là phụ trách xây dựng các hoạt động, dự án liên quan đến Data Lake (Hồ dữ liệu) tại Techcombank. Hãy cùng nghe câu chuyện về Data Lake sẽ giải quyết những bài toán lớn nào cho hàng triệu khách hàng của Techcombank.

Theo anh đâu là tầm quan trọng của dữ liệu trong sự phát triển của Techcombank trong 5 năm tiếp theo?    

Trong tương lai, việc tận dụng dữ liệu sẽ đem lại trải nghiệm hoàn toàn tích cực và mới mẻ cũng như tạo được niềm tin cho khách hàng. Tại Việt Nam, đôi khi chúng ta sẽ có một khoảng cách nhất định giữa người gửi tiền là khách hàng và người giúp giữ tiền là ngân hàng. Để cải thiện điều đó, chiến lược đầu tư lâu dài vào dữ liệu sẽ giúp tăng tính minh bạch, và cải thiện trải nghiệm khách hàng thông qua những thông tin (insights) mà ngân hàng có được khi phân tích dữ liệu khách hàng.

Cụ thể, dựa trên dữ liệu của khách hàng trong quá trình sử dụng dịch vụ, ngân hàng có thể giúp khách hàng tạo thói quen tài chính khỏe mạnh, phân tích và đưa ra các gợi ý về việc cơ cấu tài chính cá nhân, đầu tư dài hạn/ ngắn hạn hoặc kế hoạch chi tiêu như thế nào theo từng thời kỳ.. Từ đó giúp khách hàng có những quyết định hợp lý, xây dựng một kế hoạch tài chính cá nhân cho hiện tại và cả trong tương lai. Điều này đã rất phổ biến ở các nước phát triển, do vậy ở Việt Nam đây sẽ là một cơ hội lớn trong những năm sắp tới để ứng dụng dữ liệu vào việc giải quyết những vấn đề tài chính/quản lý tài sản (Wealth Management) cho nhiều phân khúc khách hàng khác nhau.

Được biết hiện tại Techcombank đang tập trung khá nhiều nguồn lực cho Data Lake, vậy Data Lake có tầm quan trọng như thế nào về Big Data của lĩnh vực Banking?

Trước hết, có thể hiểu Data Lake (Hồ Dữ liệu) là một hệ thống dữ liệu tập trung, điểm khác biệt của nó so với Data Warehouse (Kho Dữ liệu) là cho phép lưu trữ & quản lý cả dữ liệu có cấu trúc và không có cấu trúc cùng một chỗ. Đặc biệt, nó còn có thể lưu trữ dữ liệu ở định dạng gốc mà không yêu cầu xử lý đặc biệt, không giới hạn số dung lượng, bản ghi hay số file. Điều này cho phép ngân hàng có thể dễ dàng tiếp cận dữ liệu một cách đa dạng nhất nhằm phân tích, theo dõi, tạo mô hình trong thời gian thực hay ứng dụng Machine Learning hoặc AI để đưa ra các quyết định tối ưu nhất cho cả phía ngân hàng và khách hàng.

Data Lake có thể lưu trữ những dữ liệu hành vi như việc khách hàng đang lướt web như thế nào, truy cập vào đâu (User Behavior Tracking), theo dõi phản ứng của khách hàng trên trang web của ngân hàng, sau khi phân tích dữ liệu chuyên sâu, ngân hàng có thể đưa ra các thay đổi hay tuỳ chọn về kỹ thuật cũng như trải nghiệm người dùng nhằm tạo ra những sản phẩm phục vụ tốt hơn cho những nhóm khách hàng cụ thể. 

Ngoài ra, Data lake tập hợp và quản lý toàn bộ thông tin của một khách hàng trong cùng một hệ thống, nhờ đó cho phép đánh giá sức khỏe tài chính của khách hàng (Credit Scoring – chấm điểm tín dụng) một cách tự động. Dựa trên điểm tín dụng, việc phát hành thẻ tín dụng hay phê duyệt khoản vay có thể được đưa ra ngay lập tức với hạn mức chính xác và phù hợp. Khi đó, khách hàng có thể thực hiện các tác vụ tài chính từ xa một cách tin cậy và an toàn.

Ý tưởng chung của Big Data là cho phép phân tích để đưa quyết định. Ngân hàng có thể dùng lượng dữ liệu khổng lồ của mình (từ các sản phẩm khách hàng sử dụng) để nghiên cứu và tạo ra thêm những sản phẩm mới, trải nghiệm mới cho khách hàng. Về phía khách hàng, những dữ liệu này khi tập trung lại sẽ giúp khách hàng có được cái nhìn tổng quan về tài chính cá nhân, từ đó có thể tạo ra kế hoạch tài chính cá nhân phù hợp, hướng đến thói quen tài chính khỏe mạnh. Do đó, Big Data, khi được phát triển và sử dụng đúng, có thể được coi là chiếc chìa khóa giúp các ngân hàng có thể tạo ra thế mạnh cạnh tranh trong tương lai. 

Cấu trúc và hệ thống vận hành Data Lake của Techcombank có điểm gì khác biệt so với những cái hiện có trên thị trường. Cách Techcombank triển khai Data Lake như thế nào?

Về mặt kỹ thuật: hệ thống Data Lake của Techcombank được xây dựng trên AWS (một trong những dịch vụ điện toán đám mây – Cloud Service hoàn thiện và tốt nhất trên thế giới), đảm bảo tính an toàn và toàn vẹn của dữ liệu. Đảm bảo độ tin cậy cao cho các dịch vụ cũng như khả năng kiểm soát chặt chẽ.

Về mặt tính năng: hệ thống Data Lake của Techcombank được xây dựng với những tính năng đảm bảo phục vụ được các yêu cầu kinh doanh, lấy khách hàng làm trung tâm (cá nhân, doanh nghiệp, quốc tế, v.v.) trong bối cảnh và thị trường của Việt Nam. Đây chính là điểm khác biệt và cũng là ưu thế lớn của Techcombank khi so sánh với các ngân hàng khác không có nền tảng số tập trung hay các ngân hàng quốc tế không có những hệ thống được xây dựng để đáp ứng toàn diện các yêu cầu đáp ứng theo nhu cầu sử dụng hoặc pháp luật tại Việt Nam.

Thách thức: bài toán nhân lực và chi phí 

  • Chi phí: Rất khó có một lời giải tốt nhất cho bài toán xây dựng Data lake cho ngân hàng tại Việt Nam. Với từng hệ thống và sản phẩm, hệ thống tập trung dữ liệu được thiết kế như thế nào, gồm những cấu phần nào, cần đưa qua những qui trình quản lý nào, dữ liệu cần được làm sạch ra sao, v.v… Đó là những thứ rất khó có thể sao chép hay đưa từ nước ngoài về vì các sản phẩm tài chính của Việt Nam khá đặc trưng sơ với khu vực và thế giới. Những nhân tốt bất định nêu trên sẽ khiến chi phí trở thành bài toán khó chúng ta cần đối mặt.
  • Nhân lực: Tại Việt Nam, hiện tại có khá nhiều ngân hàng, công ty, và tổ chức làm về dữ liệu hay sản phẩm tài chính (FinTech), ngoài các tổ chức, doanh nghiệp Việt Nam, các tổ chức nước ngoài đơn cử như Trusting Social với sản phẩm đánh giá điểm tín dụng cá nhân, hay NAB (ngân hàng quốc gia Úc) cũng đang tận dụng nhân lực Việt Nam để xây dựng hệ thống ngân hàng số cho thị trường Úc. Hiện tại, chúng ta chưa có quá nhiều nhân lực hiểu rõ về ngành ngân hàng, việc đối mặt với sự cạnh tranh nhân lực từ tổ chức nước ngoài và sự đào thải nhân sự khi đòi hỏi cao về chuyên môn ngành FinTech, khiến cho việc khan hiếm về nhân sự trở thành bài toán khó cho thị trường Việt Nam.

Cơ hội: Giúp người Việt đưa ra những quyết định tài chính quan trọng

Thị trường tài chính ở Việt Nam khác rất nhiều so với thế giới. Ở thế giới vay mua nhà là thị trường lớn nhất trong lĩnh vực tài chính cá nhân, từ đó sẽ phái sinh các sản phẩm tài chính khác như bảo hiểm, tài khoản giám hộ, v.v.. Tuy nhiên ở Việt Nam thì chưa được như vậy, một trong những rào cản lớn nhất của ngân hàng là chưa có đủ dữ liệu để đưa ra quyết định nhanh chóng và chính xác về tín dụng của các cá nhân hay doanh nghiệp vay vốn, dẫn đến việc đánh mất nhiều cơ hội kinh doanh và cung cấp sản phẩm tối ưu cho khách hàng. Vì vậy, Techcombank sẽ tiếp tục tập trung vào chuyển đổi số, đi đầu trong việc sử dụng Data Lake để dùng dữ liệu để giải quyết những bài toán này. Đây dự đoán sẽ là con đường tất yếu mà các ngân hàng, tổ chức tài chính tại Việt Nam bắt buộc phải theo đuổi và tiếp tục ảnh hưởng dài hạn đến xu hướng chung của ngành lẫn kinh tế Việt Nam. Đơn cử, Quý 1 vừa qua, Vietcombank cũng mới vừa thành lập bộ phận chuyên về dữ liệu CDAO, hay VPBank cũng đang đầu tư rất mạnh vào hệ thống dữ liệu.

Khi tất cả ngân hàng cùng tham gia vào quá trình chuyển đổi số, chúng ta sẽ được thấy nền tài chính Việt Nam trở nên mạnh khỏe hơn nhờ tăng khả năng minh bạch, tăng tính tập trung dữ liệu. Điều đó cũng cho phép các ngân hàng liên kết với nhau dễ dàng hơn. Từ đó, thúc đẩy nền tài chính Việt Nam phát triển vượt bậc. 

Hơn thế nữa, Data Lake cho phép Techcombank, với vai trò người hỗ trợ quản lý tài sản của khách hàng, có thông tin đầy đủ về phân bổ tài sản và thói quen tài chính của mỗi khách hàng, từ đó giúp khách hàng có hiểu biết sâu sắc hơn về sức khỏe tài chính cá nhân, định hướng phân bổ, sử dụng tài chính hợp lý và dài hạn hơn. Mục tiêu cuối cùng là giúp khách hàng có thể đưa ra những quyết định tài chính chính xác hơn trong cuộc sống hằng ngày. 

Mô hình làm việc trong phòng ban liên quan đến Data Engineering sẽ như thế nào?

Trong bộ phận Data Engineering sẽ có 2 nhóm: 

  • (1) Nhóm sẽ chuyên vào nền tảng của Data Lake: thiết kế các hệ thống dùng chung cho tất cả bài toán liên quan đến dữ liệu.
  • (2) Nhóm phục vụ các khối nghiệp vụ: thiết kế các bài toán hay dự án (project) rất là cụ thể của một phòng ban nghiệp vụ nào đó liên quan đến các khối nghiệp vụ riêng biệt.

Những kỹ năng và tư duy mà các Data Engineer cần trang bị khi làm việc với “Hồ Dữ Liệu” tại Techcombank.

Data Engineer (DE) vs Software Engineer (SE): Hiện tại, nhân lực trực tiếp làm về Data còn khá hạn chế trong khi thị trường đang có nhu cầu ngày càng cao. Thông thường các bạn DE sẽ có xuất phát điểm là SE, sau một thời gian phát triển, các bạn có định hướng làm về dự liệu và cơ hội tiếp xúc với dữ liệu lớn có thể chuyển hướng công việc sang DE. Nói đơn giản, các bạn làm DE là những bạn SE chuyên tập trung vào backend (nắm vững vào quản lý hệ thống, xây dựng hệ thống) và xử lý Data (về mặt skills). Nếu các bạn muốn phát triển về mảng DE, thì nên trang bị và trau dồi thêm cho mình về thiết kế hệ thống backend, các ngôn ngữ lập trình được thiết kế cho backend, và đặc biệt những công nghệ, kỹ thuật backend liên quan đến dữ liệu (Database, ETL, etc.).

Ai là người phù hợp? Trong lĩnh vực phát triển phần mềm nói chung, những bạn thiên về trải nghiệm người dùng sẽ chọn hướng front-end, còn những bạn thiên về làm micro-service hay thuật toán sẽ chọn back-end. Đối với vị trí DE, bên cạnh các yêu cầu về kinh nghiệm back-end thì bạn cần phải yêu thích làm việc với dữ liệu, chẳng hạn có khả năng nhìn vào một bảng dữ liệu, suy nghĩ hay phân tích dữ liệu đó, đưa ra những ý tưởng về việc tổ chức hay sử dụng dữ liệu 1 cách tối ưu nhất.

Điều gì khiến anh lại lựa chọn làm trong mảng Banking và đặc biệt là lựa chọn gắn bó với Techcombank?

Một trong những lý do chính là mình muốn học hỏi và nâng cao kiến thức chuyên môn (Domain Knowledge) của mình trong lĩnh vực Fintech – một ngành mà mình rất quan tâm và yêu thích. Bênh cạnh đó, trong suốt quá trình làm việc tại Sing hay US, mình có nhiều cơ hội cộng tác và làm việc với nhiều đội ngũ công nghệ tại Việt Nam, qua đó hiểu được rõ hơn về tiềm năng phát triển của thị trường trong tương lai, đặc biệt là mảng số hóa ngân hàng.  

Techcombank có những bài toán rất lớn và thú vị về thị trường tài chính mà không phải ngân hàng nào cũng có được. Song song đó, môi trường làm việc cởi mở, mọi người đều có cơ hội tham gia trong mỗi quyết định, sự có mặt của các đối tác lớn và tin cậy như AWS, Adobe, Microsoft… cũng là một yếu tố thúc đẩy tôi gia nhập đội ngũ của nhà Techcombank. 

Mình tin rằng Techcombank sẽ luôn là một điểm đến lý tưởng cho nhân sự Công nghệ và Dữ liệu tại Việt Nam, những người muốn làm việc trong các bài toán phức tạp, có ảnh hướng lớn đến khách hàng và xã hội, muốn tìm kiếm cơ hội tiếp cận các công nghệ mới nhất trên thế giới ,  sở hữu những kinh nghiệm dẫn dắt hành trình số hóa ngân hàng. Nếu anh chị em nào đang có ý định hoặc cân nhắc về cơ hội nghề nghiệp tại Techcombank có thể để lại bình luận bên dưới hoặc liên hệ trực tiếp với Huy, Huy rất sẵn lòng chia sẻ cùng mọi người nhé.

Cảm ơn anh về những chia sẻ rất sâu sắc về lĩnh vực này, chúc anh và đội ngũ Data ngày càng phát triển mạnh mẽ và gặt hái được nhiều thành công hơn trong thời gian tới.


Thuộc dự án "InsideGem Technology" do Techcombank x TopDev triển khai, chuỗi nội dung thuần Tech "độc quyền" được chia sẻ bởi đội ngũ Tech Leader đến từ Silicon Valley tại Techcombank sẽ được cập nhật liên tục tại chuyên mục Tech Blog Techcombank x TopDev. Cùng theo dõi & gặp gỡ các chuyên gia bạn nhé!

 

Các cơ hội việc làm tại Techcombank

Bài viết liên quan

Data is all about orchestration (Tầm quan trọng của việc điều phối khi làm việc với dữ liệu)

Bài viết đến từ anh Vũ Tuấn Nghĩa - Quản lý cao cấp hoạch định dữ liệu Data Engineering team @Techcombank Data orchestration là một khối xây dựng cốt lõi của các hệ thống ETL dữ liệu, và là một công cụ đã có từ lâu đời và được áp dụng trong nhiều hệ thống khác nhau. Khi xây dựng Data Lake tại Techcombank, chúng mình có cơ hội thiết kế nhiều component/system từ đầu, từ hệ thống Data sourcing đến Datalake, đến hệ thống data ETL pipeline trên các zones của Data Lake. Để đáp ứng các nhu cầu và thách thức thực tế, ta cần có một hệ thống Data orchestration để giải quyết các bài toán: Cơ chế trigger các downstream job một cách linh hoạt mà không gây khó khăn trong quá trình vận hành Rút ngắn thời gian phát triển, xây dựng và kiểm thử Hạn chế sự phụ thuộc lẫn nhau gây ra chain failure Hôm nay chúng ta sẽ tìm hiểu về Data orchestration và cách giả [...]

Data Modeling with DynamoDB: Single table design (Xây dựng mô hình dữ liệu với DynamoDB: Thiết kế bảng đơn lẻ)

Bài viết đến từ anh Vũ Tuấn Nghĩa - Quản lý cao cấp hoạch định dữ liệu Data Engineering team @Techcombank DynamoDB là một dịch vụ cơ sở dữ liệu NoSQL cung cấp hiệu năng nhanh và nhất quán - có khả năng mở rộng và linh hoạt trong cách sử dụng. Khác với cơ sở dữ liệu quan hệ (RDMS), DynamoDB không sử dụng joins và các cấu trúc quan hệ khác để lưu trữ và truy vấn dữ liệu. Thay vào đó, bạn sẽ thiết kế table của mình theo Single design table - 1 table duy nhất phục vụ toàn bộ application hay service, việc này giúp hiệu suất đọc và ghi nhanh hơn ở scale lớn và giảm chi phí cloud. Trong bài viết này, chúng mình sẽ khám phá các lợi ích và thách thức của việc sử dụng Single design table trong DynamoDB, cũng như cách Datalake ở Techcombank sử dụng để đáp ứng và tối ưu như cầu sử dụng. Single table design Trong tài liệu trang chủ AWS có đề cập: You should maintain as few tables as [...]

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Bài viết được sự cho phép của tác giả Sơn Dương

Trong thế giới công nghệ, bạn không thể tự mình nghiên cứu và tạo ra tất cả mọi thứ của riêng mình. Từ những ngày trên ghế nhà trường, bạn đã phải tự đọc giáo trình, tự tìm hiểu tất cả mọi thứ, thầy giáo chỉ là người định hướng cho bạn mà thôi. Để trở thành một developer giỏi, bạn phải luyện thành thục hai kỹ năng: Viết code và đọc tất cả mọi thứ. Trong đó đọc tài liệu là một kinh nghiệm rất quan trọng.

Khi bạn đi làm, việc tự đọc tài liệu và tự tìm hiểu công nghệ mới lại càng trở nên quan trọng hơn bao giờ hết. Nếu bạn không biết cách tự đọc, tự tìm hiểu, bạn sẽ ngày càng trở nên lạc hậu và tụt lùi so với đồng nghiệp.

Bài viết này, mình sẽ chia sẻ kinh nghiệm đọc và những nguồn tài liệu giúp cho việc đọc của bạn trở nên hiệu quả hơn.

Những nguồn tài nguyên và kinh nghiệm đọc tài liệu để thành developer giỏi

Đọc thế nào cho đúng? Đọc tài liệu như nào để vừa nhanh chóng tiếp cận cái mới, vừa đỡ mất thời gian.

#Để trở thành developer giỏi, hãy đọc tài liệu chính thức từ nhà cung cấp

Khi bạn bắt đầu tìm hiểu một ngôn ngữ lập trình mới, một công nghệ mới… thì nơi tốt nhất để bắt đầu chính là tài liệu chính thức của nó. Đừng vội vàng đọc những tutorial hướng dẫn trên các trang mạng.

Ví dụ, bạn bắt đầu học lập trình Android, thì nơi tất nhất để bắt đầu chính là trang Android Developer. Hoặc bạn muốn học về Nodejs, thì hãy bắt đầu từ đây.

Những bài viết hướng dẫn chính thức từ chính nhà cung cấp, sẽ giúp bạn có cái nhìn chính xác về công cụ, công nghệ mà bạn chuẩn bị tiếp cận. Hầu hết những tutorial mà bạn đọc trên mạng cũng dựa trên những tài liệu này mà thôi.

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Thông thường, bạn sẽ bắt đầu từ bài viết Getting Started tutorial. Đây là bài viết giúp bạn hiểu cơ bản nhất bộ khung, môi trường phát triển để bắt đầu và tiếp tục mở rộng sau này cho việc thành developer giỏi, tài năng.

Rất nhiều bạn, trong đó có mình trước kia, rất ghét đọc tài liệu chính thức. Vì cảm thấy nó khô khan, và uyên thâm kiểu gì ấy. Mình thích đọc mấy bài tutorial của mấy bạn blogger chia sẻ kinh nghiệm hơn.

Nhưng chính điều đó làm mình bị “loạn” về kiến thức. Vì mỗi người lại có cách viết, cách tiếp cận khác nhau, do đó nhiều khi bị lỗi ở khâu nào đó mà không biết vì sao, rất mất thời gian.

Nhớ nhé, tài liệu chính chủ luôn là nguồn tài nguyên mà bạn cần phải tìm hiểu trước tiên.

  Sách hay nhất dành cho lập trình viên (2024)

#Đọc những bài viết chia sẻ kiến thức từ những developer giỏi “tiền bối”

Sau khi bạn đã hiểu cơ bản từ nguồn tài liệu chính thức, bạn có thể tham khảo thêm những bài viết chia sẻ kiến thức từ các chuyên gia, blogger…

Một trong những nguồn mà mình yêu thích là Medium. Trên Medium có rất nhiều bài viết hay và chuyên sâu về kỹ thuật nói riêng.

Ví dụ, bạn có thể tham khảo một số kênh trên Medium như: freeCodeCamp and HackerNoon.

Các bài viết trên đó rất chất lượng và lôi cuốn.

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi
Nguồn tài liệu tiếp theo mà mình cũng hay lui tới là Hacker News. Đây là website được quản lý bởi Y Combinator.

Có một đặc điểm khá hay ho trên hacker News, đó là người dùng chỉ có thể post link lên quan đến kỹ thuật. Sau đó mọi người có thể vote-up hoặc vote-down, phụ thuộc vào chất lượng bài viết.

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Hacker News rất giống với diễn đàn Reddit. Điểm khác biết duy nhất là Hacker News chỉ có đăng liên kết. Nhờ đó mà bạn dễ dàng cập nhật tin tức hay ho hơn mà không bị loãng.

Việc làm IT Fresher dành cho bạn

#Đọc sách Programming Ebook

Nguồn tài liệu mà mình cực yêu thích khi tìm hiểu một kỹ thuật mới đó chính là sách dạy lập trình.

Mình thì rất ít khi đọc sách dạy lập trình viết bằng tiếng việt. Không phải phân biệt đồ ngoại với đồ nội, mà đơn giản là mình không thích thôi.

Có hai nhà xuất bản rất nổi tiếng về sách lập trình:  Manning Publishing and O’Reilly Publishing. Họ có rất nhiều sách về lập trình với đủ ngóc ngách của kỹ thuật.

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Với hai nhà xuất bản này, mình tin rằng bạn có thể tìm được đúng thứ bạn cần học. Từ những kiến thức căn bản HTML, C++, Java, Web Application… đến những kiến thức hot trend như AI, Cloud, Big Data

Bình thường, mình ưu tiên đọc sách giấy hơn là sách điện tử. Tuy nhiên, riêng về học lập trình, bạn nên làm quen với việc đọc Ebook. Bởi vì lĩnh vực công nghệ là lĩnh vực thay đổi từng giờ, sách giấy sẽ khó lòng cập nhật được kiến thức mới tốt như sách điện tử.

  Những cái “khó” khi mới học lập trình

#Tìm hiểu chuyên sâu từ các Papers

Khi bạn đã hiểu và làm chủ được một công cụ, ngôn ngữ lập trình hay công nghệ mới… Đây là lúc bạn có thể nâng cao kiến thức chuyên sâu của mình thông qua các Paper (bài viết nghiên cứu chuyên sâu).

Thực sự việc đọc Papers cũng khá là khó khăn, vì kiến thức của nó rất chuyên sâu. Nhưng bạn không hề có đơn độc đâu. Thử Google mà xem, nó có thể là một tài liệu cực kỳ quan trong trên con đường trở thành developer giỏi của bạn đấy!

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Mặc dù đọc Papers khó thật đấy, nhưng không phải là không thể. Bạn có thể làm theo một số kinh nghiệm sau:

  1. Đầu tiên, đọc ngay phần tóm tắt.
  2. Nhìn qua những hình minh họa, diagrams mà paper sử dụng.
  3. Sau đó đọc phần tổng kết.
  4. Khi đi qua 3 bước ở trên thì mới quyết định có đọc toàn bộ bài Paper hay không.

Khi đọc đến chỗ nào không hiểu, bạn có thể note lại hoặc tra cứu nó giữa bài viết. Cứ kiên trì, dần dần kỹ năng đọc papers của bạn sẽ được cải thiện đáng kể. Chưa kể đến chuyện tiếng Anh chuyên ngành cũng lên một level mới.

Về nguồn papers, các bạn có thể tham khảo từ phòng lab của các trường đại học. Rất nhiều dự án tiềm năng có xuất phát điểm từ các nghiên cứu tưởng xa vời đó.

Ví dụ như Apache Spark được sinh ra từ AmpLab của trường đại học California.

Ngoài ra, bạn có thể sử dụng các công cụ tìm kiếm như Google Scholar hay arXiv. Cả hai công cụ này cho phép bạn tìm kiếm và đọc những tài liệu nghiên cứu được published.

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

#Để trở thành developer giỏi, hãy thử đọc code của người khác

Ngoài việc đọc sách, đọc tài liệu để trau dồi và tiếp cập công nghệ mới. Thì việc đọc code của người khác cũng là một cách học rất hay ho.

Nếu là lập trình viên, chắc hẳn bạn không còn lạ lẫm gì trang GitHub. Đây gần như là kho mã nguồn vô giá mà bất kì lập trình viên nào cũng không thể bỏ qua.

Kinh nghiệm đọc tài liệu để trở thành Developer giỏi

Khi bạn đọc code của dự án thực tế, bạn sẽ có cái nhìn rất khác so với sách vở. Đơn giản, những dòng code trong sách vở hay tutorial toàn là những bài toán mẫu, đơn giản và lý tưởng.

Việc học cách sử dụng công cụ trong một môi trường lý tưởng sẽ rất khác so với thực tế. Do đó, việc đọc code của những người đang “thực chiến” sẽ luôn có ích.

#Tạm kết

Trước khi kết thúc bài viết, mình chỉ muốn nói với bạn rằng: Đọc càng nhiều, bạn sẽ càng thấy ngu đi.

Bạn sẽ nhận ra, điều bạn biết thực sự nhỏ bé, thế giới bên ngoài mới bao la, rộng lớn.

Bạn sẽ không thể nào biết tất cả mọi thứ, hãy cứ đọc để mở rộng tầm nhìn. Hãy cứ “ngu” khi có thể.

Hi vọng, những kinh nghiệm đọc tài liệu này sẽ giúp ích cho bạn trong việc trở thành developer giỏi. Nếu có điều muốn chia sẻ thì đừng ngần ngại để lại bình luận bên dưới nhé.

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

Xem thêm:

Đừng bỏ qua việc làm IT tất cả level có trên TopDev nhé!

10 tính năng trên Apache Spark anh em nên biết

10 tính năng trên Apache Spark anh em nên biết

Apache Spark là một công cụ đa ngôn ngữ cho phép xử lý dữ liệu, khoa học dữ liệu (data science) và học máy (machine learning) trên các node đơn (single-node machines) hoặc trên clusters.

Apache Spark

Không chỉ đơn giản như vậy, Apache Spark còn có nhiều hơn các tính năng hay ho. Vậy anh em cùng lướt qua xem 10 tính năng nổi bật trong Apache Spark là gì?

1. Fault tolerance

Tính năng đầu tiên của Apache Spark là Fault tolerance. Fault tolerance ở đây anh em có thể hiểu là khả năng chịu lỗi, khả năng xử lý lỗi. Apache Spark ngay từ khi bắt đầu đã được thiết kế để hanler lỗi từ các worker nodes.

Spark đạt được khả năng này nhờ vào sử dụng DAG và RDD (Resilient Distributed Datasets). DAG ở đây chứa tất cả các bước (step) cần thiết để hoàn thành một task. Tất cả đều được ghi lại. Chính vì vậy, khi xảy ra lỗi ở nodes worker nào đó, ta có thể tái hiện lỗi từ DAG đã lưu hiện có.

Apache Spark

2. Dynamic In Nature

Tính năng thứ hai của Apache Spark là Dynamic In Nature. Cái này anh em có thể hiểu

The applications can be written quickly in Java, Scala, Python, R. Spark offers over 80 high-level operators that make it easy to build parallel apps. And you can use it interactively from the Scala, Python and R shells. Spark powers a stack of libraries including SQL and DataFrames, MLlib for machine learning, GraphX, and Spark Streaming. You can combine these libraries seamlessly in the same application. Ứng dụng có thể viết nhanh chóng với Java, Scala, Python, R. Spark cung cấp hơn 80 toán tử cao cấp cho phép xây dựng song song các ứng dụng. Ta cũng có thể sử dụng nó để tương tác từ Scala, Python và R Shells. Spark cũng cung cấp các thư viện mạnh bao gồm SQL và DataFrames, MLlib cho học máy, GraphX và Spark Streaming. Ta có thể kết hợp lại với nhau để xây dựng nhanh chóng ứng dụng của mình.

Apache Spark

3. Lazy Evaluation

Tính năng thứ 3 của Spark là Lazy Evaluation. Với Spark thì không có bất cứ sự chuyển đổi (transformation) nào được thực hiện ngay lập tức. Tất cả đều là lazy, mỗi khi anh em thêm vào, nó sẽ đi qua DAG. Kết quả cuối cùng chỉ được đưa ra khi anh em gọi tới actions đó.

Hơn nữa, tất cả các actions liên quan tới Spark đều sẽ hiển thị lên (trực quan hoá) trước khi anh em gọi.

Apache Spark

  Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
  Digital Twins – xu hướng công nghệ cho ngành IoT

4. Real-Time Stream Processing

Tính năng thứ 4 của Apache Spark là Stream Processing ở chế độ Real Time. Spark Streaming đưa ra các API tích hợp ngôn ngữ của Apache Spark vào quá trình xử lý của stream. Bình thường anh em viết batch jobs theo cơ chế từ trên xuống dưới. với Apache Spark API cũng vậy, tất cả sẽ được viết như các truyền thống.

Apache Spark

5. Speed

Spark cho phép các ứng dụng chạy trên Hadoop chạy nhanh hơn 100 lần (in memory) và nhanh gấp 10 lần (trên disk). Để tăng được tốc độ này, Spark giảm thiểu hoạt động đọc ghi ở các bước trung gian (operations for intermediate). Tất cả sẽ lưu ở trên memory và chỉ thực sự ghi ra đĩa khi cần thiết.

Một số công cụ cũng giúp Spark tăng tốc độ như DAG, query optimizer và highly optimized physical.

Apache Spark

6. Reusability

Tính năng thứ 6 của Apache Spark cho phép tái sử dụng code. Spark code có thể sử dụng cho batch-processing. Các streaming cũng có thể kết nối với nhau (joining streaming data). Ở trạng thái streaming (streaming state), Spark cũng cho phép thực hiện các ad-hoc queries.

Apache Spark

Xem thêm tuyển dụng Java lương cao trên TopDev

7. Advanced Analytics

Apache Spark từ đâu đã là tiêu chuẩn để xử lý các dữ liệu lớn hoặc cực lớn. Spark cung cấp các thư viện phục vụ riêng cho Machine Learning, xử lý đồ hoạ (graph processing libraries). Tất cả các thư viện này đều hoạt động trơn tru dưới sự hỗ trợ của Spark.

Apache Spark

8. In Memory Computing

Không giống như Hadoop MapReduce, Apache Spark có khả năng xử lý các tác vụ trong bộ nhớ và không bắt buộc ghi các kết quả hoặc kết quả của các bước trung gian này vào trong bộ nhớ. Tính năng này cho phép tăng tốc độ xử lý của Apache Spark.

Kết quả của từng bước trung gian nếu cần xử lý ở bước sau cũng sẽ lưu ở trong bộ nhớ để có thể đem ra tái sử dụng.

Apache Spark

9. Supporting Multiple languages

Apache Spark tích hợp đa ngôn ngữ. Hầu hết đều có API cho các ngôn ngữ Java, Scala, Python và R. Ngoài ra, còn có các tính năng nâng cao với ngôn ngữ R để phân tích dữ liệu. Ngoài ra Spark có bộ SQL riêng là Spark SQL, tương tự với SQL. Cho phép anh em làm quen nhanh để phát triển.

Apache Spark

10. Integrated with Hadoop

Apache Spark tích hợp tốt với HDFS file system trên Hadoop. Cung cấp nhiều định dạng như Json, csv, orc, avro.

Apache Spark

11. Tham khảo thêm về Apache Spark

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

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

Tìm kiếm việc làm IT mới nhất tại TopDev!

Top 5 câu hỏi phỏng vấn IT Operation và gợi ý trả lời

Top 5 câu hỏi phỏng vấn IT Operation và gợi ý trả lời

IT Operation là thuật ngữ bao quát cho toàn bộ quy trình và dịch vụ do một bộ phận trong doanh nghiệp. IT Operation sẽ chịu trách nhiệm vận hành các hệ thống phần mềm, phần cứng của doanh nghiệp, đảm bảo chất lượng, quản lý cơ sở hạ tầng.

IT Operation cũng hỗ trợ cả doanh nghiệp hiện tại và khách hàng bên ngoài.

IT Operation Anh em không cần phải lo, ngày đầu lúc nào chả vui

Vậy phỏng vấn IT Operation có gì đặc biệt? Những câu hỏi nào thường được hỏi khi phỏng vấn vị trí này? Tất cả sẽ được liệt kê trong bài viết này.

Anh em lưu ý là bài viết chia thành 2 phần, phần 1 là những câu hỏi chung chung và phần 2 sẽ là những câu hỏi đặc thù hơn cho từng loại dự án.

Bắt đầu ngay thôi nào!

1. Bằng cách nào xác định lỗi network và cách nào để phát hiện?

Câu hỏi đầu tiên phỏng vấn IT Operation liên quan tới kiến thức và khả năng xử lý nếu phát hiện ra lỗi trong hệ thống.

Là người chịu trách nhiệm cho hoạt động của công ty, mạng (network) là một trong những lỗi thường hay xảy ra. Vậy bằng cách nào ta có thể xác định được các lỗi này? Một phương pháp thường hay được sử dụng là checksum. Cụ thể ở đây là CRC (RC – Cyclic Redundancy Check).

CRC sẽ gửi gói tin từ điểm A tới điểm B và kiểm tra tổng số byte nhận được có đầy đủ hay không? Nếu không nhận đầy đủ có thể xác định lỗi xảy ra do cách thức giao tiếp hoặc lỗi đường truyền.

IT Operation

Đây chỉ là ví dụ cho việc kiểm tra lỗi khi gửi thiếu gói tin hoặc lỗi mạng. Các trường hợp khác anh em có thể tự xem lại để bổ sung kiến thức.

Một số câu hỏi khác:

  • Tiêu chuẩn cho bảo mật mạng trong mạng nội bộ công ty là gì?
  • Làm sao để cấu hình mail nội bộ cho công ty?. Đảm bảo bảo mật và tiết kiệm chi phí

  Top 20 chứng chỉ IT được săn đón nhất trong ngành CNTT
  Top 5 câu hỏi phỏng vấn Software Architect hàng đầu

2. Nguyên nhân của màn hình xanh là gì?

Câu hỏi thứ hai phỏng vấn IT Operation liên quan tới vấn đề mà các anh em IT Operation thường hay xử lý. Màn hình xanh chết chóc.

Thông thường trong công ty rất nhiều trường hợp có thể dẫn tới màn hình xanh, lỗi này ảnh hưởng tới trực tiếp tới công việc. Nên thường được yêu cầu xử lý sớm và xử lý nhanh. Câu hỏi này chỉ là câu hỏi đại diện, những công việc thường ngày mà IT Opeartion phải đảm nhiệm có thể bao gồm, đi đường dây mạng, cài đặt phần mềm, tạo tài khoản cho các bạn nhân viên mới.

IT Operation

Thông thường lỗi màn hình xanh xảy ra do một vài nguyên nhân dưới đây:

  • Phần cứng được lắp không đúng cách
  • Có sự cố xảy ra với phần cứng
  • Phần mềm gây xung đột hoặc gây hư hại cho windows

Một số câu hỏi anh em có thể chuẩn bị thêm:

  • Bạn có kinh nghiệm xử lý phần cứng máy tính không?
  • Trường hợp công ty mất điện, phương án nào để giữ cho máy tính vẫn tiếp tục hoạt động?

3. Nếu bạn được giao cập nhật chính sách hoặc thủ tục liên quan tới sử dụng mạng của công ty. Bạn sẽ làm thế nào?

Câu hỏi số 3 phỏng vấn IT Operation liên quan tới kinh nghiệm làm việc thực tế. Thông thường các công ty sẽ có chính sách và thủ tục làm việc và sử dụng mạng công ty khác nhau.

Trường hợp có thay đổi về chính sách và thủ tục. Trách nhiệm của IT Operation là đánh giá xem cập nhật đó có ảnh hưởng tới cách thức làm việc của các phòng ban và bộ phận hay không? Ngoài ra, việc giải thích cho các nhân viên trong công ty cũng vô cùng quan trọng.

IT Operation

Để giải thích được và trình bày được cho toàn bộ nhân viên trong công ty, IT Operation cần gửi mail, giải thích, hoặc thực hiện các khảo sát trước khi thực hiện thay đổi.

Câu hỏi này thoải mái để anh em trình bày quan điểm cá nhân cũng như kinh nghiệm thực tế đã có.

Một số câu hỏi anh em cũng có thể chuẩn bị:

  • Trường hợp mạng công ty có vấn đề, làm sao đảm bảo không ảnh hưởng tới công việc hằng ngày của nhân viên?
  • Bạn quản lý thiết bị mạng và thiết bị liên quan tới công việc ở công ty như thế nào?

Tham khảo việc làm Data Operations hấp dẫn trên TopDev

4. Bạn sẽ xử lý như thế nào trong trường hợp có vấn đề về network sản phẩm bán cho khách hàng và khách hàng nổi giận?

Câu hỏi thứ 4 phỏng vấn IT Operation liên quan tới kinh nghiệm làm việc với khách hàng. Vị trí Operation không chỉ làm việc và xử lý các sự cố trong công ty. Nếu công ty bán sản phẩm ra bên ngoài, IT Operation chịu trách nhiệm giúp sản phẩm hoạt động trơn tru khi khách hàng đang sử dụng.

IT Operation

Trường hợp có vấn đề, anh em có thể xử lý bằng cách trực tiếp liên hệ với khách hàng, xác định nguyên nhân gây ra lỗi. Song song với việc xác định nguyên nhân gây ra lỗi. Phương án khắc phục đã được chuẩn bị trước đó cần được triển khai để tránh ảnh hưởng tới khách hàng.

Một số câu hỏi thêm anh em có thể chuẩn bị:

  • Bạn có lên phương án hoặc tài liệu xử lý các sự cố thường gặp trong công ty không? (liên quan tới network, phần cứng,…)

5. Bạn có kế hoạch hay cách thức để đào tạo nhân viên mới phòng IT Operation không?

Câu hỏi thứ 5 phỏng vấn IT Operation đánh giá khả năng đào tạo nhân viên mới. Trường hợp bạn ứng tuyển vị trí leader hoặc manager của IT Operation, câu hỏi này là câu hỏi nhà tuyển dụng thường hay đưa ra.

Để thực hiện công tác đào tạo tốt, đòi hỏi phòng ban IT phải có tài liệu và kế hoạch đào tạo cụ thể. Song song với tài liệu là các môi trường development hoặc môi trường test cho nhân viên mới có thể thực hành trước khi vào môi trường chính trong công ty.

IT Operation

Việc thực hiện đào tạo tốt còn giúp hạn chế rủi ro. Trường hợp các bạn nhân viên mới cấu hình sai, xoá nhầm account hoặc xử lý không đúng trên môi trường của khách.

Một số câu hỏi khác nhà tuyển dụng có thể đưa ra:

  • Trường hợp có sự cố xảy ra do nhân viên mới, bạn xử lý như thế nào?
  • Các kiến thức nào bạn nghĩ một người nhân viên mới cần có cho vị trí này?

6. Tham khảo thêm phỏng vấn IT Operation

Cảm ơn anh em đã chú ý – Thank you for your focus – Happy coding!

Tác giả: Kiên Nguyễn

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

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

GRPC là gì? Điều gì giúp GRPC trở nên mạnh mẽ?

GRPC là gì? Điều gì giúp GRPC trở nên mạnh mẽ?

gRPC là mã nguồn mở mới, dựa trên RPC framework, đem lại hiệu suất và hiệu quả cao trong mọi môi trường. Hỗ trợ cả hai loại là request và response thông thường và giao tiếp dài như long-running streaming.

Bài viết này sẽ giúp anh em có cài nhìn sâu hơn về gRPC, kiến trúc cũng như điểm mạnh điểm yếu của gRPC.

gRPC Chưa bắt đầu đã nhảy lẹ dữ chời. Chung thuỷ với REST bao lâu mà nhảy lẹ dữ.-

Bắt đầu ngay thôi nào!

1. gRPC là gì?

gRPC is a robust open-source RPC (Remote Procedure Call) framework used to build scalable and fast APIs. It allows the client and server applications to communicate transparently and develop connected systems. Many leading tech firms have adopted gRPC, such as Google, Netflix, Square, IBM, Cisco, & Dropbox. gRPC là một khung dựa trên RPC framework (gọi thủ tục từ xa), sử dụng để xây dựng các API có tốc độ cao, khả năng mở rộng tốt. Nó cho phép client và server trong ứng dụng có thể giao tiếp minh bạch và phát triển các hệ thống được kết nối. Rất nhiều công ty công nghệ hàng đầu đã áp dụng gRPC như Google, Netflix, Square, IBM, Cisco và Dropbox

Không phải sính ngoại nhưng nghe thôi đã thấy nên tìm hiểu về gRPC, không phải cứ tech từ công ty công nghệ lớn là mình sẽ tìm hiểu. Nhưng gRPC là thứ đang dần thay thế REST, mà REST lại quá phổ biến. Nên tìm hiểu gRPC là chắc chắn phải làm rồi.

Liệng qua liệng lại xíu phía lịch sử thì gRPC đầu tiên được phát triển bởi Google, như là một phần mở rộng thêm của RPC framework. Sử dụng để kết nối nhiều microservices với nhiều techstack khác nhau. Sau một thời gian thì được chuyển qua open source, cho cộng đồng thoải mái sử dụng.

gRPC

2. gRPC concepts

gRPC có được sự phát triển và thành công nhờ sử dụng các công nghệ mới hàng đầu, tốt hơn JSON và XML, cung cấp và gia tăng bảo mật cho API. Hầu hết các concept của gRPC đều bắt đầu từ

2.1 Protocol Buffers

Protocol Buffers hay còn gọi là Protobuf, là giao thức tuần tự hoá (serialization) của Google, cho phép định nghĩa các services tự động tạo ra các client libraries. gRPC sử dụng các giao thức này làm IDL (Interface Definition Language – Ngôn ngữ định nghĩa giao thức). Phiên bản hiện tại là proto3, bao gồm các tính năng mới và dễ dàng sử dụng.

gRPC

Cả quá trình hoạt động của protobuf cho thấy nó có lợi thế hơn nhiều so với JSON và XML. Phân tích syntax bằng protobuf yêu cầu ít hơn tài nguyên CPU (do dữ liệu được chuyển thành dạng nhị phân). Các tin nhắn được mã hoá có kích thước nhỏ hơn.

Chính vì có kích thước nhỏ, việc trao đổi hoặc gửi nhận tin nhắn trở nên nhanh chóng, ngay cả khi máy sử dụng có CPU chậm (như điện thoại hoặc các thiết bị di động khác).

2.2 Streaming

Streaming là concept khác của gRPC, nơi mà nhiều processes được thực thi chỉ trong một request duy nhất. Streaming cũng được hỗ trợ bởi TCP và HTTP/2 (cho phép gửi nhiều response hoặc nhận nhiều request).

Streaming chia thành 3 loại chính dưới đây:

  • Server-streaming RPCs: Client sẽ gửi một request duy nhất tới server và nhận lại một luồng dữ liệu. Server sẽ gửi toàn bộ nội dung trả về cho tới khi không nhận được tin nhắn nào nữa.
  • Client-streaming RPCs: Kiểu này client sẽ gửi một chuỗi luồng dữ liệu tới server, server xử lý và trả về duy nhất một response cho client.
  • Bidirectional-streaming RPCs: Streaming 2 chiều cho phép cả client và server gửi chuỗi tin nhắn tới nhau. Cả hai luồng này hoạt động độc lập, do đó chúng có thể truyền message theo bất cứ trình tự nào. Trình tự tin nhắn (messages) trong mỗi luồng được dữ nguyên.

  Modern C++ binary RPC framework gọn nhẹ, không cần code generation
  Triển khai RPC đơn giản trong java

2.3 HTTP/2

gRPC xây dựng dựa trên HTTP/2, được ra mắt vào năm 2015 để khắc phục các hạn chế của HTTP/1.1. Mặc dù tương thích như HTTP 1.1 nhưng HTTP/2 mang lại nhiều tính năng cao cấp hơn như:

  • Binary Framing Layer
  • Streaming
  • Flow Control
  • Header Compression
  • Processing

Processing trong HTTP/2 giúp gRPC có thể hỗ trợ các process chạy đồng bộ và bất đồng bộ (synchronous and asynchronous). Có thể sử dụng để thực hiện các loại tương tác và phát trực tuyến gRPC.

Streaming – Bidirectional full-duplex streaming (truyền phát hai chiều) cho phép client có thể gửi yêu cầu (request) và nhận về phản hồi (response) đồng thời.

2.4 Channels

Channels là khái niệm cốt lõi trong gRPC. Các luồng trên HTTP/2 cho phép nhiều stream trên 1 connection mở.

3. Kiến trúc gRPC

Kiến trúc gRPC được mô tả theo hình vẽ dưới đây. Sơ đồ này chia thành 2 phần (client và server), trong mô hình này mọi client service đều bao gồm một stub. Stub là file được tự động tạo ra, nó tương tự như các interface hiện tại ta dùng để giao tiếp với phía server.

Khi máy khách gửi request tới Server, nó sẽ bao gồm API được gọi và các tham số (parameter). Lúc cần parameter thì đó là lúc và Stub ở phía client hoạt động, nó tuần tự hoá (serializes) các tham số bằng Protobuf, chuyển request này tới client time library (cái này ở local machine).

gRPC

Sau đó, OS lúc này gửi tới server thông qua giao thức HTTP/2. OS của Server nhận các packets, gọi tới server stub procedure. Thủ tục stub này ở phía server sẽ giải mã (decode) các tham số nhận được, gọi các procedure tương ứng cũng bằng Protobuf.

Sau khi đã thực hiện xong, các dữ liệu mã hoá sẽ gửi lại cho Client và decode các tham số đó. Client tiếp tục xử lý và trả về cho phía enduser.

Tham khảo việc làm Front-end Developer hấp dẫn trên TopDev

4. Điểm mạnh của gRPC

Với kiến trúc và các thức mã hoá, giải mã các parameter khác biệt. Cộng với HTTP/2, rõ ràng gRPC đem tới một số ưu điểm khác biệt.

Đầu tiên là về hiệu năng

4.1 Peformance

Theo các đánh giá khác nhau, gRPC đem lại tốc độ và bảo mật API gấp 10 lần so với REST+JSON truyền thống. Do có protobuf và HTTP/2, protobuf sẽ tuần tự hoá (serializes) các tin nhắn ở phía server và client một cách nhanh chóng. Kích thước của tin nhắn lúc này cũng trở nên nhỏ gọn, HTTP/2 cũng cung cấp phương pháp nén file, header nhỏ hơn, giúp việc gửi nội dung giữa Client và Server trở nên nhanh chóng hơn.

4.2 Streaming

Với HTTP/2 và gRPC, việc streaming bây giờ có thể thực hiện nhanh chóng theo nhiều cách khác nhau:

  • Unary (no streaming) – không streaming
  • Client-to-server streaming – từ client tới server
  • Server-to-client streaming – từ server tới client
  • Bi-directional streaming – streaming 2 chiều

4.3 Interoperability

Interoperability (tương tác), cũng giống như HTTP1, gRPC hỗ trợ tích hợp với hầu hết các ngôn ngữ lập trình phổ biến hiện nay như Java, JavaScript, Ruby, Python, Go, Dart, Objective-C, C#

4.4 Security

HTTP/2 luôn đi kèm với TLS giúp đảm bảo tính bảo mật của API. gRPC cũng được khuyến khích để sử dụng với SSL/TLS để mã hoá dữ liệu, giúp việc truyền dữ liệu từ Client tới Server trở nên an toàn hơn

5. Điểm yếu của gRPC

Với vô vàn điểm mạnh không có nghĩa là gRPC không có điểm yếu, dưới đây là một số điểm yếu có thể nhìn thấy rõ khi sử dụng gRPC.

5.1 Limited Browser Support

g RPC sử dụng trên nền HTTP/2 nên không thể gọi trực tiếp các service từ g RPC từ trình duyệt web. Lúc này nếu muốn sử dụng HTTP/2 ta cần proxy và g RPC web để chuyển đổi từ HTTP/1.1 qua HTTP/2

5.2 Non-human Readable Format

Không giống như JSON hay các giao thức khác, Protobuf sẽ nén các tin nhắn từ g RPC thành các dữ liệu khó đọc với con người. Trường hợp có xảy ra lỗi, để thực hiện truy nguyên hoặc kiểm tra cũng là một điều khó khăn.

6. Tham khảo thêm về gRPC

gRPC là một công nghệ đầy hứa hẹn và đã đạt được một số bước tiến đáng kể trong lĩnh vực API. Tuy nhiên không phải nó có thể thay thế ngay lập tức REST trong một sớm một chiều.

Anh em có thể cân nhắc sử dụng gRPC khi cần kết nối các microservices ở quy mô lớn (large-scale), giao tiếp trong thời gian thực (real time communication), các hệ thống có tài nguyên và công suất thấp.

Cảm ơn anh em đã đọc bài – Thank your for your attension – Happy coding!

Tác giả: Kiên Nguyễn

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

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

Top 5 câu hỏi phỏng vấn Devops Engineer thường gặp và cách trả lời

Top 5 câu hỏi phỏng vấn Devops Engineer hay nhất và cách trả lời

Những kỹ năng và tố chất nào cần có khi tham dự hoặc ứng tuyển phỏng vấn Devops Engineer? Với vai trò là Senior Devops Engineer, bạn chịu trách nhiệm phát triển và quản lý cơ sở hạ tầng công nghệ của công ty.

Điều này bao gồm giám sát, triển khai các hệ thống phần mềm, đảm bảo tính ổn định của hệ thống, khả năng vận hành. Ngoài ra bạn còn phải đáp ứng tính bảo mật cho toàn hệ thống. Giám sát và nâng cao hiệu quả sử dụng của hệ thống.

Bài viết này liệt kê 5 câu hỏi phỏng vấn, ở phần đầu tiên các câu hỏi chủ yếu liên quan tới kĩ thuật và các khái niệm liên quan tới vị trí Devops Engineer. Tuy nhiên, để trở thành Senior Devops Engineer và ứng tuyển thành công, bạn cũng cần rèn luyện các kỹ năng khác. Cụ thể như kỹ năng giao tiếp, giải quyết vấn đề, xử lý sự cố và làm việc nhóm.

Phỏng vấn devops engineer Không có Devops Engineer như anh món ăn các chú liệu có ngon được không?. LOL

Bắt đầu ngay và luôn cho nóng.

1. Virtual Private Cloud (VNet) là gì?

Câu hỏi đầu tiên phỏng vấn Devops Engineer liên quan tới khái niệm. Cụ thể ở đây là Virtual Private Cloud (VNet). Cái này hẳn là anh em nào đã từng làm hoặc từng tìm hiểu về vị trí Devops Engineer đã nghe tới. Vậy VPC là gì?

Các nhà cung cấp dịch vụ Cloud như AWS, Google Cloud, Azure cho phép Devops Engineer kiểm soát chi tiết trên mạng máy tính bao gồm các thành phần và tài nguyên. Trong Azure, họ dùng khái niệm VNet, với Google Cloud Enginer và AWS lại gọi là VPC.

1.1 Amazon

With Amazon Virtual Private Cloud (Amazon VPC), you can launch AWS resources in a logically isolated virtual network that you’ve defined. This virtual network closely resembles a traditional network that you’d operate in your own data center, with the benefits of using the scalable infrastructure of AWS. Amazon VPC cho phép khởi chạy các tài nguyên AWS trong một mảng ảo độc lập được bạn định nghĩa trước đó. Mạng ảo này gần giống với mạng truyền thống sử dụng để vận hành cơ sở dữ liệu, nhưng với lợi thế riêng là có thể mở rộng theo kiến trúc của AWS

1.2 Google Cloud

Phía Google Cloud lại định nghĩa VPC rõ ràng hơn như sau:

You can think of a VPC network the same way you’d think of a physical network, except that it is virtualized within Google Cloud. A VPC network is a global resource that consists of a list of regional virtual subnetworks (subnets) in data centers, all connected by a global wide area network. VPC networks are logically isolated from each other in Google Cloud. Bạn có thể tưởng tượng rằng VPC network giống với mạng vật lý thông thường, ngoại trừ mạng này được ảo hoá trong Google Cloud. Mạng VPC là tài nguyên toàn cầu bao gồm danh sách các mạng con ảo trong khu vực. Tất cả được cái nối bởi một mạng rộng cấp độ toàn cầu. Các bạn VPC độc lập lẫn nhau trong Google Cloud.

Phỏng vấn devops engineer

Một số câu hỏi anh em có thể chuẩn bị thêm:

  • Anh em xây dựng Hybrid Cloud như thế nào?
  • Làm cách nào để hạn chế giao tiếp giữa các Kubernetes Pods?
  DevOps là gì? Cần học gì để trở thành DevOps

2. CNI là gì? Làm sao sử dụng CNI trong Kubernetes

Câu hỏi thứ hai phỏng vấn Devops Engineer vẫn liên quan tới khái niệm. Cụ thể ở đây là CNI (Container Network Interface).

The Container Network Interface (CNI) is an API specification that is focused around the creation and connection of container workloads. CNI là đặc tả API tập trung chính vào tạo và kết nối workloads của 2 hoặc nhiều container.

CNI có hai lệnh chính là add (thêm) và delete (xoá). Cấu hình này được chuyển vào dưới dạng dữ liệu JSON. Khi plugin CNI được thêm vào, một cặp thiết bị ảo (virtual device pair) sẽ được tạo và kết nối giữa các Pod và Host. Sau đó, khi IP và routes đã được thiết lập, thông tin sẽ trả về máy chủ API Kubernetes.

Phỏng vấn devops engineer

Ở các phiển CNI sau này, một tính năng quan trọng được thêm vào, đó là khả năng kết nối giữa các CNI plugins.

$ mkdir -p /etc/cni/net.d
$ cat >/etc/cni/net.d/10-mynet.conf <<EOF
{
	"cniVersion": "0.2.0",
	"name": "mynet",
	"type": "bridge",
	"bridge": "cni0",
	"isGateway": true,
	"ipMasq": true,
	"ipam": {
		"type": "host-local",
		"subnet": "10.22.0.0/16",
		"routes": [
			{ "dst": "0.0.0.0/0" }
		]
	}
}
EOF
$ cat >/etc/cni/net.d/99-loopback.conf <<EOF
{
	"cniVersion": "0.2.0",
	"name": "lo",
	"type": "loopback"
}
EOF

Một số câu hỏi khác anh em cũng có thể chuẩn bị:

  • Container giao tiếp với nhau như thế nào trong Kubernetes?
  • Giải thích về IaC và Configuration Management

  8 Bước Trong Lộ Trình Trở Thành DevOps Engineer

3. CI và CD khác nhau như thế nào?

Câu hỏi thứ 3 phỏng vấn Devops Engineer tưởng dễ với nhiều anh em. Nhưng để nêu được tất cả sự khác nhau giữa CI và CD đòi hỏi anh em cần tổng hợp lại kiến thức. Kinh nghiệm làm việc thực tế cũng có thể đem vào để trả lời những câu hỏi như thế này.

Đầu tiên là CI

CI stands for “continuous integration” and CD is “continuous delivery” or “continuous deployment.” CI là viết tắt của “tích hợp liên tục” và CD là “phân phối liên tục” hoặc là “triển khai liên tục”.

3.1 Continuous integration

CI là một quy trình được phát triển nhằm tự động hoá việc phát triển và xây dựng phần mềm. Với CI, các development team có thể merge source liên tục hằng ngày, kiểm thử và kiểm tra các tính năng trước khi đem tới cho end user.

Mục tiêu chính của CI là cung cấp giải pháp nhất quán, cho phép kiểm thử, triển khai liên tục. Cứ đẩy code lên là CI hoạt động. Đối với CI, ở một số giai đoạn từ development qua tới production vẫn có thể có tác động của con người. Một số công đoạn cần phải được duyệt hoặc được kiểm tra bằng tay.

3.2 Continuous deployment

CD – Continuous deployment goes one step further than continuous delivery. With this practice, every change that passes all stages of your production pipeline is released to your customers. There’s no human intervention, and only a failed test will prevent a new change to be deployed to production. CD (triển khai liên tục) là một bước tiến hơn của CD (phân phối liên tục) . Với phương pháp này, mọi thay đổi vượt qua các bước (stages) trong production pipeline sẽ trực tiếp đưa tới khách hàng cuối (end user hoặc customer). Không có sự can thiệp nào của con người và chỉ 1 test fail thôi cũng sẽ dừng việc triển khai lên môi trường production.

Phỏng vấn devops engineer

Một số câu hỏi anh em có thể chuẩn bị thêm:

  • Bạn biết những deployment pattern nào?

Tham khảo việc làm DevOps hấp dẫn trên TopDev

4. Centralized logging solution là gì?

Câu hỏi thứ 4 phỏng vấn Devops Engineer liên quan tới logging, thứ thường xuyên được sử dụng với Devops Engineer.

Logging solutions sử dụng để theo dõi tình trạng (health) của hệ thống. Các event (sự kiện), chỉ số (metrics) sẽ được ghi lại cụ thể. Với các tình trạng bất ổn hoặc bất thường của hệ thống. Từ những dữ liệu đã có sẵn, ghi lại thông qua hệ thống cảnh bảo.

Quay trở lại với Centralized logging (log tập trung). Thông thường các giải pháp open source logging như Elasticsearch-Kibana-Logstash (EKL) sử dụng cơ chế stack để lưu trữ log. Thông thường bao gồm 3 phần:

  • Storage component (Elasticsearch) – Thành phần lưu trữ
  • Log hoặc metric (số liệu), thường là Logstash hoặc Fluentd. Phần này chịu trách nhiệm cập nhật một lượng lớn dữ liệu. Thêm xoá sửa hoặc lưu trữ metadata.
  • Trực quan hoá (visualization) là giải pháp trực quan hoá số liệu hoặc thông tin đã được lưu trữ. Cung cấp cái nhìn trực quan, trực tiếp với các số liệu đã có. Dễ dàng cho người quản lý, bảo hành và bảo trì hệ thống.

  Mẫu bảng mô tả công việc lập trình Devops

Devops Engineer

5. Bạn thành thạo những ngôn ngữ lập trình nào?

Câu hỏi cuối cùng phỏng vấn Devops Engineer tuy không liên quan tới các khái niệm thường hay sử dụng nhưng lại là câu hỏi thường được hay hỏi.

Bản thân là Devops Engineer điều cần thiết là anh em phải biết và thành thạo ít nhất là một ngôn ngữ lập trình. Có các kiến thức nền về ngôn ngữ lập trình giúp anh em dễ dàng tìm ra lỗi. Ngoài ra việc tuỳ biến cũng trở nên dễ dàng hơn.

Đơn cử như Jenkins sử dụng core nền là Java. Python hay PowerShell cũng là ngôn ngữ anh em có thể cân nhắc học. Việc nắm bắt kiến thức nền về ngôn ngữ lập trình cũng giúp cho anh em học và triển khai các ứng dụng dễ dàng hơn. Bản thân CI, CD không khó, nhưng tuỳ vào từng ngôn ngữ, cách thức build source hay cách thức triển khai của từng loại ngôn ngữ sẽ có điểm khác nhau. Chính vì vậy, giỏi hoặc hiểu biết về ngôn ngữ lập trình nào anh em cứ thoải mái show ra.

Devops Engineer

Một số câu hỏi anh em có thể chuẩn bị:

  • Bạn giao tiếp với các thành viên khác trong development team như thế nào?
  • Bạn có kinh nghiệm làm việc với large code base không?
  • Bạn có kinh nghiệm làm việc với automation deployment tools nào?

6. Tham khảo thêm phỏng vấn Devops Engineer

Nếu băn khoăn về lộ trình trở thành Devops Engineer, anh em có thể tham khảo thêm

Chúc anh em phỏng vấn devops engineer thành công tốt đẹp.

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm: 

Xem thêm việc làm IT tại TopDev!

Tổng hợp câu hỏi phỏng vấn vị trí IT HelpDesk và cách trả lời

Tổng hợp câu hỏi phỏng vấn IT HelpDesk và cách trả lời hay nhất

IT HelpDesk là một bộ phận trong tổ chức có nhiệm vụ hỗ trợ, tư vấn, cài đặt,… các phần mềm kỹ thuật, setup các thiết bị phần cứng như máy tính, máy in,… đảm bảo quá trình hoạt động của hệ thống được hiệu quả. Với vai trò quan trọng như vậy, các tổ chức, công ty luôn yêu cầu cao cùng chế độ đãi ngộ tốt dành cho các ứng viên IT HelpDesk. Bài viết hôm nay chúng ta cùng nhau điểm qua những câu hỏi phỏng vấn vị trí IT HelpDesk thường gặp nhé.

BIOS là gì? UEFI khác gì BIOS

BIOS là gì?

BIOS – Basic Input/Output System là hệ thống thông tin đầu vào/đầu ra cơ bản; nó là một nhóm lệnh được lưu trữ trên một chip firmware nằm trên bo mạch chủ (mainboard) của máy tính.

Chức năng của BIOS là kiểm soát các tính năng cơ bản của máy tính như kết nối và chạy driver cho các thiết bị ngoại vi, đọc trật tự ổ cứng để khởi động các hệ điều hành, hiển thị tín hiệu màn hình,… Khi máy tính được khởi động, BIOS sẽ “đánh thức” từng linh kiện và kiểm tra xem linh kiện có hoạt động hay không. 

UEFI là Unified Extensible Firmware Interface – giao diện firmware mở rộng hợp nhất. UEFI được xem là sự thay thế với BIOS trên hầu hết các máy tính hiện nay. Bản chất UEFI là một hệ điều hành tối giản được lưu trữ trong thư mục /EFI/ của bộ nhớ non-volatile (đảm bảo dữ liệu không bị mất, hỏng khi mất điện). UEFI có trợ giúp sử dụng chuột, các đồ họa như biểu đồ nhiều màu sắc và không bị hạn chế về bộ nhớ, số lượng phân vùng,… như BIOS truyền thống.

Hãy nói về sự khác biệt giữa RAM và ROM

ROM viết tắt của Read Only Memory – bộ nhớ chỉ đọc là loại bộ nhớ không khả biến dùng trong các máy tính hay hệ thống điều khiển mà trong vận hành bình thường của hệ thống thì dữ liệu chỉ được đọc ra mà không được phép ghi vào. ROM trong máy tính chứa dữ liệu chương trình giúp máy tính khởi động được ghi từ trước và được giữ lại keercar khi máy tính tắt nguồn.

RAM viết tắt của Random Access Memory – bộ nhớ truy cập ngẫu nhiên là loại bộ nhớ tạm thời, cho phép lưu trữ và truy xuất dữ liệu trong thời gian ngắn. Không giống như ROM, khi máy tính bị tắt thì toàn bộ dữ liệu chứa trong bộ nhớ RAM sẽ mất. RAM có tốc độ đọc ghi dữ liệu nhanh hơn nhiều lần so với ROM, dung lượng của RAM cũng thường tính theo đơn vị Gigabyte (GB) còn ROM chỉ thường chứa vài Megabyte (MB) dữ liệu. 

  Mô Tả Công Việc IT HelpDesk & Những Điều Cần Biết Với Vị Trí Này

Phân biệt định dạng FAT32 và NTFS

FAT32 và NTFS

FAT32 và NTFS là 2 định dạng ổ cứng phổ biến hiện nay chủ yếu trên các thiết bị chạy hệ điều hành Windows. FAT32 có mặt từ phiên bản Window95 sử dụng không gian địa chỉ 32bit hỗ trợ kích thước phân vùng tối đa là 2TB. NTFS viết tắt của New Technology File System là hệ thống file tiên tiến hơn rất nhiều so với FAT32. Không gian địa chỉ trong NTFS là 64bit, khắc phục được những hạn chế về số lượng cluster độc lập với dung lượng đĩa cứng. Ngoài ra định dạng NTFS có khả năng chịu lỗi, hỗ trợ bảo mật, phân quyền và mã hóa tập tin tốt hơn nhiều so với FAT32. Mặc dù vậy thì định dạng FAT32 vẫn thường được sử dụng nhờ khả năng tương thích với nhiều phần cứng, thiết bị ngoại vi khác chưa hỗ trợ NTFS.

Từ năm 2006, một bản cải tiến của FAT32 là exFAT được ra mắt, tương thích với nhiều hệ điều hành khác nhau từ Windows, MacOS và hạn chế được nhiều lỗi so với định dạng FAT32 cũ.

Blue Screen of Death (BSOD) là gì? Phương án xử lý lỗi này

Blue Screen of Death hay lỗi màn hình xanh là một sự cố khi mà phần cứng gặp lỗi, ví dụ như RAM, HDD, VGA,… không hoạt động, hoặc không được cung cấp nguồn điện hay nhiệt độ quá nóng. Một trường hợp khác có thể gây ra lỗi BSOD là khi trình điều khiển thiết bị (driver) gặp lỗi, xử lý sai lệnh hay bị các phần mềm xâm phạm trái phép.

Về cơ bản thì khi gặp lỗi màn hình xanh, bạn sẽ không thao tác được gì với hệ thống và chỉ chờ đợi việc khởi động lại thiết bị. Nếu lỗi BSOD xảy ra thường xuyên nhiều lần, có một số phương án xử lý lỗi như sau:

  • Vệ sinh phần cứng, đảm bảo các thành phần trong máy tính được kết nối chắc chắn và hoạt động đúng. Ngoài ra nếu trong quá trình hoạt động mà nhiệt độ của máy quá cao thì có thể xử lý thay keo tản nhiệt dành cho CPU, thêm xử lý làm mát cho thiết bị.
  • Cài đặt lại trình điều khiển driver của các thiết bị ngoại vi cần thiết.
  • Sử dụng các phần mềm anti-virus đảm bảo thiết bị của bạn không bị tấn công bởi virus và malware.
  • Có thể cài đặt lại hệ điều hành và các phần mềm nếu cần hay Restore (khôi phục) thiết bị về thời điểm trước khi xảy ra lỗi.

Xem thêm tuyển dụng IT Helpdesk lương cao trên TopDev

Phân biệt 2 loại cổng giao tiếp Serial Port và Parallel Port 

Serial Port và Parallel Port 

Port hay cổng là một giao diện vật lý kết nối máy tính với các máy tính khác hoặc thiết bị đầu vào/đầu ra phần cứng. Có 2 loại cổng giao tiếp phổ biến là cổng nối tiếp (Serial Port) và cổng song song (Parallel Port).

Cổng nối tiếp gửi và nhận dữ liệu một lần tại một thời điểm bằng cách sử dụng một cặp dây, trong khi đó cổng song song gửi và nhận dữ liệu nhiều bit cùng một lúc bằng cách sử dụng nhiều dây; nhờ đó mà cổng song song nhanh hơn các cổng nối tiếp. Mặc dù vậy cổng song song cần nhiều đường để truyền dữ liệu hơn vì thế sẽ tốn chi phí và có thể mất dữ liệu trong truyền thông ở khoảng cách xa.

  IT Helpdesk Cần Học Gì Để Làm Tốt Chuyên Môn Của Mình?

Web Hosting là gì? Phân loại Web Hosting Server

Web Hosting là dịch vụ cho thuê không gian trên máy chủ (Server) để lưu trữ, xử lý dữ liệu Website trên Internet. Server của nhà cung cấp dịch vụ Hosting sẽ có IP riêng và đường truyền cấu hình cao nên hoạt động một cách ổn định với bảo mật tốt. Server sẽ chạy xuyên suốt vì thế đảm bảo việc hoạt động liên tục cho Website của bạn.

Có một số loại Web Hosting Server phổ biến:

  • Shared hosting (hosting chia sẻ): Website của bạn sẽ được lưu trữ chung với các trang Web khác trên cùng một server; cùng chia sẻ tài nguyên như CPU hay RAM. Việc chia sẻ giúp loại này có chi phí thấp hơn tuy nhiên hạn chế là việc Website của bạn có thể bị ảnh hưởng từ những Web khác một cách khó kiểm soát hết được.
  • Cloud hosting (hosting đám mây): Ưu điểm của việc sử dụng hosting đám mây là khả năng mở rộng cao, chi phí phải trả sẽ phụ thuộc vào nhu cầu lưu trữ của bạn. Mặc dù vậy thì hạn chế là việc quản lý phụ thuộc hoàn toàn vào nhà cung cấp dịch vụ Cloud, việc bảo mật cũng như các vấn đề hỗ trợ sẽ cần cân nhắc tùy theo mục đích sử dụng.
  • Managed hosting/Dedicated server (hosting/máy chủ chuyên dụng) là dịch vụ cho thuê máy chủ (server) chuyên dụng và phần cứng dành riêng cho khách hàng, không chia sẻ cho bất kỳ ai. Đây là dịch vụ tốn kém chi phí và đòi hỏi có nhân sự chuyên môn để quản lý.
  • VPS hosting (máy chủ ảo) là một máy ảo được một dịch vụ lưu trữ Internet bán dưới dạng dịch vụ. Khách hàng có quyền truy cập superuser vào hệ điều hành và cài mọi phần mềm trên đó. Sử dụng VPS giúp bạn tiết kiệm chi phí nhiều hơn so với máy chủ chuyên dụng, lượng băng thông và phần cứng phụ thuộc vào gói bạn trả. Dù vậy vẫn sẽ có những rủi ro nhất định phụ thuộc vào nhà cung cấp dịch vụ.

Xem việc làm IT helpdesk TPHCM đãi ngộ tốt trên TopDev

Hãy giải thích cách VPNs hoạt động

VPN viết tắt của Virtual Private Network hay mạng riêng ảo là một mạng riêng tư để kết nối các máy tính của các công ty, tập đoàn hay các tổ chức thông qua mạng Internet công cộng. VPN được sử dụng để truyền dữ liệu một cách an toàn và ẩn danh, hoạt động bằng cách ẩn địa chỉ IP của người dùng và mã hóa dữ liệu để chỉ người được cấp quyền nhận dữ liệu mới có thể đọc được.

Kết nối VPN chuyển hướng các gói dữ liệu từ máy của bạn tới một máy chủ từ xa khác trước khi gửi chúng cho các bên thứ ba qua Internet. Cách thức hoạt động VPN như sau:

  • VPN tạo ra đường hầm dữ liệu bảo mật giữa máy cục bộ của bạn và một máy chủ VPN khác ở cách xa bạn. Khi truy cập mạng, máy chủ VPN này trở thành nguồn chung cho tất cả dữ liệu của bạn. Nhà cung cấp dịch vụ Internet (ISP) của bạn và các bên thứ ba khác sẽ không thể xem nội dung lưu lượng Internet của bạn nữa.
  • Giao thức VPN như IPSec làm nhiễu dữ liệu của bạn trước khi gửi chúng qua đường hầm dữ liệu. IPSec là một bộ giao thức bảo mật giao tiếp thông qua giao thức Internet (IP) bằng cách xác thực và mã hóa mỗi gói IP của một dòng dữ liệu. Dịch vụ VPN hoạt động như một bộ lọc khiến dữ liệu của bạn không thể đọc được ở một đầu và chỉ giải mã ở đầu bên kia giúp ngăn ngừa việc sử dụng dữ liệu trái phép.

Kết bài

Trên đây là những câu hỏi mà bạn sẽ có thể gặp phải trong buổi phỏng vấn vị trí IT HelpDesk của mình. Đây là vị trí liên quan nhiều đến phần cứng cũng như đòi hỏi kinh nghiệm về việc thiết lập, xây dựng hệ thống mạng, server. Hy vọng bài viết hữu ích dành cho bạn, hẹn gặp lại các bạn trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

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

Xem thêm tuyển dụng IT hấp dẫn trên TopDev

Top 5 câu hỏi phỏng vấn IT Pre sales hàng đầu

câu hỏi phỏng vấn IT Pre sales

Phỏng vấn IT Pre sales liệu có phải chỉ liên quan tới bán bán và bán. Doanh số, doanh số và doanh số?

IT Pre sales là vị trí thường xuyên làm việc và tiếp xúc với khách hàng, vị trí này chịu trách nhiệm phát triển chiến lược cho công ty để bán hàng. Ngoài xúc tiến bán hàng cho khách hàng tiềm năng mới, vị trí này cũng đảm nhận việc tăng trưởng bán hàng cho các sản phẩm đã có công ty.

IT Pre sales Ôi vị trí này thì đập chai. hơn mấy ông Engineer nhiều. Một IT Pre sales cho biết

IT Pre sales cũng là vị trí cầu nối giữa khách hàng và nhóm phát triển, xây dựng mối quan hệ với khách hàng và làm việc với nhóm phát triển (development) để tìm cách đáp ứng nhu cầu của khách hàng.

Vậy phỏng vấn IT Pre sales cần chú ý những gì. Cùng tìm hiểu qua 5 câu hỏi phỏng vấn IT Pre sales phổ biến dưới đây!

1. Những kỹ năng nào là quan trọng đối với IT Pre sales?

Câu hỏi đầu tiên phỏng vấn IT Pre sales liên quan tới góc nhìn cá nhân. Giúp nhà tuyển dụng có thể đánh giá được góc nhìn cá nhân ứng viên. Ở câu hỏi này bạn có thể thoải mái bộc lộ quan điểm của cá nhân.

Một số câu trả lời có thể tham khảo: Tôi nghĩ kỹ năng quan trọng nhất đối với IT Pre sales là kỹ năng giao tiếp và giải quyết vấn đề. Giao tiếp là điều tối quan trọng bởi vị trí này đòi hỏi giao tiếp nhiều với khách hàng. Trường hợp khách hàng có yêu cầu những vấn đề phức tạp, bằng cách giao tiếp và trả lời, tôi có thể giải thích cho khách hàng.

IT Pre sales

Ngoài ra, việc giao tiếp tốt còn gây dựng mối quan hệ lâu dài và tốt đẹp đối với khách hàng, để khách hàng có thể tin tưởng vào chuyên môn của cá nhân tôi.

Giải quyết vấn đề cũng quan trọng không kém vì nó cho phép xác định chính xác yêu cầu của khách hàng, đưa ra các giải pháp phù hợp với những nhu cầu đó. Cuối cùng là kiến thức kĩ thuật, giúp trả lời chính xác, đem giải pháp cụ thể cho khách hàng.

Các loại câu hỏi này, anh em có thể chuẩn bị thêm:

  • Kinh nghiệm của bạn ở vị trí IT Pre Sales?
  • Làm sao bạn thuyết phục khách hàng cho một giải pháp đắt tiền hơn dự định của khách?

  Câu hỏi phỏng vấn Solution Architect không nên bỏ lỡ
 

2. Làm sao để bạn luôn cập nhật kiến thức?

Câu hỏi phỏng vấn thứ hai cho vị trí IT Pre sales liên quan tới cập nhật kiến thức mới. Ở vị trí tiếp xúc khách hàng, kiến thức về xu hướng và công nghệ mới là điều tất yếu. Nếu khách hàng muốn một giải pháp tốt, thường họ sẽ không bỏ qua những xu hướng và công nghệ mới nổi.

Điển hình như AI, nếu khách hàng muốn trao đổi về AI, bạn phải làm sao để có kiến thức, có khả năng trình bày được điểm mạnh và điểm yếu của AI ở thời điểm hiện tại.

Câu trả lời tuỳ thuộc và cá nhân từng ứng viên. Nhưng anh em có thể tham khảo qua ý trả lời sau đây. Tôi đã tìm ra được cách để luôn cập nhật kiến thức mới trong ngành. Tham dự hội thảo, tham dự các buổi event trao đổi về công nghệ mới. Thường xuyên đọc các bài báo phân tích và đánh giá về công nghệ mới. Ngoài ra, follow các kênh nói về công mới trên mạng xã hội cũng là cách hay để luôn cập nhật kiến thức mới trong ngành.

Một số câu hỏi anh em có thể chuẩn bị:

  • Trường hợp khách hàng hỏi bạn về một công nghệ bạn chưa biết gì, bạn sẽ trả lời thế nào?
  • Nếu không chắc chắn về công nghệ khách hàng đưa ra, bạn sẽ trả lời như thế nào?

3. Một lần thuyết phục khách hàng

Câu hỏi số 3 phỏng vấn IT Pre sales liên quan tới một hoặc vài lần thành công. Tất nhiên câu hỏi không phải chỉ giới hạn như ví dụ trong câu hỏi này nha anh em.

Bạn hãy cho biết một lần bạn thuyết phục khách hàng mua một sản phẩm hoặc dịch vụ đắt hơn so với dự định ban đầu của khách hàng.

Câu hỏi này nhấn mạnh vào khả năng thuyết phục và trình bày giải pháp cho khách hàng. Rõ ràng mà nói dân sales thì bán được hàng giá cao là tốt, nhưng ở đây anh em cần nhấn mạnh vào việc trả tiền cho sản phẩm hoặc dịch vụ đắt tiền hơn đáp ứng được nhu cầu của khách hàng. Ở góc nhìn ngược lại, sản phẩm rẻ tiền hơn có thể chỉ có cái lợi trước mắt, không đáp ứng được nhu cầu sau này.

  5 câu hỏi phỏng vấn Project Manager nhà tuyển dụng hay hỏi nhất

IT Pre sales

Anh em lưu ý rằng cần phải phân tích chuyên sâu và thuyết phục được khách hàng rằng việc chi trả cho thứ đắt tiền hơn là xứng đáng. Đáp ứng được nhu cầu của khách, ví dụ như báo cáo, tích hợp thống kê hoặc sao lưu backup dữ liệu.

Một số câu hỏi anh em có thể chuẩn bị:

  • Nếu khách hàng có trải nghiệm không tốt về sản phẩm trước của công ty. Làm sao bạn có thể tiếp cận bán hàng cho họ?
  • Nếu khách hàng muốn thêm tính năng vào sản phẩm bạn đang bán, bạn sẽ làm gì?

Tham khảo việc làm IT Presales hấp dẫn trên TopDev

4. Bạn có kinh nghiệm nói chuyện trước đám đông không?

Câu hỏi thứ 4 phỏng vấn IT Presales thiên về các kĩ năng mềm khác ngoài kỹ năng bán hàng. Trong giới IT, phần mềm, việc tham gia hội thảo, hội nghị đông người không có gì là quá xa lạ. Câu hỏi này nhà tuyển dụng muốn đánh giá thêm về kỹ năng mềm.

Cụ thể ở đây là kỹ năng giao tiếp và thuyết trình trước đám đông. Việc này đôi khi không đơn giản đâu nha. Sales gặp vài khách thì ok, nhưng ra trước đám đông thì không nói được câu nào.

IT Pre sales Thuyết trình trước đám đông là một kỹ năng quan trọng

Một số câu trả lời có thể đưa ra tuỳ vào kinh nghiệm cá nhân của anh em, nhưng có thể tham khảo ý sau. Nhấn mạnh cơ hội đã thuyết trình trước đám đông, cụ thể là các công ty nhỏ hoặc các công ty Fortune 500. Bài thuyết trình của tôi luôn được nghiên cứu kỹ lưỡng và điều chỉnh để đáp ứng được nhu cầu của khách hàng.

Tôi cảm thấy thoải mái khi thuyết trình trước đám đông. Tự tin trình bày toàn bộ tính năng cốt lõi của sản phẩm.

5. Bạn biết gì về sản phẩm công ty?

Câu hỏi cuối cùng phỏng vấn IT Pre sales là câu hỏi khá phổ biến khi tham gia phỏng vấn vị trí này. Thông thường, ứng viên cần tìm hiểu trước một số sản phẩm của công ty. Bởi có hứng thú và có tìm hiểu trước các sản phẩm công ty sẽ là điểm cộng lớn trong mắt nhà tuyển dụng.

Hơn nữa, nếu thật sự có hứng thú với sản phẩm công ty, khả năng bạn thành công ở vị trí IT Pre sales trong công ty sẽ cao hơn. Thế nên lời khuyên cho anh em là nên tìm hiểu qua các sản phẩm chủ lực, cũng như các sản phẩm chưa bán chạy ở công ty mà mình chuẩn bị phỏng vấn. Tìm hiểu sản phẩm, công nghệ làm ra sản phẩm, những yếu tố nào giúp họ cạnh tranh.

Tốt hơn nữa thì tìm hiểu cả điểm mạnh, điểm yếu của sản phẩm công ty đối thủ.

Một số câu hỏi có thể chuẩn bị:

  • Những sản phẩm nào của công ty bạn nghĩ có thể cải tiến?
  • Bạn nghĩ sản phẩm nào của công ty có doanh số cao nhất?. Tại sao?

6. Tìm hiểu thêm về IT Pre sales

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm:

Xem thêm nhiều việc làm IT hấp dẫn, lương cao tại TopDev!

Viết clean code: Code “đẹp trai” và code “xấu gái” có gì hay ho?

Viết clean code: Code “đẹp trai” và code “xấu gái” có gì hay ho?

Bài viết được sự cho phép của tác giả Sơn Dương

Trong sự nghiệp viết code, bạn sẽ nhận ra là bất kỳ ngôn ngữ nào, sẽ luôn có những good code – tạm gọi là code “đẹp trai” và bad code – tạm gọi là code “xấu gái”. Cả hai loại code này đều có thể chạy đúng logic. Nhưng những code “xấu gái” lại gây ra một vấn đề lớn khi maintain dự án. Dưới đây là một số kinh nghiệm viết clean code cho dự án.

Lập trình viên có nên trau chuốt khi viết code?

Trên thực tế, bất kể chương trình của bạn có chạy tốt tới đâu, vào một thời điểm nhất định nào đó sẽ có người nhúng tay vào việc đọc hoặc thay đổi lại code của bạn.

Có thể là thêm tính năng mới, sửa bug hoặc đơn giản chỉ là đọc để hiểu rõ “đứa con” của bạn hoạt động như thế nào.

Ngược lại, sẽ có lúc bạn cũng phải làm điều tương tự với code của những người khác. Cuộc đời mà!

Mọi chuyện sẽ thuận lợi hơn nếu bộ code dễ đọc và dễ hiểu, hay nói cách khác là code phải “đẹp trai”.

Bạn có tưởng tượng được tầm quan trọng của code chất lượng cao? Vậy hãy lật ngược vấn đề khi nghĩ tới hậu quả mà code “xấu gái” có thể mang tới. Đó chính là sự tổn thất về tiền bạc, nhân lực và sự lãng phí thời gian để đọc hiểu, sửa chữa những đoạn code vô cùng “xấu gái”.

Bạn viết một đoạn code và sau đó đoạn code đó được sử dụng ở rất nhiều nơi trong dự án. Do đó việc cung cấp những thông tin cần thiết về đoạn code của bạn thực sự rất quan trọng cho chính bạn và cả đồng nghiệp của bạn.

Có không ít lần mình bắt gặp các đồng nghiệp tán phét với nhau về việc họ không thể nhớ nổi đoạn code hay logic mà họ đã viết chỉ mấy ngày trước đó.

Đối với một đoạn code “xấu gái”, bạn sẽ phải mất nhiều thời gian hơn để tìm được đáp án cho câu hỏi “mình đã làm cái quái gì vào lúc đó nhỉ?

Một số lời khuyên viết clean code gọn gàng, mạch lạc

#1. Hãy viết “còm men” một cách khoa học

Viết clean code

Hầu hết các ngôn ngữ hiện nay đều hỗ trợ viết comment trong code. Comment giúp cho các đoạn code trở nên dễ hiểu và thuận lợi hơn cho việc bảo trì dự án sau này.

Những dòng comment sẽ được đánh giá cao khi chỉ ra được tại sao phải viết code như thế này thay vì chỉ mô tả đoạn code này làm nhiệm vụ gì. Bởi vì người ta đọc code là người ta đã hiểu code làm gì rồi đâu cần giải thích lại.

Việc comment cũng cần phải ngắn gọn và xúc tích nhất có thể, đừng dài dòng lê thê như viết văn bởi vì người đọc đã quá buồn ngủ khi đọc code rồi.

#2. Nhớ viết code thụt dòng đúng chuẩn (Indention)

#3. Chuẩn hóa file Readme’s

Sẽ là rất phức tạp nếu bạn có một project cần tiêu tốn hàng giờ để mò cài đặt môi trường và triển khai. Đây chính là lúc cần đến Readme như một vị cứu tinh.

Tốt nhất bạn nên viết một đoạn giới thiệu ngắn gọn về dự án trước khi mô tả phần code. Một Readme có cấu trúc như tại đây

Tham khảo việc làm Java Developer hấp dẫn trên TopDev

#4. Luôn đặt tên hàm, tên lớp theo chuẩn (Naming Conventions)

Rất nhiều lần chúng ta bắt gặp một class với cái tên ApiManager – cái tên chẳng hề thể hiện được mục đích rõ ràng của lớp đó.

Bạn nên tham khảo quy tắc đặt tên bằng cách search trên Google từ khóa “best coding practice“.

Điều này giúp bạn phân biệt được khi nào và ở đâu một biến sẽ ra khỏi phạm vi chỉ bằng việc nhìn vào một block code.

Tất cả tên của lớp hay hàm(method, function) đều phải có ý nghĩa. Đọc là hiểu tác dụng chính của nó, ngoại trừ những đối tượng tạm thời (ví dụ như tên biến trong vòng for :

for(int i = 0; i< length; i++)
Một cái tên tốt là cái tên mà khi đọc lên nó chứa đựng đầy đủ thông tin về công dụng cũng như cách sử dụng và điều này chỉ có thể làm được nếu tuân thủ nguyên tắc “single responsibility”.

#5. Hạn chế tối đa Magic Numbers

Magic Numbers tức là bạn tự định nghĩa một hằng số và chương trình sẽ chỉ chạy đúng với hằng số đó.

Không ai có thể biết được tại sao con số đó được chọn lựa. Không ai THỰC SỰ biết được những con số đó ảnh hưởng đến chương trình như thế nào. Ngoại trừ việc thay đổi chúng, đồng nghĩa với phá vỡ logic mọi thứ.

Những con số ma thuật đó đều chẳng tốt đẹp gì cả. Vì vậy, hãy né chúng ngay để tự cứu lấy mình!

Mình lấy một ví dụ với đoạn code sau:

if(a < 8 && b < 8 && c < 8){
    do_something();
}

Ta thấy lệnh so sánh giá trị 3 biến a,b,c với số 8 tồn tại 2 vấn đề.

  • Thứ nhất: số 8 trong trường hợp này trở thành “magic number“. Khi bạn đọc qua đoạn code này, chắc chắn bạn không biết 8 đang biểu diễn cho cái gì. Đối với tác giả đoạn code này thì đó là thời gian làm việc ban ngày của công nhân – 8 tiếng đồng hồ và chắc chỉ mình tác giả đoạn code này thực sự biết điều đó
  • Thứ hai: số 8 được lặp lại 3 lần ở các phép so sánh. Như vậy, khi cần thay đổi giá trị 8 thành 7 hoặc tăng lên 12 chẳng hạn, ta sẽ phải đi dò từng vị trí mà 8 xuất hiện… Rất bất tiện và dễ phát sinh lỗi.

vì vậy để viết code clean hơn, ta nên phẫu thuật chỉnh hình nó thành như sau:

// Số giờ làm việc trong ngày của công nhân
final int WORK_HOURS = 8;

if(a < WORK_HOURS && b < WORK_HOURS && c < WORK_HOURS){
    do_something();
}

#6. Một số quy tắc khác

Và thật ra còn hàng trăm hàng ngàn thứ khác để giúp code chúng ta trở nên đẹp đẽ hơn. Viết clean code cho đẹp là cả một quá trình. Để tóm lại thì mình có một số ý sau.

  • Code đẹp là một code được tổ chức tốt. Đừng để code của bạn trở thành đống lộn xộn, mà giới developer hay gọi là “spaghetti code”.
  • Code đẹp là code phải được comment đầy đủ. Comment tại sao lại viết code như thế, thay vì code đó chạy như thế nào. Tốt hơn hết là nên có ví dụ về cách sử dụng.
  • Code đẹp không phải là code “thông minh”. Code “thông minh” đến mức người đọc không thể hiểu nổi. Thì dù có chạy đúng logic vẫn là code “ngu”. Vì vậy, nên code thật đơn giản và rõ ràng, đọc phát hiểu liền.
  • Code đẹp cần được thực hiện từ các đơn vị tính toán nhỏ nhất. Tức là mỗi hàm chỉ làm một việc thôi, để nó có thể tái sử dụng nhiểu nhất có thể.

Kết luận

Trên đây là toàn bộ những chia sẻ của mình về kinh nghiệm viết clean code. Hi vọng nó sẽ giúp các bạn tránh được những bug tiềm tàng.

Với những lưu ý kể trên, hãy cùng cố gắng để trở thành cha đẻ của những code “đẹp trai” nhất trong mắt tất cả mọi người.

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

Xem thêm:

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

Git là gì mà lại giúp bạn và cả team làm việc tốt hơn?

Git là gì mà lại giúp bạn và cả team làm việc tốt hơn?

Bài viết được sự cho phép của tác giả Phạm Bình

I. Từ vấn đề cho tới GIT là gì

1.1 Vấn đề

Chúng ta cùng tìm hiểu vấn đề thông qua một ví dụ do mình bịa ra như sau:

Bình và Sơn làm chung một dự án website thương mại điện tử, sau khi nhận yêu cầu, Bình và Sơn chia nhau công việc. Cách làm việc là mỗi khi có ai code xong một phần tính năng, thì sẽ copy code của mình gửi cho người kia thông qua USB để ghép vào dự án chung.

Thời gian đầu, code chưa có gì phức tạp, Bình và Sơn vẫn trao đổi code của mình qua USB bình thường. Nhưng sau một thời gian, code trở nên phức tạp, Bình và Sơn liên tục gặp sai sót trong quá trình copy code qua lại cho nhau, và tốn thời gian để giải quyết các sai sót đó. Vì không nghĩ đến điều này, nên dự án của Bình và Sơn bị thất bại do quá hạn deadline.

Tuy là ví dụ hư cấu, nhưng trong thực tế vẫn có các tình huống tương tự như vậy xảy ra, và trong cuộc đời của mỗi developer, thì hầu hết mọi người đều từng có một lần trao đổi và ghép code qua USB như vậy.

Quay trở lại với ví dụ về Bình và Sơn, dự án thất bại là do quá hạn deadline, mà nguyên nhân sâu xa là do cách làm việc không tốt. Khi copy code qua lại với nhau như vậy, việc xảy ra sai sót cũng là điều dễ hiểu vì:

  • Sẽ rất khó để ghép code, khi cả 2 người cùng sửa trên một file, và còn khó hơn khi hai người cùng sửa trên một dòng.
  • Code có thể bị “rơi rụng” (copy thiếu) trong lúc ghép code.
  • Với những tính năng nhiều code, thì thời gian ghép code có thể mất cả ngày.

Thực tế, khi làm việc theo cách của Bình và Sơn (hay cách nào tương tự vậy) thì còn có nhiều hạn chế khác bên cạnh các hạn chế kể trên:

  • Khó khăn khi bổ sung thêm người mới vào code cùng, càng nhiều người làm thì tỉ lệ sai sót càng cao.
  • Tốn thời gian để giải quyết các sai sót không đáng có.
  • Khó làm việc độc lập.

Vậy giải pháp cho các vấn đề trên là gì? Chính là GIT

1.2 Git là gì?

Để tìm hiểu GIT là gì, trước tiên mình muốn bạn biết về VCS là gì trước.

VCS – Version Control System (Hệ thống quản lý phiên bản). Cái tên VCS đã phần nào nói lên tính năng của hệ thống này, VCS sẽ lưu lại toàn bộ mã nguồn và ghi chép đầy đủ trạng thái thay đổi của các file, với từng trạng thái thay đổi mỗi file, đều được log lại thành một phiên bản.

Ví dụ dự án A có 10 thay đổi, thì VCS sẽ log lại thành 10 phiên bản khác nhau, và bạn có thể xem lại các phiên bản này.

Lưu ý: VCS ám chỉ một dạng hệ thống, chứ không phải tên một hệ thống cụ thể.

GIT đơn giản là một hệ thống thuộc dạng VCS. Tức là ngoài GIT ra vẫn còn nhiều hệ thống khác tương tự như GIT. Nhưng ngày nay, khi nói tới VCS, người ta chỉ hình dung tới GIT, vì GIT có một số đặc điểm nổi bật hơn các VCS khác. Tuy nhiên dưới góc độ của một người mới bắt đầu tìm hiểu về VCS nói chung và GIT nói riêng, mình cho rằng bạn sẽ không quan tâm tới việc so sánh GIT với các VCS khác, nên mình xin phép không đề cập tới phần này. Chúng ta tạm thời khẳng định với nhau rằng “GIT là lựa chọn thích hợp nhất cho một VCS trong thời điểm hiện tại“.

  Các vai trò trong một team phát triển phần mềm

  Tech Lead là gì? Nhiệm vụ, vai trò của Tech Lead trong team

1.3 Vai trò của GIT trong phát triển phần mềm

Ngày nay, bất kỳ dự án phần mềm nào cũng nên áp dụng GIT, vì GIT giúp giải quyết một số vấn đề quan trọng sau:

Là nơi lưu trữ source code
Hãy tưởng tượng GIT là một “đám mây” lưu trữ như Google Drive, Dropbox, tuy nhiên GIT được thiết kế riêng để lưu trữ source code.

Quản lý phiên bản source code
Hãy tưởng tượng bạn đang phát triển một sản phẩm có rất nhiều người sử dụng. Vì sản phẩm có nhiều người dùng, nên yêu cầu tính ổn định phải cực kỳ cao. Vì yêu cầu tính ổn định cao, nên bạn không được phép code trực tiếp vào phiên bản source code đang chạy ổn định, mà phải code vào một phiên bản khác – gọi là phiên bản dev. Trong lúc bạn đang code ở phiên bản dev, thì phiên bản chạy ổn định vẫn có các cập nhật hằng ngày. Vậy vấn đề gặp phải là làm sao để có thể phát triển được nhiều phiên bản source cùng lúc. Thì với GIT, việc phát triển nhiều phiên bản cùng lúc vô cùng dễ dàng, việc code thêm ở phiên bản này sẽ không ảnh hưởng tới code ở phiên bản khác.

Có thể merge code (ghép code) từ nhiều người
Đây chính là một trong những lý do quan trọng nhất khiến người ta sử dụng VCS nói chung và GIT nói riêng. Với GIT, việc merge code từ nhiều người có thể diễn ra tự động, nếu trong quá trình merge code mà có xảy ra xung đột (mà GIT gọi là conflict) thì GIT sẽ cảnh báo để chúng ta biết.

Blame code (vui thôi nhé)
Giả sử bạn phải sửa code của người khác, khi đọc code, bạn phát hiện một đoạn code ngu kinh khủng, bạn muốn tìm xem ai là người code đoạn này để chửi cho bõ tức. Thì GIT có thể cho bạn biết đó là kẻ nào.

Tham khảo Job FrontEnd HOT trên TopDev!

1.4 Làm việc với GIT như thế nào

Một số khái niệm

Để biết cách làm việc với GIT, mình sẽ chỉ bạn mấy khái niệm cơ bản trong GIT trước:

  • Repository (hay nhiều người gọi tắt là repo): Là nơi lưu trữ source code, mỗi repository sẽ đại diện cho một dự án. Repository sẽ chia làm 2 loại, là Local repository và Remote repository.
  • Local repository: Là repository được đặt trên máy tính của bạn.
  • Remote repository: Là repository được đặt trên GIT server.
  • Init repository: Là thao tác khởi tạo một Local repository.
  • Clone: Là thao tác nhân bản một Remote repository thành Local repository trên máy của bạn.
  • Branch (Nhánh): GIT quản lý các phiên bản source dưới dạng cây có nhiều nhánh, mỗi nhánh là một phiên bản. Các nhánh có thể được tách ra, hoặc ghép vào nhau. Branch trong GIT được chia làm 2 loại, là branch master (nhánh chính) và các branch khác do bạn tạo ra trong quá trình làm việc.
  • Branch master: Là nhánh đầu tiên khi khởi tạo một GIT repository, branch master thường là nơi chứa source code đang chạy ổn định.
  • Checkout: Là thao tác chuyển qua chuyển lại giữa các branch. Khi nói “checkout master branch”, nghĩa là chuyển sang nhánh master.
  • Pull (kéo): Là thao tác đồng bộ code từ Remote repository xuống Local repository.
  • Commit: Là thao tác “xác nhận” một sự thay đổi của code. Thường thì mỗi tính năng sau khi được hoàn thiện sẽ thực hiện một commit.
  • Push (đẩy): Là thao tác đồng bộ code từ Local repository lên Remote repository.
  • Merge: Là thao tác ghép code lại với nhau.
  • Conflict: Là sự xung đột khi merge code.

Cách làm việc với GIT

Phần này mình sẽ trình bày một số thao tác và đặc điểm cơ bản khi áp dụng GIT trong dự án:

  • Git được cài đặt sẵn trên Linux và hỗ trợ các hệ điều hành phổ biến, bạn có thể download GIT miễn phí ở đây.
  • GIT nên được sử dụng trên Command Line thay vì các phần mềm hỗ trợ GIT trên GUI.
  • GIT có thể có nhiều Remote repository và Local repository. Remote repository sẽ đặt ở trên GIT server, còn Local repository đặt trên máy của bạn. Remote repository và Local repository sẽ được liên kết với nhau.
  • GIT quản lý tất cả các sự thay đổi như: thêm file mới, sửa file, xóa file, chmod thư mục,… bất kỳ điều gì làm thay đổi source code đều được GIT quản lý.
  • Khi bạn code, bạn sẽ code trên trên Local repository. Sau khi code xong tính năng, bạn thực hiện thao tác commit để xác nhận sự thay đổi của code.
  • Để đẩy các commit từ Local repository lên Remote repository, bạn sử dụng thao tác push. Các thành viên khác trong team muốn cập nhật các code mới do bạn bổ sung, thì thực hiện thao tác pull để đồng bộ code từ Remote repo về Local repo của họ.
  • Khi pull code từ Remote repo về Local repo sẽ xảy ra thao tác merge code. Nếu không bị conflict code giữa Local repo và Remote repo, việc merge code sẽ diễn ra tự động, nếu xảy ra conflict, GIT sẽ thông báo cho bạn biết.
  • Nếu bạn muốn khởi tạo một Local repo từ Remote repo thì sử dụng thao tác clone.
  • Branch master đang hoạt động ổn định, bạn không muốn code trực tiếp trên branch master, thì từ nhánh master bạn có thể tạo ra một nhánh khác – tạm gọi là nhánh xxx. Nhánh xxx lúc này chứa toàn bộ code của nhánh master, bạn có thể thoải mái thực hiện các thao tác commit, push, pull trên nhánh này mà không làm ảnh hưởng tới nhánh master. Khi tính năng trên nhánh xxx hoạt động ổn định, bạn có thể yên tâm merge code ở nhánh xxx vào nhánh master.

II. Git với Github

Chắc sẽ có nhiều bạn bị nhầm lần giữa GIT và Github.

Thực ra GIT và Github vốn không thể so sánh với nhau, vì GIT là tên một hệ thống, còn Github là tên một đơn vị cung cấp dịch vụ GIT. Có thể hiểu nhanh rằng GIT và Github cũng tương tự như Porn và Pornhub vậy.

GIT vs Github, and porn vs pornhub
GIT vs Github, and porn vs pornhub

 

Như mình đề cập ở trên, git có 2 dạng repository là Local repo được đặt trên máy của các lập trình viên, và Remote repo được đặt trên GIT server. Điều này có nghĩa là, để sử dụng GIT, thì việc cài đặt GIT trên máy tính của bạn là chưa đủ, bạn cần phải có một server đóng vai trò như một GIT server nữa, và Github là đơn vị cung cấp GIT server miễn phí bạn.

Thực tế thì Github còn có nhiều tác dụng hơn là cung cấp GIT server miễn phí. Với cộng đồng lập trình viên nói chung, Github còn giống như một mạng xã hội. Có điều mạng xã hội này show project thay thì show status hay show ảnh, nút like được thay bằng nút star, phần comment thì được thay bằng issues 

III. Cách sử dụng GIT cơ bản

Phần này mình sẽ hướng dẫn các bạn cách sử dụng GIT, cụ thể chúng ta sẽ sử dụng dịch vụ GIT miễn phí của Github – Một trong những nền tảng cung cấp dịch vụ GIT phổ biến nhất hệ mặt trời.

Trước tiên hãy đảm bảo máy tính của bạn đã cài đặt GIT, bạn có thể kiểm tra bằng cách thực hiện lệnh git --version trong terminal.

git --version

Nếu thấy xuất hiện thông tin phiên bản của GIT, thì có nghĩa là máy tính của bạn đã cài đặt. Ngược lại, bạn phải download và cài đặt GIT vào máy trước khi thực hiện các bước sau đây.

3.1 Đăng ký tài khoản Github.com

Bạn truy cập vào https://github.com/join, điền thông tin vào form để đăng ký tài khoản.

Đăng ký tài khoản Github.com
Ảnh chụp giao diện đăng ký tài khoản github.com (chụp ngày 27/06/2020)

Github sẽ yêu cầu bạn xác thực tài khoản qua email, thế nên hãy để ý mail box của bạn nhé.

Sau khi đăng ký xong, hãy đăng nhập vào Github để chuẩn bị cho bước tiếp theo.

3.1 Tạo repository đầu tiên

Sau khi đăng nhập, bạn tìm nút “New repository” như hình.

Đăng ký tài khoản Github.com
Ảnh chụp giao diện trang chủ của github.com (chụp ngày 27/06/2020)

 

Nhấp vào “New repository”, bạn sẽ được chuyển tới trang tạo repository như hình.

Đăng ký tài khoản Github.com
Ảnh chụp giao diện tạo repository trên github.com (chụp ngày 27/06/2020)

 

Điền các thông tin cần thiết rồi nhấn “Create repository”, trong đó:

  • Repository name: Tên repository của bạn, bạn nên nhập dạng “ten-repository”
  • Description: Nhập mô tả về repository của bạn, thông tin này để trống cũng được.
  • Public hay Private: Public thì bất kỳ ai cũng có thể xem và clone repo của bạn, Private thì chỉ có bạn hoặc những người bạn cho phép mới có thể thực hiện các thao tác đó. Ở đây bạn hãy chọn Public dễ thao tác hơn, chúng ta sẽ tìm hiểu về Private repo sau.

Sau đó, bạn sẽ được chuyển tới trang chi tiết repository như hình.

Đăng ký tài khoản Github.com

Vậy là bạn đã tạo thành công một GIT repository.

Đừng vội hoảng loạn với các dòng lệnh khó hiểu mà Github gợi ý cho bạn trong trang này nhé, hãy bình tĩnh đọc chúng và bạn sẽ hiểu thôi.

Cụ thể là bạn vừa tạo xong một Remote repository mới tinh chưa có code, và Github đang gợi ý cho bạn một số cách để đẩy những file đầu tiên lên Remote repository này. Theo như Github gợi ý, thì bạn có 3 cách:

  • Cách 1: Tạo một Local repository trên máy tính của bạn, liên kết nó với Remote repository này, tạo commit đầu tiên rồi đẩy commit đó lên nhánh master.
  • Cách 2: Nếu bạn có sẵn một Local repository, thì chỉ cần liên kết nó với Remote repository này, và đẩy các commit lên master.
  • Cách 3: Import từ một repository khác.

Ở đây mình sẽ thực hiện theo Cách 1. Bạn mở CLI lên và chạy lần lượt các lệnh sau (Hãy đế ý tới phần mình chú thích sau mỗi lệnh nhé).

mkdir my-local-repository # Tạo một thư mục có tên là "my-local-repository"
cd my-local-repository # Di chuyển vào thư mục vừa tạo
echo "# first-repository" >> README.md # Tạo một file README.md với nội dung "# first-repository"
git init # Khởi tạo một GIT Local repository
git add README.md # Thêm file README.md vào commit
git commit -m "first commit" # Xác nhận sự thay đổi
git remote add origin https://github.com/phambinhnet/first-repository.git # Link tới remote repository
git push -u origin master # Đẩy code lên nhánh master

Khi chạy lệnh git push ..., git sẽ yêu cầu bạn nhập username và password.

Sau khi chạy xong, tại trang chi tiết Repository trên Github, bạn tải lại trang sẽ thấy kết quả như hình:

Đăng ký tài khoản Github.com

Vậy là bạn đã thực hiện thành công thao tác push code từ Local repository lên Remote repository.

Nếu Local repository của bạn tiếp tục có sự thay đổi và bạn muốn đồng bộ (push) nó lên Remote repository, thì bạn cũng chỉ cần thực hiện lại các bước:

git add <tên file, tên thư mục, . hoặc *> # Thêm các sự thay đổi vào commit
git commit -m "ghi chú về sự thay đổi"
git push origin master

Chi tiết hơn về các lệnh git addgit commitgit push thì mình sẽ trình bày ở phần tiếp theo.

3.2 Add, status, pull, commit, push

git add

Một commit có thể bao gồm nhiều sự thay đổi, để thêm sự thay đổi vào commit, bạn sử dụng lệnh git add pattern. Trong đó, pattern có thể là:

  • Đường dẫn tới một file hoặc thư mục
  • Sử dụng pattern là * nếu bạn muốn add tất cả sự thay đổi trong thư mục hiện tại (bao gồm cả các thư mục con).
  • Sử dụng pattern là . nếu bạn muốn thêm tất cả sự thay đổi

git status

Lệnh git status cho phép bạn xem trạng thái của Local repository hiện tại, như có những file nào mới, có file nào bị chỉnh sửa, có file nào bị xóa,…

Thường thì trước khi sử dụng lệnh git add, mình sẽ chạy một lần lệnh git status để xem Local repo có những sự thay đổi nào, từ đấy mới biết đường mà add.

git commit

Lệnh git commit cho phép bạn xác nhận các sự thay đổi sau khi chúng đã được add. Cấu trúc của một lệnh git commit thường là như sau:

git commit -m "Mô tả về sự thay đổi"

Sau khi chạy xong lệnh git commit, mình cũng thường chạy lại lệnh git status thêm một lần nữa để xem có commit thiếu sự thay đổi nào không, cũng như để đảm bảo là đã commit thành công.

git push

Lệnh git push được sử dụng để đẩy các commit từ Local repo lên Remote repo.

Sau khi commit, thì các code thay đổi vẫn nằm tại Local repo, để đẩy chúng lên Remote repo thì bạn phải sử dụng lệnh git push. Đầy đủ câu lệnh này lên là:

git push origin branch

Trong đó origin là tên remote repository (tên các remote repo cũng thường là origin luôn), còn branch là nhánh muốn đẩy lên. Giả sử mình muốn đẩy các commit lên nhánh master thì mình sẽ chạy lệnh như sau:

git push origin master

git pull

Lệnh git pull được sử dụng để đồng bộ Remote repository về Local repository. Đầy đủ câu lệnh nên là:

git pull origin branch

Với origin và branch được mô tả giống như lệnh git push. Giả sử mình muốn đồng bộ Remote repo từ nhánh master về Local repo thì mình sẽ sử dụng lệnh sau:

git pull origin master

3.3 Branch, checkout

Phần này khá ngắn gọn thôi.

GIT quản lý các phiên bản source qua khái niệm branch, mặc định mỗi GIT repo sẽ có sẵn một branch là branch master.

Để tạo một branch mới, trước tiên bạn cần xác định là branch mới này sẽ được tách ra từ branch nào. Ví dụ mình tạo một branch mới được tách ra từ branch master thì mình sẽ thực hiện các lệnh như sau:

git checkout master # Chuyển qua nhánh master
git checkout -b ten_branch # Tạo branch mới đồng thời chuyển qua branch vừa tạo

Việc tách nhánh để làm việc sẽ khiến bạn quản lý sự thay đổi tốt hơn, cũng như giảm thiểu sai sót. Vì sau khi tách nhánh, bạn có thể thoải mái chỉnh sửa code trên nhánh vừa tách mà không lo ảnh hưởng tới các nhánh khác. Bạn có thể xem hình sau để hiểu rõ hơn (mỗi một chấm xanh là đại diện cho một commit).

git
Nhánh trên git được tổ chức dưới dạng cây

Ở hình trên, bạn thấy nhánh new_feature được tách ra từ nhánh master, trên nhánh new_feature có 2 commit. Trước khi nhánh new_feature được merge vào master, nếu 2 commit kia có lỗi thì cũng sẽ không ảnh hưởng tới nhánh master.

IV. Lời kết

Đây là một bài viết dài và có nhiều kiến thức, nếu bạn có đọc một lần mà vẫn chưa hiểu thì cũng là chuyện bình thường. Cá nhân mình biết GIT từ thời năm 2 sinh viên, nhưng mãi cho tới khi ra trường và đi làm mới hiểu thật sự về cách làm việc với GIT. Nếu bạn cảm thấy khó hiểu, thì mình có một vài gợi ý sau:

Chúc các bạn học tập hiệu quả.

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

Những bài viết liên quan:

5 câu hỏi phỏng vấn Project Manager nhà tuyển dụng hay hỏi nhất

5 câu hỏi phỏng vấn Project Manager nhà tuyển dụng hay hỏi nhất

Project Manager, nghe thôi đã thấy quyền lực, phỏng vấn Project Manager yêu cầu những kiến thức gì?

Dưới đây là top 5 câu hỏi được đánh giá là mới và thường xuyên được sử dụng trong các buổi phỏng vấn vị trí quản lý dự án. Các câu hỏi dưới đây có đề cập thêm một số câu hỏi liên quan, ứng viên có thể chuẩn bị thêm, tạo tiền đề cho buổi phỏng vấn thành công tốt đẹp.

phỏng vấn Project ManagerTrời ơi, cuối cùng cũng có một requirement từ Project Manager

Tuy nhiên, vị trí Project Manager sướng hơn nhiều

phỏng vấn Project Manager

Bắt đầu ngay thôi nào!

1. Giới thiệu bản thân và các dự án đã quản lý

Câu hỏi đầu tiên phỏng vấn Project Manager là câu hỏi giới thiệu bản thân. Đây là câu hỏi phổ biến cho rất rất nhiều các vị trí tuyển dụng. Tuy nhiên đối với vị trí quản lý dự án, việc giới thiệu bản thân là vô cùng quan trọng.

Đối với nhà tuyển dụng, câu hỏi này giúp ứng viên thoải mái, tạo cơ hội cho ứng viên có thể trình bày những kinh nghiệm hiện có của mình.

Trả lời cho câu hỏi này, ứng viên cầu lưu ý trả lời ngắn gọn về kinh nghiệm bản thân, nên tập trung vào những ý chính. Tập trung vào vị trí Project Manager đã trải qua trước đó.

Về các dự án và kinh nghiệm quản lý các dự án trước đó. Ứng viên có thể nêu tổng quan bao gồm loại hình dự án, độ lớn của team, đặc thù của dự án. Dự án thành công hoặc kết thúc như thế nào. Điều tâm đắc khi trải qua dự án.

phỏng vấn Project Manager

Các câu hỏi có thể chuẩn bị thêm:

  • Làm sao bạn giữ cho động lực của team luôn ở trạng thái tốt?
  • Làm thế nào bạn đánh giá độ ưu tiên cho từng task?
  • Kích cỡ team size có ảnh hưởng tới thành công của dự án không?

  Project Manager là gì? Công việc của Project Manager
  Mẫu bảng mô tả công việc Project Manager

2. Những tools nào bạn sử dụng để quản lý dự án?

Câu hỏi số hai phỏng vấn Project Manager liên quan tới kinh nghiệm sử dụng tools quản lý dự án. Đối với các vị trí khác trong team như lập trình viên, QC/QA. Việc sử dụng tools nào đôi khi không quá quan trọng.

Tuy nhiên, đối với vị trí Quản lý dự án, kinh nghiệm sử dụng tools để quản trị dự án là thông tin quan trọng đối với nhà tuyển dụng. Việc sử dụng thành thạo các công cụ quản lý dự án phần mềm là một điểm cộng lớn.

phỏng vấn Project Manager

Trả lời cho câu hỏi này, ứng viên cần nêu những ưu điểm nổi bật, kinh nghiệm sử dụng từng loại công cụ. Ngoài ra, ứng viên cũng có thể nêu ra các thủ thuật, các tính năng chính thường sử dụng đối với từng loại công cụ.

Một số câu hỏi ứng viên có thể chuẩn bị trước:

  • Bạn thường trực quan hoá thông tin hay dữ liệu liên quan tới dự án bằng cách nào?
  • Các loại biểu đồ nào thường được sử dụng?
  • Bạn có kinh nghiệm nào tự động hoá hoặc có phương án để giảm bớt công sức thu thập thông tin từ dự án không (đề cập tới automation)

Nhiều tin tuyển dụng Project Manager lương cao trên TopDev, ứng tuyển ngay!

3. Bạn đã quản lý team remote chưa?

Câu hỏi thứ 3 phỏng vấn Project Manager là câu hỏi cập nhật mới nhất về phát triển phần mềm sau đại dịch Covid. Nếu như cách đây vài năm, việc làm việc remote team chưa phổ biến thì sau đại dịch, việc quản lý team remote trở nên phổ biến hơn.

Câu hỏi này nhằm đánh giá thêm về kinh nghiệm, cũng như khả năng thực tế của người quản lý dự án khi làm việc với team remote, vốn là công việc có tính chất khó khăn hơn so với team offline.

phỏng vấn Project Manager

Để trả lời cho câu hỏi này, người quản lý dự án cần nêu các kinh nghiệm làm việc, nêu những khó khăn gặp phải:

  • Làm sao để đảm bảo tiến độ cho dự án?
  • Những khó khăn gì khi làm việc với team remote?
  • Làm sao để gắn kết team trong trường hợp team làm remote?

Câu trả lời có thể khác nhau tuỳ kinh nghiệm của từng ứng viên, tuy nhiên cần nêu bật khó khăn khi làm với team remote. Những giải pháp sáng tạo để làm việc với team remote thành công.

Một số câu hỏi có thể chuẩn bị cho phần này:

  • Bạn đã làm việc với team bao gồm nhiều thành viên ở nhiều quốc gia chưa?
  • Bạn đã làm việc với những hình mẫu team nào?

4. Phong cách leader bạn mong muốn trở thành là gì?

Câu hỏi thứ 4 phỏng vấn Project Manager liên quan tới suy nghĩ về định hướng, hướng đi về tương lai của Project Manager. Câu hỏi này khá quan trọng vì tầm nhìn và góc nhìn ở vị trí Project Manager rất quan trọng với nhà tuyển dụng.

Cần nhấn mạnh là phong cách và con đường để tiến xa hơn cho vị trí Project Manager là không cố định, không có đúng hay có sai, tất cả là hướng đi mà mỗi cá nhân tự lựa chọn cho riêng mình.

Phong cách của project manager ở đây có thể được trả lời dựa trên một vài gợi ý dưới đây:

  • Trường hợp không hỏi ý kiến các thành viên trong team, làm sao để cả team vẫn tin tưởng sự lựa chọn của bạn?
  • Làm sao bạn giải quyết xung đột ở cương vị là quản lý dự án
  • Bạn có cảm thấy sự xuất hiện của bạn gây ra áp lực cho team? Nếu có, bằng cách nào để giảm áp lực cho team?
  • Phong cách giao tiếp của bạn với team như thế nào? Có điều gì cần lưu ý khi giao tiếp với team không?

phỏng vấn Project Manager

Đây là câu hỏi mở và đề cao ý kiến cá nhân, vì vậy ứng viên thoải mái trả lời câu hỏi dựa trên góc nhìn của chính mình. Phong cách mỗi người là khác nhau.

Một số câu hỏi có thể chuẩn bị trước:

  • Khi có tin không tốt về dự án, bạn truyền đạt tới team của mình như thế nào?
  • Trường hợp có thay đổi về requirement của dự án, nếu thay đổi lớn, bạn xử lý hoặc truyền đạt thông tin đó cho team như thế nào?

5. Những thử thách gặp phải trong dự án và cách giải quyết

Câu hỏi thứ 5 phỏng vấn Project Manager đề cập tới kinh nghiệm cá nhân của bản thân ứng viên. Câu hỏi này nhằm xác định chính xác kinh nghiệm của ứng viên, bởi khi trải qua càng nhiều dự án, chắc chắn trải qua không ít những khó khăn.

Ngoài ra, việc nêu ra các thử thách, khó khăn gặp phải trong dự án cũng giúp nhà tuyển dụng có cái nhìn rõ ràng hơn khi tuyển dụng. Đảm bảo rằng bạn là người có thể vượt qua khó khăn trong quá trình làm việc.

Câu trả lời được xem là tốt nhất là sử dụng phương pháp STAR (STAR methods). Phương pháp này chia tình huống thành 5 loại:

  • S – Situation: Phân tích tình huống hiện tại đang gặp phải (ví dụ team có 2 người bị ốm, hoặc bị covid).
  • T – Task: Giải thích cách bạn muốn giải quyết tình huống. Ví dụ: mục tiêu của bạn là đảm bảo rằng bạn vẫn có thể hoàn thành dự án đúng hạn.
  • A – Action: Lên danh sách các hành động, các phương án giải quyết. Ví dụ như yêu cầu trợ giúp từ nhóm khác, nhờ sự trợ giúp từ các thành viên khác.
  • R – Result: Kết quả đạt được khi áp dụng phương pháp STAR.

phỏng vấn Project Manager

Một số câu hỏi khác có thể chuẩn bị:

  • Những tố chất nào bạn cho là quan trọng đối với vị trí quản lý dự án?
  • Bạn gặp phải dự án nào thất bại?. Nguyên nhân thất bại của dự án đó?

6. Tham khảo thêm về phỏng vấn Project Manager

Để chuẩn bị tốt khi phỏng vấn Project Manager, ứng viên có thể tham khảo thêm thông tin dưới đây!

Cảm ơn bạn đã dành thời gian đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Xem thêm:

Xem thêm nhiều việc làm IT hấp dẫn, lương cao tại TopDev

ReactJS và React Native: Những điểm giống và khác nhau cơ bản

Bài viết được sự cho phép của tác giả Sơn Dương

Hiện nay có nhiều bạn mới bắt đầu học về React Native và đều có những băn khoăn về hai khái niệm: ReactJS và React Native. Hai thằng này có tên gần giống nhau, liệu có phải là cùng một lò sinh ra không? Các viết code và cơ chế hoạt động có giống nhau không?..v.v

Hôm nay, mình sẽ cùng nhau khám phá ReactJs và React Native giống và khác nhau chỗ nào nhé!

Giới thiệu React.js và React Native

React.js (hay còn được gọi là React) là một thư viện JavaScript mã nguồn mở được sử dụng rộng rãi để xây dựng các giao diện người dùng (UI) cho ứng dụng web. React.js cho phép các nhà phát triển xây dựng các thành phần giao diện người dùng có thể tái sử dụng và quản lý trạng thái ứng dụng một cách hiệu quả. Với khả năng render nhanh chóng nhờ sử dụng Virtual DOM, React.js đã trở thành lựa chọn hàng đầu cho việc phát triển các ứng dụng web hiện đại, nơi yêu cầu hiệu suất cao và khả năng mở rộng tốt.

Giới thiệu React.j

Trong khi đó, React Native là một framework phát triển ứng dụng di động đa nền tảng, cũng được phát triển dựa trên cùng một triết lý và cú pháp của React.js. Tuy nhiên, thay vì render ra HTML như React.js, React Native render ra các thành phần giao diện native, cho phép các nhà phát triển xây dựng ứng dụng di động với hiệu suất gần như native cho cả iOS và Android. Điều này có nghĩa là bạn có thể sử dụng JavaScript để phát triển các ứng dụng di động mà không cần phải viết mã riêng biệt cho từng hệ điều hành.

Giới thiệu React Native

Lịch sử ra đời của ReactJS và React Native

ReactJS ra đời khi nào?

ReactJS được phát triển bởi Facebook và lần đầu tiên ra mắt vào năm 2011. Lịch sử của ReactJS bắt đầu từ một vấn đề mà Facebook phải đối mặt vào thời điểm đó. Khi Facebook Ads ngày càng mở rộng và có thêm nhiều tính năng mới, các kỹ sư của Facebook nhận ra rằng việc liên tục cập nhật và thay đổi UI đã làm chậm tiến trình phát triển. Các thay đổi và cập nhật theo từng tầng nội dung buộc các nhà phát triển phải thiết kế lại toàn bộ ứng dụng, dẫn đến việc tiến độ phát triển bị trì hoãn.

Trong bối cảnh đó, một kỹ sư của Facebook là Jordan Walke đã tìm ra giải pháp bằng cách sử dụng XHP (một thư viện component HTML cho PHP) để tạo ra một nguyên mẫu đầu tiên của ReactJS, được gọi là FaxJS. Năm 2011, ReactJS chính thức được sử dụng để phát triển timeline của Facebook, đánh dấu một bước nhảy vọt quan trọng trong việc cải tiến UI và quản lý các cập nhật trên ứng dụng web.

Năm 2012, khi Facebook mua lại Instagram, ReactJS cũng được sử dụng để phát triển timeline của Instagram. Điều này cho thấy tiềm năng to lớn của ReactJS trong việc cải thiện trải nghiệm người dùng và tốc độ phát triển ứng dụng.

Lịch sử ra đời React Native

Cùng với sự thành công của ReactJS, vào năm 2012, Mark Zuckerberg, CEO của Facebook, đã phát biểu: “Sai lầm lớn nhất mà chúng tôi mắc phải với tư cách là một công ty là đặt cược quá nhiều vào HTML thay vì native“. Phát biểu này phản ánh sự hạn chế của các ứng dụng dựa trên HTML5 trong việc cung cấp trải nghiệm người dùng mượt mà và hiệu suất cao như các ứng dụng native.

Từ nhận thức đó, nhu cầu phát triển một framework mới để xây dựng các ứng dụng di động với hiệu suất native nhưng vẫn giữ được tính linh hoạt của JavaScript đã trở thành một lẽ tất yếu. Và đó là cách mà React Native ra đời.

Với sự ra đời của React Native, các lập trình viên giờ đây có thể xây dựng các ứng dụng di động hiệu suất cao mà không cần phải viết hai mã nguồn riêng biệt cho iOS và Android, giúp tiết kiệm thời gian và công sức.

ReactJS và React Native hoạt động như thế nào?

Cả ReactJSReact Native đều mang đến những cách tiếp cận khác nhau để phát triển ứng dụng, mặc dù chúng chia sẻ chung một nền tảng là React. Tuy nhiên, cơ chế hoạt động đằng sau mỗi công nghệ này là khá khác biệt, phù hợp với các mục đích sử dụng cụ thể của chúng.

ReactJS: Sử dụng Virtual DOM

ReactJS: Sử dụng Virtual DOM

ReactJS sử dụng Virtual DOM để tạo ra trải nghiệm người dùng (UX) tuyệt vời. DOM (Document Object Model) là một giao diện lập trình cần thiết, đại diện cho một tài liệu web và nội dung của nó. Khả năng của các thư viện và framework trong việc quản lý DOM có tác động lớn đến cách chúng được sử dụng và hiển thị cuối cùng.

Virtual DOM là một cải tiến đáng kể của ReactJS. Đây là một đại diện ảo của DOM thực. Khi một trạng thái của ứng dụng thay đổi, Virtual DOM tạo ra một bản sao ảo của DOM thực, sau đó so sánh với DOM hiện tại để tìm ra những thay đổi. Thay vì cập nhật toàn bộ DOM, chỉ các phần bị thay đổi mới được cập nhật. Điều này giúp tăng tốc độ xử lý, cải thiện hiệu suất và mang đến trải nghiệm người dùng tốt hơn so với việc cập nhật trực tiếp trên DOM thực.

Ví dụ:

function tick() {
  const element = (
    <div>
      <p>Hello World</p>
    </div>
  );
  ReactDOM.render(element, document.getElementById('root'));
}

setInterval(tick, 1000);

Giải thích:

  • tick() là một hàm tạo ra một phần tử React với nội dung “Hello World”.
  • ReactDOM.render() dùng để render phần tử này vào trong DOM thực tại vị trí có ID là 'root'.
  • setInterval(tick, 1000) sẽ gọi hàm tick() mỗi giây một lần, giúp cập nhật nội dung “Hello World” liên tục.

React Native: Sử dụng Native APIs

Trong khi đó, React Native hoạt động dựa trên các Native APIs để render các thành phần giao diện người dùng. React Native sử dụng Java APIs để render các thành phần trên Android, và Objective-C để viết các thành phần iOS. Nhờ vào việc này, React Native có thể tận dụng các giao diện native, đảm bảo hiệu suất gần như ứng dụng native cho cả hai nền tảng iOS và Android.

Phần còn lại của mã ứng dụng được viết bằng JavaScript, cho phép tùy chỉnh và chia sẻ mã giữa các nền tảng, tối ưu hóa khả năng tái sử dụng thành phần và chia sẻ mã. Điều này giúp giảm đáng kể thời gian và công sức phát triển khi xây dựng các ứng dụng đa nền tảng.

Một điểm khác biệt quan trọng là React Native không sử dụng CSS và HTML như ReactJS. Thay vào đó, các nhà phát triển phải tạo style sheets trong JavaScript để định kiểu cho các thành phần của React Native. Mặc dù cú pháp của các style sheets này có thể trông giống như CSS, nhưng chúng thực chất không hoàn toàn giống nhau. Thêm vào đó, các thẻ HTML thông thường như <div> trong ReactJS được thay thế bằng <view> trong React Native, và <p> trong ReactJS được thay thế bằng <text> trong React Native.

Ví dụ viết một ứng dụng đơn giản với React Native để hiển thị nội dung “Hello World”:

import React, { Component } from 'react';
import { Text, View } from 'react-native';

export default class HelloWorldApp extends Component {
  render() {
    return (
      <View>
        <Text>Hello World</Text>
      </View>
    );
  }
}

Giải thích:

  • import React, { Component } from 'react';import { Text, View } from 'react-native';: Import các thư viện cần thiết.
  • HelloWorldApp là một class component kế thừa từ Component.
  • render() trả về các thành phần UI: ViewText. View tương tự như div trong HTML và Text tương tự như p trong HTML.
  • Ứng dụng sẽ hiển thị “Hello World” dưới dạng text trên màn hình thiết bị di động.

Tuyển dụng React Native lương cao!

4 điểm khác nhau lớn nhất giữa ReactJS và React Native

Sứ mệnh của hai thư viện ReactJs và React Native

ReactJS là một thư viện Javascript được tạo bởi Facebook nhằm giải quyết các vấn đề performance và khả năng tương thích cho các ứng dụng web. Tức là ReactJs là một thư viện front-end dành cho các ứng dụng web.

ReactJS ra đời vào năm 2011, nó đã mang đến một triển vọng mới về rendering pages điều sẽ tạo ra sự linh động và trải nghiệm responsive.

Còn React Native thì sao?

React Native là một framework dùng để phát triển các ứng dụng cho mobile (Cụ thể là Android và IOS). được phát hành sau ReactJS 4 năm, sau khi ReactJS đã tràn ngập khắp giới lập trình web.

ReactJS và React Native chỉ có một điểm tương đồng, còn lại là khác nhau hoàn toàn.

Đó chính là Javascript!

Để trở thành React Native developer có trình độ, bạn phải có một số lượng kiến thức chuyên sâu về JavaScript ES6. Bởi vì ReactJS là cốt lõi của React Native, hiểu biết về cái cũ là chìa khóa cho cái mới.

Tạo một dự án mới

Với ReactJS, developer cần phải lựa chọn các module tốt nhất và cần thiết nhất trước khi bắt đầu một dự án.

Trong khi React Native cung cấp mọi thứ cần thiết. Bạn có thể viết ngay một ứng dụng bằng React Native chỉ với một dòng command. Điều này làm cho người mới chuyển sang học React Native đỡ khó khăn rất nhiều.

HTML – điểm khác biệt lớn

React Native không sử dụng HTML để hiển thị giao diện ứng dụng(lý do đơn giản là nếu sử dụng HTML thì React Native có khác gì tạo web app rồi nhúng vào webview không? tốc độ sẽ lại chậm như rùa ^_^)

Thay vào đó, React Native cung cấp các component hoạt động cũng tương tự, và hầu hết chúng có thể được biến đổi thành các phần tử tương đương trong HTML

Ví dụ:

<View>  tương đương với <div>
<Text> biến thành <span> và <p>.

Do đó, các thư viện được sử dụng với ReactJS không thể sử dụng trong React Native. React Native không sử dụng thẻ CSS hoặc sử dụng chúng theo cách khác, tương tự như Flexbox.

Gestures và animations

React Native cung cấp một thư viện tương tự như Velocity.js có tên là Animated. Nó còn cung cấp LayoutAnimation, nhưng chỉ có iOS mới hỗ trợ tốt.

Để tương tác với cử chỉ của người dùng, React Native đã cung cấp PanResponder. Khi áp dụng nó vào một View, bạn có thể kích hoạt xử lý các sự kiện touch của người dùng

Xem thêm các việc làm ReactJS hấp dẫn tại TopDev

So sánh ưu nhược điểm của React và React Native

Dưới đây là bảng so sánh về ưu và nhược điểm của ReactJS và React Native:

Ưu nhược điểm của React

Ưu điểm Nhược điểm
Hiệu suất cao: Sử dụng Virtual DOM giúp tăng hiệu suất và giảm thời gian cập nhật UI. Hiệu suất thấp hơn native: Dù nhanh, nhưng hiệu suất vẫn thấp hơn so với các ứng dụng native, đặc biệt với các tác vụ phức tạp.
Hỗ trợ SEO tốt: Tối ưu hóa cho SEO, giúp trang web dễ dàng được Google index. Quản lý DOM phức tạp: Với các ứng dụng lớn và nhiều thành phần UI, việc quản lý DOM có thể trở nên phức tạp.
Dễ dàng học hỏi: Dễ học đối với người quen thuộc với JavaScript, nhanh chóng áp dụng. Không hỗ trợ CSS hoàn toàn: Kết hợp CSS nhưng không hỗ trợ đầy đủ, gây khó khăn trong việc định kiểu phức tạp.
Tái sử dụng mã: Component có thể tái sử dụng giữa các dự án, tiết kiệm thời gian phát triển. Không phù hợp cho ứng dụng di động: Chủ yếu dành cho phát triển web, không phải là lựa chọn tốt cho phát triển ứng dụng di động.
Cộng đồng lớn: Có cộng đồng rộng lớn với nhiều tài liệu, thư viện và công cụ hỗ trợ. Thời gian tải ban đầu: Với ứng dụng lớn, thời gian tải ban đầu có thể kéo dài do cần tải nhiều component.
Phát triển nhanh: Các công cụ như create-react-app giúp khởi động dự án dễ dàng.

Ưu nhược điểm của React Native

Ưu điểm Nhược điểm
Hiệu suất gần native: Thành phần UI native được biên dịch trực tiếp thành mã native, cung cấp hiệu suất cao như ứng dụng native. Hiệu suất hạn chế với tác vụ phức tạp: Gần đạt hiệu suất của native, nhưng có thể gặp giới hạn với tác vụ phức tạp hoặc yêu cầu đồ họa cao.
Tái sử dụng mã giữa các nền tảng: Có thể tái sử dụng mã và chia sẻ giữa iOS và Android. Hỗ trợ native không đầy đủ: Không hỗ trợ đầy đủ tất cả các thành phần native, đôi khi cần mã native hoặc thư viện bên thứ ba.
Phát triển đa nền tảng: Cho phép phát triển ứng dụng cho cả iOS và Android từ cùng một mã nguồn. Không hỗ trợ HTML/CSS: Không sử dụng HTML và CSS, phải tạo style sheets trong JavaScript, đôi khi khó tùy chỉnh giao diện như CSS thuần.
Cộng đồng hỗ trợ mạnh mẽ: Cộng đồng React Native phát triển nhanh với nhiều tài liệu và thư viện hỗ trợ. Debug và testing phức tạp: Cần kiểm tra cả mã JavaScript và mã native, có thể phức tạp hơn so với phát triển web.
Nhanh chóng phát triển ứng dụng di động: Các công cụ như Expo giúp khởi động và phát triển dễ dàng. Thời gian học tập dài hơn: Yêu cầu kiến thức về lập trình native như Java, Swift để tối ưu hóa và mở rộng ứng dụng.

Tóm lại

Cả ReactJS và React Native đều là những công cụ tuyệt vời để xây dựng và chuyển đổi nhanh UI phức tạp từ phiên bản cũ sang phiên bản mới. Điều này không khó cho những ai thích JavaScript. Tuy nhiên bạn cần nhớ là:

  • React Native là một framework trong khi ReactJS là một thư viện JavaScript
  • React Native không sử dụng HTML
  • ReactJS và React Native đều dựa trên component-based
  • Bạn có thể viết các native mobile components trong React Native để tạo cảm giác là ứng dụng này thực sự dành cho thiết bị di động.

Ngoài ra, bạn có thể sử dụng hầu hết các công cụ dành cho ReactJS trong khuôn khổ React Native. Ví dụ: Công cụ Chrome Dev để hiển thị console logs hay inspecting để kiểm tra các yêu cầu mạng hoặc Redux DevTools để kiểm tra trạng thái của Redux store.

Bạn đã phân biệt được ReactJS và React Native chưa? Hãy cho mình biết ý kiến của bạn về hai “anh em cùng cha này ” nhé? 

Bài viết do đội ngũ TopDev biên soạn và tham khảo từ vntalking.com

Đừng bỏ lỡ việc làm IT mới nhất trên TopDev!

Xem thêm: