Những thứ mà bạn không được dạy ở trường đại học cho công việc lập trình đầu tiên của bạn
Bài đăng này đã không được cập nhật trong 5 năm
Giới thiệu
Có rất nhiều thứ quan trọng cần học để trở thành một developer: thuật toán, cấu trúc dữ liệu, các ngôn ngữ lập trình,... không thể đếm xuể được. Đấy là vấn đề trước khi chúng ta thực sự chọn một ngôn ngữ lập trình để bắt đầu. Go đang là xu hướng hiện nay. JavaScript đang là ngôn ngữ phổ biến nhất năm 2018. Hơn 3 tỷ thiết bị đang chạy trên Java. Wow, thật khó khăn để chọn một ngôn ngữ lập trình phù hợp khi bạn còn chưa biết rằng nó dùng để làm gì.
Bài viết này không nói về các chủ đề trên bởi vì chúng đã được dạy thường xuyên tại các trường đại học chuyên ngành CNTT hoặc các khoá học tương tự. Bài viết này sẽ nói về các công cụ và kĩ năng mà chúng đã không được dạy tại trường, và nó sẽ tạo ra một sự khác biệt rõ ràng khi bạn có một công việc đầu tiên.
Git
Đây chính xác là một công cụ hơn là một kĩ năng. Không quan tâm bạn là developer mảng nào hay bạn đang sử dụng ngôn ngữ gì, chắc chắn bạn sẽ sử dụng nó hằng ngày đấy.
Git là một công cụ quản lí mã nguồn (Source Control Manager hay SCM). Nói cách khác, Git cho phép bạn làm việc với nhiều phiên bản code khác nhau. Nó cung cấp các công cụ để bạn có thể làm việc với nhiều người trong cùng một project một cách thoải mái nhất và không gặp rắc rối với việc conflict code với nhau.
Nếu như bạn đang làm việc với project của chính mình, sẽ là một ý tưởng tốt nếu sử dụng Git vì nhiều lý do khác nhau. Hiển nhiên là bạn có thể lưu trữ code của bạn ở trên cloud miễn phí. Nhiều công ty hỗ trợ public repositories như GitHub, GitLab, BitBucket,.... Nếu làm việc nhóm hay nhảy vào dự án công ty thì trước sau gì bạn cũng phải dùng Git thôi, nên tốt hơn hết là bạn hãy học cách sử dụng nó trước đi.
Một nguồn học tuyệt vời để học Git là learngitbranching. Trang web này thể hiện trực quan, diễn tả cách hoạt động của từng command nên nó sẽ giúp ích bạn rất nhiều trong việc học Git. Bạn có thể học những thứ cơ bản về Git chỉ trong 1 ngày, nhưng bạn sẽ phải khám phá những command hữu ích trong một khoảng thời gian dài.
Cách giao tiếp
Một kĩ năng mềm quan trọng đang bị xem nhẹ chính là cách giao tiếp với mọi người. Những lập trình viên như chúng ta đang tập trung quá nhiều vào các khía cạnh công nghệ mà đôi khi chúng ta quên mất rằng để đạt được thứ tốt nhất, chúng ta phải làm việc với nhiều người khác. Có rất nhiều thứ để cải thiện khi nói về việc giao tiếp. Tôi sẽ chỉ ra một điều quan trọng nhất, dành cho các developers, đó chính là làm sao để mô tả lại vấn đề cho người khác hiểu. Bạn sẽ phải thường xuyên nhờ người khác giúp đỡ khi bạn gặp khó khăn, và để nhận được sự giúp đỡ thì trước tiên bạn phải mô tả lại vấn đề của bạn trước đã.
Đồng nghiệp của bạn cũng bận rộn như bạn vậy, họ cũng phải lo nghĩ nhiều việc. Vậy nên đừng đưa câu hỏi không đầu không đuôi với họ, thay vào đấy hãy cho họ biết bạn đã gặp vấn đề như thế nào, đã thử giải quyết bằng cách nào trước khi nhờ tới sự giúp đỡ.
Đừng làm như thế này
Này [anh A], cái [service] này không chạy khi tôi run [command], anh giúp tôi được không ?
Hãy làm như thế này
Này [anh A], tôi cần vài lời khuyên. Hiện tại tôi đang làm việc với [service]. Đáng lẽ ra nó phải [như này] nhưng nó lại thành ra [như này]. Tôi đã đọc docs và tôi không thể tìm ra được issues cho vấn đề đó. VÌ anh làm việc quen với [service], anh có thể giúp tôi một tay khi anh rảnh được không? Cà phê tôi mời nhé.
Đồng nghiệp không phải lúc nào cũng có nhiều kinh nghiệm với thứ mà bạn đang làm. Vậy nên trở nên thân thiện và đưa ra bối cảnh trước khi hỏi người khác sẽ khiến bạn cảm thấy cuộc trò chuyện diễn ra trôi chảy hơn, và vấn đề của bạn cũng được giải quyết một cách nhanh chóng hơn.
Để cải thiện điều này, hãy thử nói chuyện với chính mình khi bạn đối mặt với vấn đề khó. Hãy thử mô tả càng nhiều càng tốt về vấn đề bạn đang có. Bạn sẽ làm điều tương tự trong vô thức khi bạn nói chuyện với đồng nghiệp khác trong khoảng thời gian tiếp theo đấy.
Kĩ năng viết
Viết coded thì dễ ẹc mà. Bạn viết sai ở đâu thì máy tính sẽ báo lỗi cho bạn biết. Nhưng mà viết lách cho người khác thì mới là thử thách thực sự đấy.
Sẽ không tốn quá nhiều thời gian để bạn nhận ra rằng kĩ năng viết là một phần quan trọng trong công việc của bạn, cụ thể là lập trình. Bạn phải viết document cho code của bạn, gửi email cho đồng nghiệp, mô tả requirements và ngay cả mô tả code của bạn chạy như thế nào trong comment Git.
Kĩ năng viết là kĩ năng chuyển hoá ý nghĩ và cảm xúc của bạn ra ngôn từ. Khi bạn viết một thứ gì đấy, hãy để ý đến chủ đề, đối tượng (sếp, đồng nghiệp, cấp duới,...) và phương thức (Skype, Email,... ) mà bạn đang sử dụng.
Nếu như trao đổi công việc với một anh bạn đồng nghiệp, bạn có thể nói nhiều hơn về khía cạnh technical, điều đó vẫn ổn. Nhưng khi bạn giải thích cách hệ thống hoạt động cho đội marketing bằng những cụm từ như callback
hay là API
thì nó sẽ trở nên vô nghĩa đối với họ. Bạn sẽ nhận ra rằng khi gửi tin nhắn, cách mà bạn nói thường quan trọng hơn là bạn đang nói về cái gì.
Điều này cũng tương tự đối với nói chuyện giao tiếp hằng ngày, nhưng việc viết lách khó hơn bởi vì khi bạn viết cho nhiều người cùng một lúc, thay vì một cuộc đối thoại 1 - 1, bạn chỉ có một cơ hội duy nhất để gửi tin nhắn đó đi. Nếu như có ai đó chưa hiểu được ý bạn ngay lần đầu, thì họ cũng không có cơ hội để hỏi lại bạn ngay được.
Điều này đặc biệt quan trọng khi bạn viết code documentation hoặc một bài viết (như cái này). Viết một cách rõ ràng nhất cho mọi người có thể dễ dàng hiểu được là một điều quan trọng trong việc viết lách của bạn.
Để cải thiện kĩ năng viết của bạn, lời khuyên của tôi là hãy viết về những thứ bạn biết và bạn yêu thích càng nhiều càng tốt. Và hãy dành thời gian của bạn ra để đọc thật nhiều. Mỗi ngày dành một ít thời gian để đọc về công nghệ mới chẳng hạn. Bạn không chỉ cải thiện kĩ năng viết mà còn học được nhiều thứ mới nữa đấy.
Kết luận
Developers thường nghĩ công việc của họ là về máy tính, và đó là một sai lầm tệ hại. Công việc lập trình là xoay quanh con người, máy tính chỉ là công cụ của chúng ta mà thôi. Bạn tạo ra những giải pháp làm cho cuộc sống của con người trở nên tốt hơn và dễ dàng hơn, và điều này cần một sự đồng cảm lớn.
Nếu bạn hỏi tôi: "Kĩ năng nào là quan trọng nhất đối với một junior developer?" thì tôi xin trả lời rằng bạn nên học cách làm việc nhóm. Tất cả kĩ năng trong bài viết này sẽ giúp bạn đạt được mục tiêu đó.
Bạn sẽ có thể đổi lĩnh vực, làm trái ngành trong vài năm tới. Bạn có thể bỏ lập trình để lên vị trí quản lí, nhưng bạn sẽ phải làm việc với con người cho đến cuối cuộc đời. Và một người biết cách làm việc nhóm sẽ là mong muốn của các nhà tuyển dụng hơn là một tài năng cô độc đấy.
Tham khảo
Bài viết dựa theo bài gốc của tác giả @vmarchesin
P.S: Bài viết này dành tặng cho Mèo "Dobie" Vũ, mong bạn sẽ gặp nhiều may mắn và thành công trong 2 năm tới. Chùa cô Phi vẫn ở đó chờ bạn quay về. 🚬
Xin cảm ơn Tuệ Đen và chị Mu đã giúp em hoàn thành bài viết này 💕
All rights reserved