Phỏng vấn nhà phát triển ứng dụng: 10 bước để thành công

Ngày nay thị trường CNTT đang có đà phát triển tăng và yêu cầu nhiều nhân lực. Các thống kê trong vài năm trở lại đây đã cho thấy một xu hướng khá thú vị: Các công ty thường muốn thuê những chuyên gia phát triển phần mềm có chất lượng cao từ bên ngoài vào và giữ chân các chuyên gia có mức độ đầu tư thấp hơn. Các nhà quản lý đang tìm kiếm lao động có tri thức cao nổi lên các vấn đề chính như – thành thạo về kỹ thuật, hiểu biết doanh nghiệp, khả năng độc lập,…

Điều đó có nghĩa thế nào đối với chúng ta - các chuyên gia phát triển? Điều đó có nghĩa là quá trình phỏng vấn hiện nay là yêu cầu cao hơn bao giờ hết. Các phỏng vấn kỹ thuật chỉ là một phần trong toàn bộ quá trình phỏng vấn. Tuy phỏng vấn kỹ thuật vẫn là một phần quan trọng cốt lõi nhưng nó không phải là hệ số duy nhất trong việc tạo quyết định cuối cùng.

Nếu bạn đang tìm một vị trí cho lĩnh vực CNTT thì đây là những gì mà các nhà quản lý đang muốn tìm kiếm ở bạn:

1, Các kỹ năng con người

Trong suốt quá trình phỏng vấn, bạn phải thể hiện ít nhất 3 trong số 7 nét tiêu biểu được liệt kê dưới đây:

  1. Tính kỷ luật: Khả năng chọn nhiệm vụ của bạn, tạo kế hoạch và thực hiện kế hoạch.
     
  2. Kỹ năng khích lệ: Khả năng khuấy động những người khác cùng hành động theo một mục đích mong muốn.
     
  3. Kỹ năng tổ chức: Khả năng kiểm soát tài nguyên con người một cách có hiệu quả trong môi trường chịu sự ép buộc về thời gian.
     
  4. Kỹ năng truyền thông: Khả năng truyền thông có hiệu quả đến người khác bằng cách sử dụng các kỹ năng trình bày, viết và lắng nghe.
     
  5. Kỹ năng chiến lược: Khả năng sử dụng phương pháp luận cho việc khai thác các cơ hội để hoàn thiện vị trí một ai đó.
     
  6. Quyết định xung đột: Khả năng kiểm soát các xung đột được kiềm chế và giải quyết như thế nào trong một nhóm.
     
  7. Sự quyết đoán: Khả năng nổi trội bạn là người lãnh đạo và là một người có thẩm quyền.

Nếu cảm thấy không thực hiện được bất kỳ điểm nào trong các nét tiêu biểu trên thì bạn nên đưa ra một kế hoạch hành động để đạt được chúng. Có một số sách có thể trang bị cho bạn những kỹ năng này, lưu ý đây là sách viết bằng tiếng anh.

Ngoài ra, trong suốt quá trình phỏng vấn, bạn nên sẵn sàng thảo luận các kinh nghiệm quý báu ở những vị trí trước đây của bạn để thể hiện sự thành thạo trong các kỹ năng trên. Bạn cũng phải chuẩn bị giải thích những kỹ năng có ý nghĩa gì đối với cá nhân bạn.

2, Các vấn đề cơ bản

Khi chỉ đạo các phỏng vấn, tôi luôn hỏi một số câu hỏi rất cơ bản. Tại sao vậy? Lý do là tôi muốn bảo đảm rằng các ứng viên đã làm một cách chăm chỉ. Tôi muốn biết xem họ có chuẩn bị kỹ càng hay không. Ví dụ, tôi hỏi một nhà phát triển ứng dụng Java cao cấp các câu hỏi dễ dàng dưới đây:

  • Loại biến tham chiếu và biến nguyên thủy là gì?
  • Các hằng số được thực thi trong Java như thế nào?
  • Một biểu thức là gì?
  • Tên của 10 toán tử trong Java

Bạn phải luôn chuẩn bị trả lời các câu hỏi đó. Và nhớ rằng, người phỏng vấn không thể thừa nhận rằng bạn là một chuyên viên cao cấp nhờ vào những câu hỏi như vậy; và bạn phải chuẩn bị những vấn đề cao hơn.

3, Các chủ đề nâng cao

Nếu bạn là một chuyên gia phát triển ứng dụng cao cấp thì cần phải chuẩn bị để thảo luận các chủ đề nâng cao về ngôn ngữ lập trình đó. Các chủ đề dưới đây được đưa ra dành cho chuyên gia phát triển phần mềm Java (chuyển qua phần tiếp theo nếu bạn không phải là một chuyên gia trong lĩnh vực Java).

  1. Mẫu thiết kế OO: Các chuyên gia phát triển ứng dụng phải biết ít nhất 5 “mẫu thiết kế”. Mỗi một chuyên gia phát triển cao cấp phải tiếp cận với nhiều mẫu thiết kế trong nghề của anh ta. Mặc dù vậy, đôi khi anh ta không biết làm thế nào để giải thích có hiệu quả mỗi mẫu làm việc và những quyền lợi gì mang lại từ mỗi một mẫu thiết kế đó. Chúng tôi khuyên bạn cần đọc và nghiên cứu chúng trước khi vào phỏng vấn. Bạn có thể bắt đầu từ địa chỉ http://en.wikipedia.org/wiki/Design_Patterns.
     
  2. UML: Ngôn ngữ mô hình hợp nhất đã trở thành một kỹ năng cần thiết đối với các phân tích doanh nghiệp, người phát triển và kiến trúc hệ thống, nhà thiết kế giao diện ứng dụng và cơ sở dữ liệu chuyên nghiệp, nhà kiểm tra và quản lý dự án. UML được sử dụng như một ngôn ngữ chuẩn cho việc chỉ định, hình dung, xây dựng và dẫn chứng bằng tài liệu cho các thành phần của hệ thống phần mềm. UML cũng được sử dụng cho việc mô hình hóa doanh nghiệp và các hệ thống không phần mềm khác. Có ít nhất 3 biểu đồ UML mà các chuyên gia phát triển Java cao cấp cần phải nắm chắc chúng:
     
    • Biểu đồ trường hợp sử dụng - Use-Case: Thể hiện sự tương tác giữa những người dùng ứng dụng và các chức năng của ứng dụng.
       
    • Biểu đồ trình tự: Mô tả các tương tác giữa các đối tượng theo thứ tự chúng xuất hiện.
       
    • Biểu đồ lớp: Hiển thị sự có mặt tĩnh của các lớp và các giao diện cùng với mối quan hệ và sự tương tác giữa chúng.
       
  3. Framework: Hầu hết các công việc phát triển ứng dụng đều cần đến kiến thức về các Framework. Ví dụ, một nhà phát triển ứng dụng Java phải có được kiến thức tối thiểu về một số Data Persistence framework (JDBC và SQL, Entity Beans, Java Data Objects, Spring và nhóm thứ ba như Top Link hoặc CocoBase, Hibernate), các Business Logic framework (như EJBs, BC2J), Caching framework, Testing framework và Model-View-Controller framework (Struts).
     
  4. XML/XLS: Bạn cần phải hiểu những ưu điểm và nhược điểm trong việc sử dụng XML/XLS để lưu và truyền dữ liệu. Thêm vào đó bạn cần phải có kiến thức về phân tích cú pháp.
     
  5. Quản lý trạng thái: Quản lý trạng thái là một sự cân nhắc rất quan trọng khi thiết kế các ứng dụng mới. Ví dụ, bạn phải hiểu sự khác nhau giữa các ứng dụng mất trạng thái và ứng dụng vẫn giữ được trạng thái.
     
  6. Kiến trúc phân bố/ không phân bố: Bạn cần phải có hiểu biết nâng cao về các lớp kiến trúc. Một ứng viên hoàn hảo phải có sự hiểu biết tốt về các kiến trúc phân bổ và không phân bổ cũng như điểm mạnh và yếu của mỗi cái.

4, Kiến thức doanh nghiệp

Không phải nghi ngờ rằng kiến thức về doanh nghiệp là một phần bổ sung quan trọng đối với các kỹ năng kỹ thuật của bạn. Không một người sử dụng lao động nào lại bỏ qua cơ hội để phỏng vấn ứng viên về kinh nghiệm trong lĩnh vực đã có với một công ty trước đó. Không may cho người tuyển dụng (điều đó lại là may mắn đối với bạn) vì rất khó có thể tìm được một người thành thạo kỹ thuật mà lại có khả năng truyền thông tốt và kiến thức về doanh nghiệp rành mạch cho công việc. Chính vì vậy các nhà tuyển dụng tìm kiếm ứng viên có kinh nghiệm tổng quát trong lĩnh vực (môi giới, ngân hàng, sản xuất và xuất bản,…).

Bạn có thể làm gì nếu đang phỏng vấn vào một vị trí thuộc về lĩnh vực mà bạn không có kinh nghiệm? Có một cách có thể phân biệt bản thân bạn với phần còn lại của các ứng viên là bằng cách miêu tả sự hứng thú và kiến thức làm việc trong một tổ chức. Thử tìm ra những cái riêng về phát triển ứng dụng cho lĩnh vực này, cụ thể hơn là cho vấn đề công việc mà bạn đang phỏng vấn. Ví dụ, nếu bạn đang phỏng vấn tại một công ty xuất bản, hãy thể hiện cho người phỏng vấn mình rằng bạn hiểu về những khó khăn trong lĩnh vực và những phần thưởng về làm việc đó. Ví dụ, nếu phòng mà bạn đang được phỏng vấn chịu trách nhiệm duy trì client, dữ liệu sản phẩm và cho phép người dùng xem, thay đổi dữ liệu này, hãy cố gắng giải thích rằng bạn hiểu các khó khăn liên quan đến việc tạo và duy trì các ứng dụng như vậy.

5, Kiến thức cơ sở dữ liệu quan hệ

Tên một ứng dụng không được kết nối với cơ sở dữ liệu quan hệ? Hãy để tôi nghĩ…. Tôi không thể nhớ được nó lúc này”. Hầu hết các ứng dụng hiện đại đều làm việc với một cơ sở dữ liệu quan hệ. Đó là lý do tại sao nó là vấn đề bản chất mà mỗi ứng viên cần phải có kiến thức nâng cao về cơ sở dữ liệu. Bạn cần biết những gì về nó? Các vấn đề cơ bản gồm có SQL, Entity Relationships, Data Type, Table Definition Language. Các vấn đề nâng cao gồm có Optimization, Stored Procedures, PL SQL, Triggers, Tuning, and DBRM Commands. Tôi không mong bạn phải thành thạo như một quản trị viên cơ sở dữ liệu, nhưng bạn nên cần phải thoải mái khi thảo luận về các chủ đề nâng cao. Nếu bạn thất bại trong việc thu được những kiến thức cơ sở dữ liệu nâng cao trong suốt quá trình làm việc trước đó thì bạn có thể thu được nó bằng cách đọc các tài liệu kỹ thuật về vấn đề này.

6, Lĩnh vực chuyên môn

Lĩnh vực chuyên môn là gì? Lĩnh vực chuyên môn của tôi là phát triển ứng dụng dựa trên web bằng sử dụng J2EE. Bạn phải chọn lĩnh vực chuyên môn trong phát triển ứng dụng và nuôi dưỡng nó – trở thành một chuyên gia. Nếu một công việc yêu cầu một chuyên gia phát triển ứng dụng dựa trên web thì tôi sẽ tìm một người có kinh nghiệm trong phát triển ứng dụng trên web nhất. Và nếu bạn là một chuyên gia chính trong lĩnh vực này thì bạn có một cơ hội lớn để có được công việc mong muốn.

7, Lý lịch

Lý lịch của bạn là một ấn tượng đầu tiên, chính vì vậy, bên cạnh việc lý lịch phải gọn gàng và chứa đựng nhiều thông tin có giá trị thì nó phải có hai tiêu biểu:

  • Bảng tóm tắt công việc. Bảng tóm tắt phải giải thích trong ba hoặc bốn câu, vị trí mà bạn đang tìm kiếm và các kĩ năng có giá trị nhất mà bạn có cho vị trí đó.
     
  • Độ dài lý lịch. Tôi đã thấy một số lý lịch có hơn hai trang. Tôi muốn loại bỏ ngay chúng bởi chiều dài của nó. Tôi cho là các lý lịch dài là thể hiện khả năng và kinh nghiệm kém của anh ta hoặc là kỹ năng xử lý từ tương đối tồi (cách đôi khoảng trắng, sai phông chữ, kích thức chữ hoặc có chiều dài lề rộng)

8, Chu trình phát triển ứng dụng đầy đủ

Hầu hết mỗi công việc được đưa lên Monster.com (một website nổi tiếng về đăng tin tìm việc) đều có dòng chữ: “Ứng viên phải có kinh nghiệm về tất cả các giai đoạn phát triển phần mềm”. Điều đó có nghĩa là các nhà quản lý đặt rất nhiều kỳ vọng vào kinh nghiệm trong vấn đề này. Hãy để tôi xem lại các giai đoạn phát triển hệ thống:

  • Việc lập kế hoạch dự án, nghiên cứu tính khả thi: Định nghĩa phạm vi và tạo biểu đồ dự án.
     
  • Phân tích hệ thống, định nghĩa yêu cầu: Định nghĩa các hành động, cấu trúc công việc và các khía cạnh kỹ thuật của dự án.
     
  • Thiết kế hệ thống: Mô tả các tính năng mong muốn và hoạt động một cách chi tiết, gồm có các bố trí màn hình, các nguyên tắc kinh doanh, biểu đồ tiến trình, mã giả và tài liệu minh chứng khác.
     
  • Sự thi hành: Mã thực được viết trong suốt giai đoạn này.
     
  • Sự tích hợp và kiểm tra: Đưa tất cả các mẩu đó vào môi trường kiểm tra đặc biệt.
     
  • Sự ưng thuận, cài đặt, triển khai: Bước cuối cùng của quá trình phát triển, nơi sản phầm đã hoàn tất và sẵn sàng được sử dụng cho sản suất.
     
  • Bảo trì: Những gì xảy ra trong suốt phần còn lại của chu trình sống của phần mềm: các thay đổi, lỗi, các bổ sung, và việc chuyển sang một nền máy tính khác,…

Bạn mang đi những gì từ việc tham gia tích cực vào một chu trình phát triển hoàn chỉnh? Bạn mang đi kiến thức công việc của quá trình trong một dự án – các mối quan hệ, sự thực thi, việc kiểm tra nhóm, các quá trình điều khiển thay đổi tích hợp, các yêu cầu doanh nghiệp, ràng buộc thời gian/giá thành/ngân sách, rủi ro và sự quản lý tài nguyên/đầu vào/ truyền thông. Hầu hết tất cả bạn phải hiểu các hệ số thành công của dự án.

Tôi đã mất 3 năm làm việc như một chuyên gia phát triển ứng dụng trước khi khẳng định rằng tôi đã hoàn tất một chu trình phát triển ứng dụng. Tỉ lệ thành công trong một dự án (tính về mặt thời gian, dưới ngân sách và theo đó là phạm vi) thường không lớn, trong năm 2000 chỉ có 28% các dự án được xem xét là thành công.

9, Các câu hỏi

Bạn phải hỏi ít nhất 3 câu hỏi trong suốt hoặc cho tới khi kết thúc cuộc phỏng vấn. Khi hỏi các câu hỏi, bạn hãy làm cho người phỏng vấn biết rằng bạn rất quan tâm đến vị trí này. Nó cũng làm cho bạn tạo một quyết định mang tính giáo dục hơn xem công việc này có hợp với bạn không. Tránh câu hỏi mập mờ trong các tình huống sau:

  1. Cấu trúc và kích cỡ của nhóm là bao nhiêu?
     
  2. Các ứng dụng gì bạn đang hỗ trợ và phát triển?
     
  3. Bạn được hỗ trợ ngân sách bao nhiêu cho năm tới?
     
  4. Có các cơ hội cho sự phát triển chuyên nghiệp không?
     
  5. Ngày bình thường của tôi sẽ như thế nào?

10, Nhập vào và xuất ra

“Nếu bạn không thể đánh bại được thì hãy gia nhập”. Các kế hoạch nhập và xuất là thay đổi bên trong mỗi một tổ chức và trong mỗi một khía cạnh phát triển ứng dụng. Nếu công ty bạn đang làm việc không nhận các thành phần cung ứng từ bên ngoài vào phát triển ứng dụng thì nó sẽ phải thực hiện các công việc đó vào ngày mai. Tuy nhiên đây là một tin tốt: Khi có sự cung ứng từ bên ngoài, sẽ có một sự thăng bằng nào đó giữa các tài nguyên nhập và xuất; một tổ chức không thể đi nhập toàn bộ thành phần cho công việc của nó. Trong phát triển ứng dụng, có các quá trình không thận trọng hoặc không thể nhập từ đó. Việc nhập từ bên ngoài sẽ cho phép cắt giảm giá thành, nhưng những gì sẽ xảy ra khi giảm giá thành? Phạm vi dự án và thời gian. Bạn phải hiểu (đôi khi phải tranh cãi) những gì phân tách bạn với tài nguyên nhập vào. Nhưng bạn cũng phải hiểu (đôi khi cũng tranh cãi) quyền lợi của quát triển ứng dụng có được vào/ra.

Kết luận

Bài viết này chúng tôi đã đưa ra 10 khía cạnh đảm bảo thành công cho người phỏng vấn phát triển ứng dụng. Các mẹo phỏng vấn như sự tự tin vào bản thân, ăn mặc đúng cách, ánh mắt và việc đúng giờ là các vấn đề bên ngoài lề của bài viết này tuy nhiên chúng cũng không thể được bỏ qua. Nói chung bạn phải đạt được ấn tượng ở mọi lĩnh vực để vượt qua được cuộc phỏng vấn.

Thứ Tư, 09/05/2007 08:51
31 👨 331