Trong blog của mình, Jim Plush có nêu ra vài yếu tố để phân biệt giữa một nhà phát triển PHP chuyên nghiệp và một lập trình viên đơn thuần. Nguyên tác: What separates a professional PHP web developer from a scripter?

Trong 3 năm vừa qua tôi đã có dịp phỏng vấn hơn 200 ứng viên vào các vị trí php/web. Người tôi muốn tìm là phải thực sự là một nhà phát triển PHP cao cấp và chuyên nghiệp. Tiếc là 98% số này thậm chỉ không đáp ứng được một nửa các yêu cầu tôi đặt ra. Thế bạn đáp ứng được bao nhiêu ?

Dưới đây là các yếu tố được Jim liệt kê:

  • PHP5 vs PHP4: phải kể ra ít nhất 3 tính năng quan trọng tạo ra sự khác biệt giữa hai phiên bản này.
  • Mạng: có khả năng lập trình socket, hoặc ít nhất cũng hiểu cách kết nối đến các máy khác.
  • OOP: hiểu sâu về LT HĐT để có thể trả lời vài câu hỏi đơn giản, thí dụ các phương thức private và protected khác nhau thế nào. Phải hiểu (không nhất thiết phải dùng hết) các khái niệm: interface, constructor, private/public/protected, kế thừa, đa hình, phương thức tĩnh.
  • CSDL: hiểu thế nào là một CSDL được chuẩn hóa, hiểu về các khóa chính và khóa ngoại.
  • Design patterns: không nhất thiết lúc nào cũng phải dùng, nhưng quan trọng là phải hiểu tại sao nó có ích.
  • Quản lí mã nguồn (source control): ít nhất nhất một hệ thống quản lí mã nguồn (chứ không phải là zip các tập tin rồi lưu vào thư mục tạm nào đấy). Điểm thưởng cho ai chỉ ra ít nhất 1 khuyết điểm của CVS.
  • Unit Testing: hiểu thế nào là unit testing, tại sao nó quan trọng. Điểm thưởng cho test driven design, unit test javascript, biết sử dụng Selenium.
  • Tham gia vào cộng đồng: tôi có thể google vài thứ hay ho mà bạn làm với PHP hoặc các công nghệ web, cẩn thận nếu tôi không thể google được gì về bạn. Điểm thưởng nếu bạn có tham gia vào một đề án nào đó.
  • Kĩ năng javascript: biết cách làm việc với DOM (appendChild, removeChild, nextSibling, v.v...), biết tạo lớp riêng trong JS, điểm thưởng nếu biết tạo biến cục bộ trong javascript.
  • Kĩ năng CSS: biết về mô hình hộp trong và ngoài, hiểu các CSS selector và cách kế thừa.
  • Đam mê cải tiến: yêu những gì bạn đang làm. Biết tạo cho mình những kĩ năng riêng và trở nên có giá trị hơn.

Trên đây là những yêu cầu tối thiểu. Đáng buồn thay, hầu hết có vẻ như hài lòng với công việc của một lập trình viên ở mức tối thiểu, dẫn đến các chương trình tồi và các đội ngũ tồi. Tôi thường xuyên gặp những tình cảnh như thế. Bạn có các nhà phát triển tuyệt vời làm chung với những người ngồi ngủ tại bàn của họ lúc 9-10 giờ sáng (đừng cười, tôi có ảnh đây). Nó làm mức độ chung của cả nhóm đi xuống. Có những người ngồi kiểm tra code bị lỗi lúc 4h59 chiều, và ra về lúc 5h00.

Trên đây là phần dịch gần như nguyên vẹn từ blog của Jim Plush. Vài người cho rằng kiến thức về CSS (thậm chí Javascript) là không cần thiết. Tôi thì nghiêng về phía Jim, sự hiểu biết này giúp bạn có thể nhanh chóng nắm được hình thức một trang web. Thêm một ý kiến khác là "cần phải hiểu và làm việc với ít nhất một framework php nào đó". Tôi thấy điều này không quan trọng lắm, nó không phải là điểm trừ, vì xác suất bạn làm việc với một framework chọn trước không cao lắm.




Bình luận

  • TTCN (1)
Hải Nam  30904

Mình được 10/11, còn cái Unit Testing thì chưa làm với PHP bao giờ ;D