Sinh viên IT lần đầu bước chân vào công ty


Xin chào mọi người!
Em là nhất! 
À không!
Em là Nhất!
Em là thực tập sinh Backend mới đến với công ty, hy vọng sẽ được cùng nhau làm việc và nhận được nhiều sự giúp đỡ từ mọi người...

Đây là những câu nói đầu tiên của mình ở ngày đầu tiên bước chân đến công ty công nghệ D(Mình xin được phép che tên), mình vẫn còn nhớ như in khoảnh khắc đấy, đứng trước hơn 20 người trong công ty để giới thiệu về bản thân,  tim đập thình thịch, giọng hơi run, trước bao nhiêu ánh mắt, hàng tấn câu hỏi đặt ra trong ngày hôm ấy, choáng ngợp trước sự khác biệt giữa môi trường học tập và môi trường thực tế trong trong công ty như thế nào.

Dưới đây là một số chia sẻ về quá trình mình bước chân vào công ty với vai trò thực tập sinh

    1. Mô hình Agile - Quy trình Scrum

Sau màn chào hỏi của các tân binh, vâng một cuộc Daily Scrum(họp hằng ngày) diễn ra, mình khá đớ người và phê trước cách làm việc này, tất cả mọi thứ, mọi dự án, mọi tiến trình của tất cả mọi người, mọi khó khăn, đều được đem ra thảo luận, giải quyết, tìm hướng đi, có sự tham gia của mọi vị trí:

  • Backend/Frontend Devs: Các lập trình viên Backend, Frontend, anh em dev mãi đỉnh
  • QA/QC(Quality Assurance vs Quality Control): Đảm bảo chất lượng đầu ra đúng tiêu chuẩn, phù hợp với yêu cầu của khách hàng, bao gồm các tester trong này, mình nhớ họp daily mỗi buổi sáng là y như rằng văn mẫu: "Phát hiện x bugs trên bản build y" chỉ tội mỗi anh em dev, hãy tưởng tượng một list cả trăm bugs.
  • BA(Business Analyst): Vị trí này mình không biết nhiều, nhưng mình nghĩ công việc của họ là phân tích nghiệp vụ kinh doanh, và đề xuất những giải pháp, mình thấy mấy anh backend cứ có thắc mắc là tới hỏi, kiểu chỗ này khách hàng thực sự muốn gì?
  • Marketing and Sales: Nghiên cứu thị trường, quản bá, tiếp thị, truyền thông, thuyết phục, đàm phán với khách hàng, vị trí này mình không biết nhiều nhưng có vẻ nó liên quan mật thiết với nguồn sống của công ty do có làm việc trực tiếp với khách hàng
  • PO/PM/PM(Product Owner / Product Manager / Project Manager): Và đây là người quyền lực nhất trong cuộc họp, mình cũng không biết sếp mình được xếp vào đâu nữa, nhưng đây là vị trí mà mình cảm thấy là quan trọng nhất, là người đưa ra tầm nhìn, chỉ đạo cũng như kiểm soát và thúc đẩy mọi người đi về phía trước.
Theo mình tìm hiểu thì mô hình Agile là mô hình phát triển phần mềm một cách linh hoạt, mục đích là đẩy nhanh tiến độ phát triển dự án phần mềm, thích nghi và đáp ứng nhanh các yêu cầu thay đổi, còn Scrum là một framework của nó, mình thì thích hiểu Scrum là một cách triển khai của mô hình này, còn Agile chỉ là một sự trừu tượng hoá, một đặc trưng dễ thấy của quy trình này là họp, họp, họp, những cuộc họp diễn ra trong thời gian không dài nhưng nhiều.

"Lập trình viên không chỉ biết mỗi code, hãy dành thời gian quan sát nhiều hơn"

    2. Vạn sự khởi đầu dễ dàng - gian nan muốn từ bỏ luôn

Ngày đầu tiên, trong lòng hớn hở, và đầy nhiệt huyết, sau một buổi nói chuyện nhẹ với các anh backend về những công nghệ, kiến thức lập trình mà mình đã được học trong trường và những kiến thức mà mình đã tự học, ví dụ như mình đã học lập trình backend với NodeJs, hệ cơ sở dữ liệu, có biết Mongodb, có biết Mysql, có học cấu trúc dữ liệu và giải thuật, các anh hỏi mình có biết JavaScript ES6 là gì không? Có luôn hehe chiếu mới nên cu cậu tự tin lắm,... các anh giao cho làm cái demo Todo List, hehe dễ vậy anh, mình làm xong luôn trong vòng 2 tiếng vì tính chất đơn giản của nó, chủ yếu là CRUD(Đọc - thêm - xoá - sửa), dùng các công nghệ như ExpressJs(một framework rất nổi tiếng của NodeJs), MongoDB(một hệ quản trị cơ sở dữ liệu mã nguồn mở), tự tin căng tràn,...

Bring Me Thanos!

Tốt lắm em! Giờ thì mình làm cái demo thứ 2 nhé!

Task Management, team BA sẽ lọc ra một số tính năng có trong ứng dụng Project Management, em sẽ phân tích và thiết kế hệ thống dựa trên yêu cầu này, và sẽ được quản lý như một dự án, công nghệ thì em liên hệ với mentor sẽ đưa ra chi tiết yêu cầu công nghệ,... lúc này thì hơi bất an rồi.. bão sắp tới rồi

Phân tích thiết kế hệ thống, phân tích môi trường nhu cầu, phân tích chức năng, phân tích cấu trúc, phân tích tương tác, phân tích ứng xử, thiết kế kiến trúc, thiết kế chi tiết lớp, vẽ Activity Diagram, Class Diagram, Usecase Diagram, Sequence Diagram, System Context Diagram, Database Design, báo cáo plan, code review, học framework mới NestJs, học TypeOrm, học Typescript, học database PostgreSQL, học debugger,...  muốn về với mẹ rồi

Chỗ này em sai rồi!

Chỗ này chưa được!

Mô hình này là hoàn toàn sai!

Đặc tả chức năng chỗ này là sai lệch so với yêu cầu!

Chỗ này sao em không viết lên file Plan

Em phải tuân thủ quy trình, phải làm theo kế hoạch

Đó là những điều mà nguyên hai tháng sau mình đã nhận được, mình nhận ra sự thiếu sót và yếu kém của bản thân, và mình cần học hỏi và học hỏi, nhận ra nhiều sai lầm hơn nữa, và các chuỗi ngày sau đó của mình chỉ là phân tích thiết kế, triển khai code, review code, bugs bugs và bugs, ăn bugs để sống, đọc tài liệu, triển khai code, fix bugs, đọc tài liệu, triển khai, fix bugs, review code,... những chuỗi ngày vô tận, và mình nhận ra một điều là

"Chúng ta thật sự học hỏi được rất nhiều thứ từ những sai lầm của bản thân, vì vậy xin hãy đừng ngần ngại thử một điều gì mới, đừng ngần ngại với những việc khó khăn, cứ làm thôi!"

    3. Kiến thức trên giảng đường có giúp ích được gì khi đi làm hay không

Theo cá nhân mình cảm nhận, thì ở trường dạy như thế nào thì trên công ty làm y như vậy, khác một chỗ là trên trường bạn có thể làm quoa loa cho có, cho đủ điểm để qua môn, nhưng trong công ty thì không, nó như kiểu dữ liệu Boolean vậy chỉ có true hoặc false, chỗ này chưa đúng với yêu cầu, làm lại, làm đi làm lại cho đến khi nào được thì thôi, làm cho đến khi nào đúng với yêu cầu thì thôi, những kiến thức trên trường được áp dụng một cách triệt để không những thế còn phải cập nhật cho kịp so với thời đại, so với tính chất đổi mới mạnh mẽ của các công nghệ, cảm giác ngày trên công ty 8 tiếng tối về ngồi học và đọc tài liệu nữa, chôi ao,...
Chia sẻ thêm tí là công ty còn khá ít nhân lực nên team backend phải đảm nhận rất nhiều công việc, với thấy mấy anh backend ở đây biết nhiều công nghệ từ các công nghệ backend, tới devops, đôi lúc còn làm các dự án trí tuệ nhân tạo, từ Js đến C#, dotnet, Python, Golang, có mấy ông làm fullstack luôn, toàn tay to thật sự.

"Kiến thức là kho báu, học nhiều điều mới mỗi ngày"

    4. Em biết công nghệ abc, em đã học xyz

Hồi mới vào công ty mình cũng có những buổi nói chuyện trao đổi với mentor, cũng khá tự tin trình độ của bản thân, tự tin vào hàng tấn công nghệ mà mình đã được học trên trường đại học và tự học, ví dụ: cấu trúc dữ liệu và giải thuật, Java core, nguyên tắc Solid, lập trình hướng đối tượng, hệ thống và công nghệ web, Html, Css, Bootstrap, Jquery, Javascript, Mysql, Mongodb, công nghệ điện toán đám mây, phát triển ứng dụng backend với Php và Nodejs, thư viện ReactJs, có biết Git và Github,... giờ đọc lại chỉ muốn nói với bản thân là "bạn chắc chưa?"

Điều này rất quan trọng, nếu nói là có biết tới một công nghệ thì mình nghĩ là chí ít là có thể giải thích và phát biểu nó dưới một số khía cạnh sau:

Thế nào là?
Khi nào thì cần dùng nó?
Tại sao lại cần nó, và dự án nào thì cần dùng nó?
Cho các ví dụ?
Đây mới chỉ là phát biểu, chưa nói đến việc có áp dụng được vào thực tế có hiệu quả hay không

Khi ở trường đại học, mình cứ nghĩ là lý thuyết thì không quan trọng, quan trọng hơn hẵn là thực hành, làm thực tế, lý thuyết học bao nhiêu cũng vậy, giờ thì mình nghĩ là lý thuyết và thực hành cái nào cũng quan trọng như nhau, không có lý thuyết thì không bao giờ có thể thực hành được và không có thực hành thì lý thuyết thì mãi vẫn chỉ là lý thuyết.

"Và hãy cẩn thận khi phát biểu rằng bạn biết hay đã học một công nghệ nào đó"

    5. Lập trình viên không chỉ biết mỗi code

Ngoài chuyện phát triển kỹ năng chuyên môn, mình còn được học nhiều thứ khác như kỹ năng nói chuyện với các anh các chị, kỹ năng xây dựng kế hoạch, làm việc có kế hoạch, làm việc có kết quả, dù có tệ thế nào cũng phải có kết quả, biết viết mail, viết tin nhắn có bố cục, rõ ràng, mạch lạc sao cho người đọc muốn trả lời, tham gia các hoạt động tập thể, chơi thể thao cùng mọi người, mình cảm thấy các hoạt động tập thể rất quan trọng, nó giúp kết nối và gắn kết mọi người lại với nhau, khi mà chúng ta gần gũi hơn, thân thiết hơn sẽ rất dễ nói chuyện, rất dễ chia sẻ mọi thứ, khi có khó khăn vướng mắc, cũng dễ dàng tìm được người giúp đỡ hơn. Có một điều quan trọng hơn nữa là sự kỷ luật đối với bản thân, lúc còn học tại trường, mình có những thói quen tệ hại như ngoài giờ học chỉ thích ở trong phòng lướt mạng xã hội, chơi game, xem video youtube, làm việc gì cũng trì hoãn, không bao giờ lên kế hoạch trong mọi chuyện, không tôn trọng thời gian mà mình có cũng như thời gian của người khác, không cố gắng luyện tập và bảo vệ sức khoẻ bản thân, đến lúc đi thi mới chịu học bằng cách thức thâu đêm, haizzz điều này là rất tệ hại!
Giờ thì mình đang cố gắng cải thiện lại tất cả mọi thứ, chăm chỉ tập thể thao, ăn ngủ đúng giờ giấc, cố gắng làm việc theo kế hoạch, sự chỉnh chu, trách nhiệm đối với những việc mà mình làm, tự có kỷ luật với bản thân, cố gắng học hỏi thêm nhiều điều mới mỗi ngày.

"Kỹ năng mềm là quan trọng, hãy kỷ luật với bản thân để thúc ép bản thân phát triển"

    6. Tổng kết

Mình vừa chia sẻ những kinh nghiệm và những điều hạn hẹp mà mình đã thấy được, học hỏi được trong những ngày tháng là thực tập sinh, hy vọng sẽ nhận được những ý kiến đóng góp những chỗ mình sai lệch để có thể  giúp mình  trưởng thành hơn, giúp bài viết có thể hoàn thiện hơn, mình hy vọng những điều mình chia sẻ có thể giúp được ai đó, đặc biệt là những bạn sinh viên sắp trải nghiệm công việc thực tập thực tế tại các công ty, chúc tất cả anh em lập trình viên nói riêng và tất cả mọi người đọc bài viết này nói chung thật nhiều sức khoẻ và thành công trong cuộc sống!

Và điều cuối cùng: "Anh em dev mãi đỉnh"
20230501_094923.jpg 1.95 MB