Kỹ năng gì là khó nhất trong Front end, và điều gì để phân biệt giữa 1 senior và 1 tech lead về front end
Em đang là SV năm cuối và muốn theo career path của Front end dev, các bậc tiền bối có thể giúp em trả lời 2 câu hỏi trên không ạ
4 CÂU TRẢ LỜI
Để có thể theo đuổi con đường trở thành Frontend Developer, thì em sẽ cần rất nhiều kỹ năng, từ kiến thức về lập trình cơ bản, cách thức mà một ứng dụng web được vận hành, các kiến thức về source code management (git, github), cho đến các kiến thức chuyên môn như HTML, CSS, Javascript. HTML thì cần nắm được cả những chức năng mới của HTML5, CSS thì cần biết cách vận dụng các điểm mới của CSS3, còn Javascript thì giờ là thời đại của Single Page Application, của Isomorphic Application, thế nên một nền tảng kiến thức vững chắc về Javascript là cực kỳ cần thiết. Em cần phải học thật sâu về Javascript, nắm vững các framework/library như ReactJS hay VueJS ...
Nhìn chung là có rất nhiều cái khó, nói về cái nào khó nhất thì cũng tùy từng người, ví dụ như với bạn A thì cái khó nhất là ngồi code responsive design, cho nhiều loại trình duyệt, với nhiều kích cỡ màn hình khác nhau, nhưng vẫn phải đảm bảo UI/UX thật tốt. Còn với bạn B thì cái khó nhất là cách tổ chức và vận hành các components của React, Vue ...
Nhìn chung em cứ cố gắng trải nghiệm thật nhiều, thì sẽ dần dần nhận ra được những cái hay, cái khó, hay những điểm mạnh, yếu của mình
Còn về câu hỏi thứ 2 thì thật sự mấy khái niệm này cũng không được rõ ràng, và định nghĩa của nó còn tùy thuộc vào từng công ty, từng môi trường khác nhau. Có bạn được đánh giá là Senior Developer ở công ty này nhưng khi sang công ty khác thì chỉ được ghi nhận là Middle Developer. Có bạn là technical leader ở thời điểm này nhưng lại không phải ở thời điểm khác.
Nếu trong một công ty có định nghĩa sự tồn tại độc lập của cả 2 vị trí, thì thông thường, Senior Developer thì giống như cái tên của nó, dùng để chỉ những lập trình viên lâu năm, có nhiều kinh nghiệm về một lĩnh vực nào đó. Còn Technical Leader là chỉ người chịu trách nhiệm, về kỹ thuật, của một bộ phận, hay một dự án nào đó. Tức một cái là để chỉ năng lực của lập trình viên, còn một cái là để chỉ vai trò của lập trình viên trong dự án, hay trong tổ chức. Technical Leader thường là người sẽ cần phải đưa ra những quyết định cuối cùng về các giải pháp về vấn đề kỹ thuật cho team/dự án, thế nên đương nhiên cũng sẽ yêu cầu năng lực kỹ thuật cao, cũng như hiểu biết rộng (có thể về cả những vấn đề không phải là chuyên môn chính của mình), và do đó họ cũng là (hoặc được đánh giá cao hơn là) senior developer. Ví dụ như một dự án có thể có nhiều senior developer nhưng sẽ chỉ có một hoặc vài Technical Leader.
Mình đồng ý với ý kiến của bạn @thangtd90 , mỗi người đều khác biệt nên sẽ tự bản thân sẽ cảm nhận cái khó và dễ khác nhau.
Theo trải nghiệm của mình, một trong những kĩ năng khó của Frontend là khả năng thích ứng và học hỏi công nghệ mới. Thế giới frontend như một bữa tiệc buffet mà bạn vào đó và chọn ăn bất cứ thứ gì (chọn tổ hợp các công cụ, framework...), kết quả cuối cùng vẫn sẽ là no bụng (ra một trang web chạy được), nhưng bạn lại không thể ăn hết cả bàn tiệc mà chỉ chọn những món bạn có thể ăn. Tuy nhiên càng ngày càng có nhiều món ăn mới được phát minh ra, tốt cho sức khỏe hơn, ngon miệng hơn, và những món ăn "ít ngon và dinh dưỡng" hơn sẽ bị đào thải (ví dụ ngày xưa SVN như là một chân lý trong một thời gian dài, nhưng sau đó GIT đã đạp tất cả, nhưng tương lai sẽ có thứ tốt hơn GIT thôi). Bạn sẽ rất dễ bị chới với và lạc lõng nếu không có một nền tảng vững chắc và bị thị trường dẫn dụ. Ví dụ bạn thấy dev react lương rất cao và hot, bạn đâm đầu vào học react một cách máy móc để tìm việc mà bỏ qua các kiến thức nền tảng và cần thiết, và giả sử react đang trên bờ vực bị đào thải vì một công cụ khác mạnh mẽ hơn, bạn ngay lập tức sẽ thấy hoang mang và không biết có nên đi theo cái "công cụ mới nổi" đó không...
Về câu hỏi phân biệt senior và tech lead, câu trả lời chủ quan của mình là:
Senior: khi một developer đã trải nghề đủ lâu, họ đã xác định được con đường mình phải đi, cùng với một nền tảng kiến thức và kinh nghiệm vững chắc, họ sẽ xoáy sâu vào một hướng và master hướng đó. Với họ thì mọi task hàng ngày chỉ là muỗi, hắt xì cái là xong task. Tuy nhiên đời không phải lúc nào cũng màu hồng, vẫn sẽ có những thách thức mới, hoặc kiến thức mới đòi hỏi họ phải tìm hiểu mới có thể hoàn thành task, nhưng điều này không làm khó được họ, và họ chỉ cần dành tí thời gian là có thể nắm đủ vững và hoàn thành task. "Senior" là ám chỉ về trình độ và kinh nghiệm của người lập trình.
Tech lead: theo cảm nhận của mình, vị trí tech lead sẽ bao toàn mọi thứ hơn, gọi là "tech lead về frontend" thì họ vẫn phải hiểu về backend, devops (cơ bản), database, cách mà mọi thứ vận hành và kết nối. Họ phải hiểu cả business của dự án, để đưa ra các quyết định bậc cao về công nghệ, kĩ thuật áp dụng cho dự án để phù hợp nhất, từ đó sẽ chọn được nhân sự phù hợp vào dự án. Thông thường người tech lead sẽ là người xây dựng cái sườn thô của một dự án, và các senior/junior sẽ làm tiếp trên đó. Ngoài ra họ còn phải có kĩ năng leader (kĩ năng mềm) như quản lý task, chia task phù hợp cho team member, biết được điểm mạnh/yếu của member để kích thích họ phát triển, giải quyết mâu thuẫn về kĩ thuật, trả lời câu hỏi của team member... Người làm tech lead sẽ gần với vị trí Software Architect hoặc CTO hơn (cảm nhận cá nhân). "Tech lead" là ám chỉ về vị trí, vai trò và trách nhiệm của người đó trong team, dự án hoặc trong công ty.
Trên đây là kinh nghiệm cá nhân của mình khi làm việc tại một số công ty. Đúng như bạn @thangtd90 có chia sẻ thì mỗi công ty sẽ mỗi khác nhau, bạn cần phải tự trải nghiệm và tự tìm ra câu trả lời cho riêng mình, để sau này nếu có một junior nào đó hỏi bạn câu hỏi tương tự, bạn có thể tự tin chia sẻ và truyền đạt kinh nghiệm cho các thế hệ sau.
nhiều cái khó lắm, chẳng biết kể cái nào trước, thôi bạn cứ vào đây làm hết cái roadmap này đi là biết cái gì khó ngay https://roadmap.sh/frontend
=)) nghỉ
Em cũng đang là Fresher Fullstack, nhưng em cũng mong các anh chị đi trước cho lời khuyên về Front-end như câu hỏi của bạn ạ. Em cảm ơn.
mình cũng là fresher full stack, nhưng sau khi đi làm thì 99% là code front-end (angular). Tùy vào độ khó khi bạn ko giỏi 1 trong 3 cái cơ bản html,css,js. Với mình là JS . Chỉ cần thạo js là giải quyết đc kha khá vấn đề