Ngày bé mình thường cùng bố xem đánh quyền anh, các võ sĩ chuyên nghiệp thường được phân chia hạng theo cân nặng, bao gồm rất nhiều hạng khác nhau như hạng lông , ruồi, bán trung, trung, nặng… Developer chúng ta cũng được chia hạng như vậy, nhưng không phải theo cân nặng mà là theo kĩ năng, gồm rất nhiều hạng khác nhau từ intern, fresher, junior cho đến senior, tech lead…
Bản thân mình hiện cũng chỉ là một developer hạng lông, hạng ruồi, vì vậy môi trường xung quanh mình tồn tại rất nhiều bạn cùng hạng với mình, thậm chí nhiều bạn còn chưa được xếp hạng nữa. Mình nhận thấy rằng rất nhiều bạn gặp khó khăn, không biết cách rèn luyện bản thân để nâng cao khả năng, tăng hạng.
Rèn luyện kĩ năng là cả một chặng đường dài với mỗi developer chúng ta, việc này đòi hỏi nhiều thời gian, công sức. Mọi thứ sẽ dễ dàng hơn nếu chúng ta sử dụng thời gian, công sức một cách hợp lý, hiệu quả, nếu không, mọi thứ đều trở nên vô nghĩa.
Mọi dòng code bạn viết ra đều tiềm ẩn khả năng gây lỗi, mọi phần mềm đều có lỗi. Vì vậy, để trở thành một developer tầm cỡ, bạn cần rèn luyện kĩ năng tìm lỗi, fix lỗi, bạn cần trở thành một dũng sĩ diệt bug, không một con bug nào có thể lọt qua bàn tay của bạn.
Tuy nhiên, mình thấy rằng các developer hạng lông, hạng ruồi lại thường lảng tránh quá trình debug, khiến cho khả năng debug của họ dở tệ. Mỗi khi code có bug, họ thường ngay lập tức tìm kiếm đến một gã khác trình cao hơn để tìm kiếm sự trợ giúp. Hệ quả là mấy gã trình cao ngày càng giỏi hơn bởi vì được tiếp xúc với nhiều bug, họ học được cách phán đoán lỗi, cách tìm lỗi, xử lý lỗi…, còn mấy ông đi nhờ fix bug hộ thì không học được gì cả.
Để có thể nâng cao khả năng code, debug, mình nghĩ rằng chúng ta nên học cách tự giải quyết các vấn đề của bản thân, độc lập chiến đấu với mấy con bug. Đừng vội vã đi nhờ sự trợ giúp còn bản thân thì ngồi nhìn, chỉ nên tìm kiếm sự trợ giúp khi bạn đã thật sự cố gắng hết sức nhưng vẫn không có kết quả. Bạn có thể sẽ hoàn thành task chậm hơn, mệt mỏi hơn, nhưng bạn sẽ học được nhiều thứ hơn, trình độ nâng cao hơn.
Công việc dành cho các vị trí fresher, junior thường khá đơn giản, thông thường là làm theo một cái gì đó có sẵn. Ví dụ như làm một web page dựa trên một web page có sẵn, code một function dựa trên những function cũ… Lý do là bởi trình độ của fresher, junior chưa đủ để có thể tự làm một công việc độc lập. Việc này không có gì sai, làm theo những thứ có sẵn do các anh senior làm sẽ giúp chúng ta học được nhiều điều. Tuy nhiên, mình thấy có rất nhiều bạn quá dựa dẫm vào những thứ có sẵn, chỉ biết copy/ paste code từ những thứ có sẵn, chỉnh sửa chút cho phù hợp với yêu cầu và hoàn thành task. Như vậy không tốt.
Mình từng thấy rất nhiều bạn không hiểu rõ lý thuyết cơ bản về web, không hiểu cách ASP.NET MVC hoạt động nhưng vẫn hoàn thành task được giao, lý do là họ dựa vào code cũ có sẵn để làm một cái tương tự như vậy. Kết quả là những bạn này không học được nhiều kiến thức từ quá trình làm việc, họ chỉ học được cách đối phó mà thôi.
Theo mình, để có thể phát triển nhanh, tốt nhất, chúng ta cần giữ một cái đầu mở, một cái đầu tò mò. Đừng dễ dãi với những gì bạn làm, hãy tò mò, hãy hiểu tại sao nó lại được làm như vậy. Hãy cố gắng hiểu tại sao mấy thánh trên stackoverflow lại hướng dẫn như vậy chứ đừng chỉ copy code của họ. Hãy hiểu tại sao code cũ lại được code như vậy chứ đừng chỉ bắt chước làm theo. Cũng như ở trên, có thể bạn sẽ hoàn thành task chậm hơn, mệt hơn, đôi khi còn bị sếp chỉ trích vì làm việc chậm ấy chứ, tuy nhiên, hãy nghĩ cho bản thân bạn, học cách mọi thứ hoạt động sẽ tốt cho bạn.
Như mình nói ở trên, công việc dành cho các vị trí thấp thường rất đơn giản, những công việc này thông thường chỉ là một phần vô cùng nhỏ trong một hệ thống vô cùng lớn. Vì vậy, các developer hạng lông, hạng ruồi dễ rơi vào tình trạng như con tốt trên bàn cờ, không hiểu được toàn bộ thế cục, không mở mang được đầu óc, không học được những kiến thức phức tạp hơn.
Vì vậy, hãy dành thời gian tìm hiểu xem những thứ bạn đang được giao làm nằm ở đâu trong hệ thống, nhiệm vụ của nó là gì, tại sao người ta lại làm như vậy… Như vậy, bạn sẽ học được cách họ thiết kế hệ thống, cách hoạt động của một hệ thống lớn hơn, thậm chí là cách nghiệp vụ của họ hoạt động… Đừng chỉ chăm chăm làm việc như một tên lính đánh thuê, sai đâu đánh đó, như vậy không tốt cho đầu óc của bạn.
Tất nhiên là đôi khi đánh thuê là công việc công ty thuê bạn làm, họ không trả lương để chúng ta vào đấy tìm hiểu những thứ chúng ta không có trách nhiệm. Giả sử như task của bạn là chỉnh sửa một chút css thì dĩ nhiên là họ không muốn bạn dành cả tiếng đồng hồ để tìm hiểu cách cả website hoạt động. Tuy nhiên, việc luôn cố gắng nhìn vào bức tranh lớn hơn giúp chúng ta học hỏi được nhiều thứ hơn, hiểu về hệ thống hơn, lâu dần chúng ta có thể đảm nhiệm nhiều công việc phức tạp hơn, như vậy cũng có lợi cho phía công ty đấy chứ. Về phía bạn, nếu bạn không muốn là một con tốt thì đừng hành xử như một con tốt, hãy luôn cố gắng nhìn lên xem họ đang làm gì phía trên đầu bạn.
Đã bao giờ bạn rơi vào tình trạng ngồi xuống học nhưng lại không biết học gì cả chưa? Nếu bạn đã từng thì lý do là bởi bạn đã bỏ qua một việc quan trọng đó là theo dõi lỗ hổng trong kiến thức của bản thân.
Có một thời gian mình luôn gặp khó khăn trong việc xử lý bất đồng hộ với C#, mỗi lần làm việc gì liên quan đến bất đồng bộ là mình tốn rất nhiều thời gian. Mình biết là mình bị hổng kiến thức xử lý bất đồng bộ, nhưng tại thời điểm làm việc thì mình không có đủ thời gian để học bài bản lại, sau đó thì mình lại quên mất là mình cần học lại kiến thức đó. Kết quả là những lần sau gặp phải mấy cái bất đồng bộ mình lại tốn rất nhiều thời gian, mọi chuyện cứ lặp lại vài lần như vậy. Cuối cùng mình quyết định tạo một danh sách trên Trello tên là “lỗ hổng kiến thức” và đưa “bất đồng bộ trong C#” vào danh sách đó để nhắc bản thân cần cải thiện kiến thức này, sau đó thì mình không quên nữa và tình hình được cải thiện. Mình giữ thói quen mỗi khi gặp kiến thức gì mình không biết, kiến thức gì quan trọng mà mình chưa hiểu mình đều đưa vào danh sách “lỗ hổng kiến thức” để cải thiện dần. Kết quả khá khả quan.
Đôi khi không phải chúng ta không có thời gian để cải thiện mà chỉ đơn giản là chúng ta không biết bản thân cần cải thiện gì mà thôi. Vì vậy việc theo dõi lỗ hổng kết thức sẽ giúp bạn dần lấp đầy khoảng trống, nâng cao khả năng hơn.
Ngoài công việc, ngoài code ở công ty hoặc bài tập ở trường, hãy dành thời gian rèn luyện bản thân mỗi ngày. Chúng ta có rất nhiều lĩnh vực, kiến thức cần rèn luyện ngoài kĩ thuật, hãy dành thời gian cho chúng.
Một cuốn sách về soft skill, một cuốn sách về clean code, một cuốn sách về lịch sử, một giờ học tiếng Anh, một giờ trong phòng gym… sẽ giúp bạn trở thành một con người tốt hơn, một con người tốt hơn thì cũng là một developer giỏi hơn.
Những điều mình nêu ở trên không lập tức biến bạn từ một võ sĩ hạng ruồi trở thành một võ sĩ hạng nặng, nhưng mình nghĩ nó sẽ giúp con đường thăng hạng của bạn rút ngắn hơn, hiệu quả hơn.
Nếu bạn đã là một developer hạng trung, hạng nặng thì bạn có lời khuyên nào dành cho các developer hạng lông, hạng ruồi không?
Nguồn: Devmaster Academy via TechTalk
Tags: Học Lập Trình | Học Lập Trình FrontEnd | Học Lập Trình PHP | Học Lập Trình Web PHP | Học Lập Trình C# | Học Lập Trình Java | Học Lập Trình Python | Học Lập Trình Asp.NET MVC 5 | Học Lập Trình WebAPI | Lập Trình FrontEnd Angular JS | VUEJS | Học Lập Trình Java Web