Hiện nay, một lập trình viên có thể lựa chọn cho mình nhiều hướng phát triển: Lập trình nhúng (Embeded System), lập trình web, lập trình ứng dụng di động, … Vì mình đi theo hướng lập trình web, mình sẽ chia sẻ một số kĩ năng mà các bạn cần chuẩn bị nếu muốn theo con đường web developer.
Kĩ năng front-end
Nói đơn giản: Front-end là những gì người dùng nhìn thấy và tương tác. Nó là “mặt tiền” của một trang web. Nếu bạn thích thiết kế, gần gũi với người dùng thì bạn có thể tập trung phát triển những kĩ năng front-end, trở thành một front-end developer (Lương cũng cao lắm đấy nhé). Những kĩ năng bạn cần phát triển bao gồm:
- HTML/CSS/Javascript cơ bản (Đừng nghĩ js dễ nhé, khó lắm đấy).
- Một số thư viện/framework nổi tiếng: Bootstrap, jQuery, AngularJS, EmberJS.
- Kĩ năng thiết kế, sử dụngPhotoshop. Kiến thức và kinh nghiệm về UI/UX.
- LESS, SASS (stylesheet language).
- Sử dụng npm, grunt, … để optimize, minimize HTML/CSS/JS.
- Kiến thức về Ajax, cách thiết kế giao diện responsive …..
Vai trò của front-end trong 1 dự án là khá quan trọng, vì giao diện là thứ đập vào mắt người dùng đầu tiên. Front-end developer không chỉ thiết kế giao diện đẹp, mà còn phải rõ ràng, dễ sử dụng. Người dùng có thể làm việc mình muốn một cách đơn giản, nhanh gọn (Google là một ví dụ).
Một số sách hay để nâng cao kĩ năng front-end:
- Series Head First, The Missing Manual (Head First HTML & CSS, jQuery The Missing Manual …)
- Don’t make me think
- The Design of Everyday Things
Kĩ năng back-end
Back-end là những thứ người dùng không nhìn thấy, nhưng giúp cho hệ thống hoạt động trơn tru. Dữ liệu của người dùng, thuật toán phân tích … đều nằm ở back-end. Nếu front-end là lớp sơn, lớp vỏ của một ngôi nhà thì back-end chính là giàn giáo, xương sườn của ngôi nhà đó. Những kĩ năng bạn cần có gồm có:
- Ngôn ngữ server-side để viết back-end: C#, Java, Python, Ruby, …. Dĩ nhiên là phải bao gồm kiến thức về những web framework đi kèm các ngôn ngữ này: ASP.NET MVC, Spring, Django, Rails …
- Kiến thức về database SQL: MS SQL Server, MySQL, … Gần đây một số database NoSQL đang khá thịnh hành: Neo4j, MongoDB, …
- Kiến thức về web nói chung, cách viết Web Service, cách đăng nhập và phân quyền .
- Kiến thức về 1 số CMS: WordPress, Joomla, Umbraco, ….
Kiến thức phần back-end rất nhiều và phức tạp, do đó một back-end developer chỉ nên tập trung vào 2-3 ngôn ngữ chính, đừng ráng ôm hết kẻo “tấu hỏa nhập ma”. Code phần back-end thường rất nhiều và “khủng”, do đó cần có cấu trúc tốt, dễ cải tiến và mở rộng (bằng cách áp dụng SOLID). Back-end developer có thể trau dồi kiến thức để leo lên vị trí System Analyst hoặc Software Architecture.
Một số sách hay cho back-end developer:
- Clean Code
- Code Complete
- Head First Design Pattern
- Sách chuyên sâu về ngôn ngữ/framework: C# in Depth, Pro .NET 4.5, Spring in Action, …
Kĩ năng phân tích thiết kế
Hiện nay, ranh giới giữa front-end và back-end trong lập trình web khá mong manh. Đa phần các web developer thường giỏi về back-end, có kha khá kiến thức về front-end, việc này khá hữu dụng. Biết cả front-end và back-end, bạn sẽ biết được một trang web hoạt động như thế nào – từ đầu tới cuối.
Lập trình viên front-end, back-end cũng có thể “lấn sân” qua mảng mobile nhờ sự giúp sức của một số framework như Cordova (HTML, CSS, JS), Ionic, Window Phone App (C#), … Để tăng giá trị của bản thân, ngoài kĩ năng cứng, bạn cần trau dồi kĩ năng phân tích, giải quyết vấn đề : Khách hàng cần gì ở trang web, lượng truy cập là bao nhiêu, làm sao để tăng performance. Nhà tuyển dụng sẽ đánh giá kĩ năng này của bạn khi phỏng vấn đấy.
Một số sách nên tham khảo:
- The Pragmatic Programmer: From Journeyman to Master
- The Passionate Programmer: Creating a Remarkable Career in Software Development
- Getting Real
- Cracking the Coding Interview: 150 Programming Questions and Solutions
Bài viết này được viết theo yêu cầu của bạn Phước Lê đã comment trong bài “Kỷ niệm post thứ 50“. Rất mong nhận được sự góp ý và ủng hộ từ các bạn.
30s quảng cáo
Đây là một bài viết được trích dẫn từ cuốn sách “Code dạo kí sự – Lập trình viên đâu phải chỉ biết code” do mình viết. Quyển sách bao gồm những kĩ năng từ mềm đến cứng mà mỗi developer phải có, đảm bảo sẽ rất có ích cho các bạn sinh viên hoặc lập trình viên đã đi làm. Các bạn xem thông tin và đặt mua sách tại đây nhé: Sách Code Dạo Ký Sự.
Gõ nhầm Zoomla rồi kìa bác. Joomla. kaka.
LikeLike
Thank bạn 😀
LikeLike
Cả bài viết hay thế không nêu ra được gì lại đi bắt lỗi bé tạo,sida thế……….
LikeLike
Góp ý cũng tốt mà bạn, đôi khi mình check không kĩ nên còn sai sót thôi :D.
LikeLike
Bài viết hay lắm bạn 🙂
LikeLike
anh có thể giúp e làm bài web quản lý khách sạn không a?
LikeLike
Không nhé bạn, tự làm thì mới giỏi được 😀
LikeLike
Cho em hỏi em chưa biết gì về code hay web, học trái ngành(em học kỹ thuật) bây giờ tự học từ đầu liệu có thể làm web dev ko ạ? em thấy mình không thích hợp với ngành đang học và muốn chuyển sang hướng mới nhưng vẫn phải học vì yêu cầu gia đình …
LikeLike
Tuỳ vào đam mê thôi bạn, bạn có thể ra trung tâm để học căn bản, sau đó tự học thêm ở nhà 😀
LikeLike
thế con lớp 9 học html/css/php cơ bản dc không :))
LikeLike
Học đc thì cứ học, sau này rớt đh có thể đi code dạp 😉
LikeLike
rớt đh.. :)).. ý chú nói không học mà lo học code nên học dở à
LikeLike
Lời khuyên rất hữu ích!
LikeLike
:))
LikeLike
bài viết rất hay. cám ơn anh đã khai sáng cho đàn em. kinh nghiệm quý giá cho một junior
LikeLike
Bạn có ở TP HCM ko? Có thể cho mình số đt để tiện liên hệ được không? Hiện tại mình đang có một sô dự án về website, nhưng mình không hiểu nhiều về lĩnh vực này, nếu được có thể cho mình cuộc hẹn nhờ bạn tư vấn giúp. Thạnks
LikeLike
Hiện tại mình ko ở hcm bạn nhé 😉
LikeLike
Bạn có thể call qua cho mình 😀
0909317076
LikeLike
Ở đây mình xin bổ sung thêm Full-stack Developer, cái này kinh nghiệm 3 năm.
LikeLike
b có thể ib cho mình qua fb Nguyễn Dạ Thảo nhé
LikeLike
Hi Anh, A tư vấn hộ em với ạ. Em đã nắm được kiến thức HTML, CSS, Bootstrap, các kiến thức đấy chưa thành thạo lắm ạ. Và em nắm được Javascript với thư viện jquery ở mức cơ bản rồi.Em đã xây dựng được project thuần. Đang xây dựng project bằng laravel 5.3 rồi thì có khả năng xin được việc lập trình php luôn không ạ? Hay chỉ nên đi thực tập trước ạ. Tks a ạ
LikeLike
Muốn biết xin được hay không thì em cứ viết CV, làm được gì thì bỏ vào CV rồi nộp đơn đi xin việc thôi :D.
Anh không phải người tuyển dụng thì sao anh biết được :D.
LikeLike
mik cũng như bạn , Theo mk thì bạn nên thực tập 3 tháng thăng skill đã
LikeLike
Khá hay đấy anh . Hy vọng a viết nhiều hơn nữa
LikeLike
Chờ anh ra những bài mới! 🙂
LikeLike
Làm sao để biết một website sử dụng ngôn ngữ back-end nào vậy anh? 🙂
LikeLike
Gửi mail hỏi thằng viết web em nhé 🙂
LikeLike
anh cho em skype với ạ,em đang muốn code dạo mong anh chia sẻ kinh nghiệm hơn.
LikeLike
em vừa theo đuổi học php ngày đầu tiên, nhưng k thấy a đề cập gì về php cả, cảm thấy hoang mang quá :((
LikeLike
Thực ra full stack developer là khái niệm rất vớ vẩn và có phần tự tin thái quá của một lượng lớn lập trình viên, thông thường khi nói full stack thì người đó thực chất là backend dev thì đúng hơn. Người ta thường nghĩ frontend là cái gì đó dễ dàng. Nhưng frontend ko chỉ có vài ba dòng code react vue tạo mấy cái component, làm việc với photoshop ui/ux và mấy cái thứ kể trên kia, mà còn phải biết làm rất nhiều thứ như vẽ các dạng đồ thị 2D/3D với d3, paper hoặc canvas. Phải biết thành thạo các thư viện chuyển động gsap, pop, spring. Phải có kinh nghiệm với các thư viện/game framework lớn như three pixi phaser. Phải biết các khái niệm tính toán vật lí như chuyển động lò xo, hình học phẳng, hinh học không gian, đại số tuyến tính. Các thư viện vật lí như matter, box2d cũng phải sờ tới. Đặc biệt bên cạnh javascript thì cũng phải biết viết webgl shader bằng glsl. Ông nào ko biết mấy cái kể trên thì xin tự nhận mình là backend developer cho rồi.
LikeLike
Cảm ơn anh Hoàng nhé. 🙂
LikeLiked by 1 person
Hi anh, em có câu hỏi là nếu chỉ theo front-end thì sau này có thể thăng tiến lên lead, pm, manager được không ạ. Em chỉ thích front-end nhưng nếu tìm hiểu chuyên sâu thì có cơ hội không ạ?
LikeLike