Kinh nghiệm lập trình website mã nguồn mở PHP

Nghề lập trình website

Trong thời buổi kinh tế thị trường hiện nay, các doanh nghiệp mọc như nấm sau mưa, công ty nào cũng cần website để quảng bá, hoặc buôn bán trực tuyến. Tiếp cận đối tượng người dùng internet là 1 sự đầu tư đúng đắn, cần thiết. Kéo theo đó, phát triển và xây dựng website trở thành 1 hướng đầy tiềm năng của ngành công nghiệp phần mềm.

Có 1 trang web thống kê khá thú vị: internet live stats

  • Trên trang này có số lượng các trang web đang online, tôi không biết nó có chính xác tuyệt đối hay không, nhưng có lần đọc tài liệu khác cũng nói hiện nay có khoảng gần 1 tỉ website đang hoạt động.
  • Bên cạnh đó, bảng liệt kê theo từng năm cho ta thấy sự phát triển của ngành công nghiệp website như… chuột đẻ.
  • Cuối cùng là nhan sắc “nông thôn” của các website nổi tiếng toàn thế giới lúc vừa mới thành lập.

Mục đích của bài viết này là cung cấp lăng kính nhiều chiều về 1 nghề trẻ trung, năng động, không hề khô khan buồn tẻ, cũng không dễ dãi chút nào. Tôi không muốn đi quá sâu về kỹ thuật phức tạp để ai cũng có thể hiểu, kèm theo những chia sẻ kinh nghiệm của bản thân, mong muốn sẽ cung cấp những hình ảnh thực tế tới bạn đọc.

Phân tích nghề

  • Lợi thế

– Lợi thế lớn nhất là cơ hội việc làm, như phần đầu tiên đã đề cập, nhu cầu làm website chuyên nghiệp trong nước khá lớn và phát triển hơn trong những năm gần đây. Bên cạnh đó cơ hội làm việc trong các công ty nước ngoài lại càng lớn hơn, tại các thành phố lớn HN, Đà Nẵng, HCM, các công ty thiết kế website nước ngoài đầu tư rất mạnh mẽ (1).
– Thứ hai là thu nhập, như mọi nghề của ngành CNTT, nghề lập trình website có mức thu nhập trung bình khá tốt, nhất là trong các công ty nước ngoài. Thật ra mức thu nhập đó vẫn còn thiệt thòi so với mặt bằng chung của thế giới (2).
– Lo được chén cơm manh áo, tới niềm vui trong công việc, làm lập trình chắc chắn bạn sẽ được thử thách bản thân rất nhiều, công việc lúc nào cũng mới mẻ, thú vị.
Cơ hội thăng tiến cao, sau 1 thời gian làm ở vị trí lập trình viên (Developer), bạn có thể tiến lên trưởng nhóm (Leader), hoặc chuyển qua hướng quản lý dự án (Project Manager), hoặc ra thành lập công ty riêng (CEO) – nói vậy nghe dễ dàng chứ đó là 1 quá trình phấn đấu cả đời.


Cơ hội làm giàu, những tấm gương thành công rực rỡ nhờ lập trình website ở trong lẫn ngoài nước đã chứng minh điều đó, Haivl, Foody, 5giay…

  • Thách thức

Thị trường lập trình website trong nước khá rối ren. Các công ty chuyên thiết kế website, lập trình viên tự do và khách hàng cùng gặp nhau ở sự thiếu chuyên nghiệp, tự làm mất quyền lợi của bản thân mình.
Làm việc cho 1 công ty nước ngoài khá khắc nghiệt, bạn phải rèn luyện, học tập không ngừng để thích ứng tốt trong môi trường này. Khả năng ngoại ngữ là vô cùng quan trọng.
Công việc lập trình đòi hỏi phải chịu được áp lực cao, tính kiên nhẫn và khả năng giải quyết vấn đề tốt. Nghe nói làm lập trình dễ bị hói đầu. Chị lao công ở công ty cũ của tôi sáng nào quét nhà cũng hết hồn vì có quá nhiều tóc, lông lá, kết quả của cả ngày vò đầu bức tóc đám lập trình, tôi nghĩ nếu hói thì tôi thà cạo trọc luôn còn hơn.

May thay những khả năng cần thiết này lại có được nhờ rèn luyện chứ không cần phải thiên bẩm. Quả thực như vậy, bạn không cần phải thông minh xuất chúng, hay học trường này trường kia, bất cứ ai cũng làm được nghề này. Thứ quý giá nhất trong mấy năm tôi đi làm việc đó là kinh nghiệm thực tế, có được sau mỗi lần giải quyết các vấn đề gặp phải, bạn càng gặp nhiều rắc rối, khó khăn, bạn sẽ càng giỏi hơn người khác, tất nhiên là chỉ khi bạn thực sự đối mặt và giải quyết được khó khăn của mình. Kiến thức con người có giới hạn, khi bạn chắc chắn bạn không đủ sức làm gì đó, hay nhờ sự giúp dỡ của mọi người, nhưng nhớ đừng bao giờ hỏi 1 (câu hỏi) > 1 (lần) với chỉ 1 (người).

1. Một số kênh tuyển dụng trên mạng:
Việt Nam works – trang tuyển dụng này được coi là số 1 hiện nay – 28/7/2015 kết quả việc làm cho lập trình web tại HCM được 232 công việc.
Career Link – trang tuyển dụng có mạng lưới các công ty Nhật Bản nhiều nhất – tìm kiếm như trên có 416 công việc.
IT Việc – trang tuyển dụng ra đời sau, nhưng rất có tiềm năng, chỉ chuyên việc làm cho IT – tìm kiếm như trên có 157 công việc.

2. Mức lương
– Thống kê của Việt Nam works, về tỉ lệ công việc, mức lương hằng tháng của ngành CNTT Việt Nam hiện nay. Qua đó thì tỉ lệ nghề liên quan tới web cao nhất, lương hàng tháng vào khoảng $562 – $1190. (Mức lương này chỉ dành cho các lập trình viên có kinh nghiệm nhé, khi mới ra trường bạn không nên đặt nặng chuyện lương bổng).
– Thống kê ở nước ngoài:
payscale trang này cho thấy mức lương lập trình web ở Mỹ khoảng $2500 – $7000 1 tháng, ngoài ra còn có tỉ lệ giới tính, kỹ năng, hướng …

Tôi không có ý so sánh, chỉ nhằm mục đích mở rộng kiến thức

Chuẩn bị

Sau khi xác định hướng đi, tôi vẫn băn khoăn sau khi ra trường, làm sao xin được việc làm lập trình website không yêu cầu kinh nghiệm?, mức lương không quá quan trọng, và công ty có đào tạo, huấn luyện, môi trường học tập tốt.
Nghe khó nhằn nhỉ? Nhưng thực ra với công việc lập trình website này, bạn có rất nhiều cơ hội. Có rất nhiều công việc thích hợp dành cho người mới như: cắt HTML, chỉnh sửa lại giao diện web, học tập tìm hiểu hệ thống của công ty trong 1-2 tháng, hoặc học 1 công nghệ thích hợp với chiến lượt công ty … Các công việc này không cần nhiều kinh nghiệm, nhiều công ty sẵn sàng tạo điều kiện cho bạn, bù lại họ sẽ tiết kiệm được chi phí, đầu tư sau này. Tuy nhiên, công ty nào cũng ưu tiên chọn người có kiến thức cơ bản tốt, hoặc đã đi học các khóa về website bên ngoài, đào tạo 1 người chẳng biết gì hoặc quá thiếu kiến thức thì chẳng công ty nào thèm, trừ khi bạn chứng minh được bạn là người có khả năng học tập nhanh bằng tốc độ ánh sáng.
Đặc điểm nghề lập trình rất thú vị, dù bạn có chém gió tài cỡ nào, bằng cấp cao bao nhiêu, vào công ty qua 2 tháng thử việc, người ta sẽ biết bạn làm được việc hay không.
Bởi vậy lời khuyên của tôi dành cho các bạn sắp ra trường, nếu muốn làm công việc website thì tranh thủ học vài khóa căn bản bên ngoài trước, bạn sẽ dễ dàng tìm việc làm hơn ngay khi ra trường. Hoặc nếu bạn tự tin với khả năng tự học của mình thì hoàn toàn có thể tự nghiên cứu.

Thời gian tôi học năm 3 đại học, vừa học vừa trả nợ, tôi phải cố gắng gấp đôi trước đây, tuy vậy tôi vẫn cảm thấy mình không theo kịp các bạn trong lớp, việc trả nợ trên trường chiếm khá nhiều thời gian, nhưng tôi vẫn sắp xếp để đi học thêm 1 khóa tại trung tâm bên ngoài, vừa bổ sung lại kiến thức, vừa học kinh nghiệm thực tế. Ban ngày tôi học trên trường đại học, tiết chính từ sáng tới trưa, nghỉ trưa tại trường, trưa tôi vào lớp học môn trả nợ, tới chiều tôi lại chạy lên trung tâm dạy nghề, học tới 8-9 giờ đêm. Khoảng thời gian đó tuy bận rộn nhưng rất thích thú, có cảm giác tôi đang cố gắng theo đuổi 1 mục tiêu rõ ràng, tôi lại còn gặp nhiều người, nghe nhiều câu chuyện thú vị về công việc, nó làm tôi háo hức muốn sớm ra đi làm.

Qua tới học kỳ sau, tôi không học bên trung tâm nữa, tôi chuyên tâm vào công việc tại công ty thực tập, may mắn tôi được giao công việc thực tế, tham gia vào dự án của công ty, tôi học được nhiều thứ về website mã nguồn mở, nhờ đó có cái nhìn tổng quan về nghề. Thời gian này các môn học trên trường cũng ít dần, tôi dành thời gian tự học là chính.

Học thêm trung tâm
Khoảng năm 2010, tôi học tại trung tâm Nhất Nghệ, đây là trung tâm rất uy tín tại HCM. Tôi học 1 lớp lập trình ASP.NET từ cơ bản tới nâng cao, kết thúc khóa học sẽ làm được 1 website bằng ASP.NET
Lớp học nghề của tôi có nhiều anh bên hướng mạnh máy tính, các anh đã ra đi làm, và thấy công việc không thích hợp với bản thân, nên chuyển sang lập trình, nhờ nói chuyện với các anh mà tôi đã hết băn khoăn, 1 lòng 1 dạ đi theo hướng lập trình.

Xác định hướng đi
Công ty thực tập lúc đó có ảnh rất lớn tới hướng đi của tôi sau này: tôi theo lập trình website mã nguồn mở PHP, ở Việt Nam người ta thích những thứ miễn phí. Tuy học trong trường và học nghề là ASP.NET mã nguồn đóng, ra đi làm lại chuyển qua PHP mã nguồn mở, nhưng tôi không thấy phí, tôi nghĩ quan trọng nhất là nền tảng lập trình, tư duy lập trình, còn ngôn ngữ lập trình, công nghệ chỉ là công cụ.
Nhờ xác định hướng đi cụ thể, tôi dễ dàng tập trung vào việc tự học hơn.

Tự học
Các kiến thức căn bản tôi học được từ:
Tiếng Anh: w3schools (rất căn bản, dễ hiểu, có ví dụ trực quan)
Tiếng Việt: izwebz (gồm những video hướng dẫn từng bước)

Kiến thức kham khảo Lập trình website PHP giai đoạn I
– Vững HTML – CSS – JS (Front end)
+ Tìm hiểu thêm công nghệ mới HTML5, CSS3
– Học jQuery, AJAX
– PHP
– PHP CMS (1 trong 3): Joomla, WordPress, Drupal
+ Học thêm PHP Framework: CodeIgniter
– Database: MySQL
– VCS: Git
Phần (-) là học hiểu sâu, phần (+) là tìm hiểu cho biết.

Sự khác biệt của CMS và PHP Frameworks?
CMS là những nền tảng website đã được xây dựng sẵn các chức năng quản lý nội dung, người dùng, sản phẩm… Các nhà thiết kế sẽ cài đặt chúng và tùy chỉnh, bổ sung thêm các chức năng cần thiết.
PHP Framework là các nền tảng gom những thư viện cần thiết hoặc viết thư viện hỗ trợ dành chung cho website, bản thân những thư viện này vẫn chưa có những chức năng như CMS mà phải tự thiết kế bởi lập trình viên, do đó phát triển 1 PHP framework cần nhiều thời gian công sức hơn, nhưng cũng làm được nhiều chức năng độc đáo hơn, thiết kế cũng tùy biến hơn.
(cá nhân tôi thích gọi CMS là CMS framework, PHP Framework là Library framework. Cái nào cũng là nền tảng, và đọc lên tên của nó bạn sẽ biết sự khác nhau là gì)
What is the difference between a CMS and a Framework?

Khởi đầu

Sau khi đã có hướng đi rõ ràng, kiến thức chuẩn bị đầy đủ, việc học tập trong trường cũng xong xuôi, bạn hoàn toàn có thể tự tin đi xin việc làm (1). Bạn cần chuẩn bị 1 CV (Curriculum Vitae) rõ ràng, thu hút, vì đặc thù công việc lập trình website nên dùng CV tiếng anh. Chọn mục tiêu hợp với hướng đi bản thân và kiên trì nộp CV hằng ngày cho tới khi tìm được công việc.

Mẫu CV của bản thân mình:
– Thông tin cá nhân (personal information)
– Quá trình học vấn (education background)
– Kinh nghiệm (experiences) – với các bạn có kinh nghiệm: các dự án bạn đã tham gia, mô tả dự án, vị trí làm việc, với các bạn chưa có kinh nghiệm: dự án học tập, demo, thi tại trường…
– Hoạt động ngoại khóa (extracurricular activities)
– Kỹ năng (skills)
Ngoài ra bạn cũng nên kham khảo thêm các nguồn trên mạng.

Tìm những công ty nào không yêu cầu nhiều kinh nghiệm (trên 2 năm), họ có thể đào tạo ứng viên mới, với những kiến thức nền tảng bạn đã chuẩn bị từ trước, tôi tin rằng không khó để bạn tìm được công việc đầu tiên. Nên biết lượng sức mình, khi tôi mới ra trường, tôi nghĩ mình là 1 con số 0 tròn trĩnh, không còn gì để mất, không còn gì để kén chọn. Những bạn mới thường rất năng nổ, cố gắng và ham học hỏi. Đó chính là điểm mạnh của các bạn, hãy phát huy nó, không nên kén chọn công việc, dù nó nhỏ nhặt tới đâu, Đường tuy ngắn, không đi không đến. Việc tuy nhỏ, không làm không nên

Mỗi công ty đều có hướng đi riêng mà tất cả nhân viên trong công ty ấy phải đi theo. Do đó, làm sao để hướng đi của bạn thật phù hợp, ăn khớp với hướng của công ty. Ví như bạn đang theo lập trình web PHP, không thể nào vào công ty làm ASP.NET hay Ruby on Rails được, tốt nhất là 1 công ty sử dụng các framework của PHP (xem Kiến thức kham khảo Lập trình website PHP giai đoạn I bên trên)

Công ty đầu tiên tôi làm việc sử dụng Symfony 2, đó là 1 Library Framework của PHP. Việc làm quen với nó khá gian nan đối với người mới như tôi. Tôi phải đọc khá nhiều tài liệu, đọc cái gì cũng lạ lẫm. Thầy tôi có dạy câu Càng học càng thấy mình ngu quả thực không sai. Cấu trúc của Symfony2 rất đẹp, điều đó khắc phục được sự mơ hồ khi thiết kế 1 trang web PHP thuần, bên cạnh đó mỗi thư viện được tích hợp vào trong Symfony đều là những công nghệ mới: Twig, Doctrine …
Còn có những components (chức năng chuyên biệt được đóng gói sẵn, chỉ cần cài đặt và cấu hình để sử dụng) được phát triển thêm bởi cộng đồng, làm nên sức mạnh cho Symfony Framwork, thích hợp cho các dự án quy mô lớn.
Symfony

Việc làm quen với 1 công nghệ mới gian đoạn này là khó khăn nhất, tuy nhiên, nếu bạn đã học và hiểu những kiến thức trong trường, điều đó sẽ giúp bạn rất nhiều (ngôn ngữ C mà bạn học trên lớp khá sát với ngôn ngữ PHP). Tôi nghĩ ra đi làm thực ra cũng phải học tập, có áp dụng kiến thức vào thực tiễn. Đi học còn có người dạy bảo bạn từng chút, giảng giải từng thuật toán, đi làm thì tự mình phải độc lập, nhiều khi lại muốn quay lại trường học thêm. Có 1 sự đối nghịch khá thú vị trong suy nghĩ so với lúc đi học của tôi. Không có thầy cũng không sao, chỉ cần có mạng là được, thật vậy, internet là công cụ số 1 của 1 lập trình viên, nhất là PHP mã nguồn mở, hãy tận dụng!

Tăng tốc

Nói suông bao giờ cũng dễ. Không phải ngày nào cũng như ý, đôi khi tôi phải về nhà trong lòng đầy khúc mắc, vấn đề vẫn còn đó, có những khó khăn không giải quyết được ngay, mà kéo dài tới 2-3 ngày. Khi đó áp lực rất nặng nề, những lúc như vậy quan trọng nhất là phải thật tỉnh táo, cho đầu óc bớt căng thẳng thì mới suy nghĩ thông suốt được. Tôi tin chỉ cần bản thân không bỏ cuộc thì chắc chắn sẽ giải quyết được vấn đề.
Tôi hay bày tỏ những khó khăn gặp phải cho sếp, hoặc nhóm trưởng, họ là người trực tiếp làm việc với bạn, họ sẵn sàng lắng nghe, và đưa ra những giải pháp tuyệt vời giúp bạn giải quyết được bế tắc, hoặc có thể họ sẽ sửa lại yêu cầu để có khả năng thực hiện hơn. Đó là 1 biện pháp rất tốt trong trường hợp bất đắc dĩ nhất, nên tránh việc cứ im lìm ngồi ôm khó khăn rồi chẳng giải quyết được gì cả. Cũng không nên dựa dẫm quá nhiều.

Làm việc nhóm là 1 kỹ năng quan trọng, mỗi người đều phải có 1 sự trao đổi thông tin với nhau liên tục trong suốt quá trình thực hiện dự án. Nhóm trưởng giao yêu cầu xuống, thành viên trao đổi để hiểu rõ yêu cầu trước khi thực hiện. Trong quá trình làm việc, các thành viên có thể hỗ trợ lẫn nhau, cả người tiếp thu và người truyền đạt đều nhận được những kinh nghiệm quý giá.
Lập trình không phải là công việc cô độc. Ngược lại, bạn sẽ phải nhờ vào cộng đồng, đọc sách của các lập trình viên kì cựu, trao đổi với rất nhiều người khác, đừng để mình trở nên thụ động.
Khi làm việc nhóm, có 1 công nghệ gọi là VCS, giúp lập trình viên có thể làm việc chung, code chung với nhau dễ dàng, bạn nên tinh thông món này.

Đọc sách lập trình rất hữu ích, bạn có thể đọc sách về công nghệ bạn đang làm, hoặc sách về 1 công nghệ mới mà bạn quan tâm. Nên đọc sách nổi tiếng trong giới lập trình bằng tiếng anh như: O’Reilly, Wrox, Apress … Các sách này đều rất chi tiết, bạn sẽ học được nhiều thứ vô giá. Đọc sách tiếng anh là 1 kỹ năng không dễ, đọc vài cuốn đầu sẽ khó khăn, nhưng lâu dần bạn sẽ quen và đọc dễ như ăn cơm sườn.
Học tiếng anh hằng ngày, nếu ai hỏi tôi ngôn ngữ nào quan trọng nhất cho 1 lập trình viên thì tôi xin trả lời đó chính là tiếng anh.

Vượt qua áp lực công việc
Làm việc nhóm
VCS (Version Control System) Hệ thống quản lý phiên bản, giải quyết được bài toán nhiều người cùng sửa, thêm, xóa code trên 1 file cùng lúc. Ngày xưa người ta dùng SVN, ngày nay dùng Git.
Sách lập trình tiếng anh

Quá nhanh quá nguy hiểm, với tốc độ này, bạn sẽ phát triển nhanh không ngờ trong 1 thời gian ngắn. Điều đó là cần thiết để có thể học được nhiều thứ, nhưng đừng quên ghi chú, lưu lại những gì học được, để sau này còn hữu dụng.

Đừng dừng lại

Khi đã trải qua vài ba năm, lăn lộn vài ba công ty, bạn đã có cái nhìn khá bao quát về nghề. Mỗi người lúc này đều có hướng đi riêng cho mình. Chính bạn sẽ là người viết tiếp câu chuyện.

Nghề lập trình website
Đánh giá bài viết

Gửi phản hồi

Your email address will not be published. Required fields are marked *