nhat.dev
  • Tin tức
  • Dịch vụ
  • Lập trình
    • ReactJS
    • React Native
    • Angular
    • VueJS
  • Hackintosh
    • Hackintosh
    • Opencore
  • Liên hệ
No Result
View All Result
  • Đăng nhập
logo nhat.dev
  • Tin tức
  • Dịch vụ
  • Lập trình
    • ReactJS
    • React Native
    • Angular
    • VueJS
  • Hackintosh
    • Hackintosh
    • Opencore
  • Liên hệ
No Result
View All Result
nhat.dev
No Result
View All Result
Home Chia sẻ

Một vài “sự thật” về việc lập trình

Nhat Tran by Nhat Tran
29 Tháng Sáu, 2019
Một vài “sự thật” về việc lập trình
741
SHARES
2.4k
VIEWS
Chia sẻ lên FacebookChia sẻ lên Twitter

Phải nói rằng công việc của developer chúng ta là một trong những công việc bí ẩn, “nguy hiểm” nhất thế giới. Ai cũng biết một anh thợ điện thì hay leo cột điện, một anh thợ sửa ống nước thì hay vào nhà mấy chị gái để thông ống, nhưng một thằng developer thì chính xác là nó làm gì? À, nghe bảo là nó lập trình.

Thuở hàn vi, khi mới bắt đầu theo học ngành này, thậm chí là đến năm 2 đại học mình vẫn chưa biết lập trình thật sự là làm cái gì. Dẫn đến mình có rất nhiều ngộ nhận, mình tin rằng mấy đứa xung quanh mình thời điểm đó cũng thế. Vì thế hôm nay mình sẽ bật mí cho các bạn một vài sự thật về việc lập trình mà mình đã rút ra được qua vài năm lăn lộn, đặc biệt là cho các bạn mới nhé.

Có thể bạnquan tâm

Hướng dẫn bảo mật iPhone, Macbook toàn diện hơn

DISC bí kíp giao tiếp trong làm việc nhóm

5 phẩm chất tạo nên người làm sản phẩm

0. Toán học và lập trình

Mình đã nghe, đọc ở đâu đó về nhận định này từ hồi cấp 3, rằng muốn lập trình giỏi bạn cần cực kì giỏi toán. Lên đại học, trước khi học lập trình mình đã được học các môn về toán như: toán cao cấp 1, 2, đại số tuyến tính, toán rời rạc… Phải chăng chúng ta cần thật sự giỏi toán để có thể code giỏi?

Câu trả lời là: nó còn tùy. Tùy thuộc vào chuyên ngành, hướng đi mà bạn chọn.

Giả sử như bạn muốn làm game 2d, game 3d, các thể loại game liên quan đến hình ảnh nhiều chiều, chuyển động, rõ ràng bạn cần nắm các kiến thức về toán học để có thể tính toán tọa độ, khung hình cho các đối tượng trong game. Hoặc là bạn muốn làm việc thiên về nghiên cứu, các lĩnh vực như trí tuệ nhân tạo, deep learning…, rõ ràng là bạn cần kiến thức chuyên sâu về toán học để có thể giải quyết các vấn đề.

Nhưng nếu bạn đi theo hướng “bình thường”, bạn muốn làm web, làm ứng dụng di động…, thì mình có thể khẳng định rằng bạn không cần giỏi toán. Không cần giỏi toán ở đây có nghĩa là bạn không cần giỏi về nhị thức newton, tích phân mở rộng, nguyên hàm gì gì đấy mình không nhớ, nói chung là các kiến thức toán chuyên sâu. Thứ duy nhất về toán bạn cần giỏi là toán logic, dùng để phân tích, mổ xẻ vấn đề khi bạn lập trình.

Tất nhiên cũng còn tùy vào loại dự án mà bạn tham gia. Vừa rồi mình có làm một trang web giúp trẻ em học toán thông qua hình ảnh, trong đó có một số chỗ áp dụng các kiến thức về đường tròn, ellipse để vẽ ra các hình ảnh, cuối cùng mình mất cả đêm vẫn chưa thể làm xong vì mình không thể nhớ tan=sin/cos.

Thế đấy, tất cả mọi thứ đều liên quan đến chữ “tùy”, tuy nhiên, nếu bạn không tập trung vào những ngóc ngách đặc biệt của ngành lập trình thì đừng quá lo lắng về kiến thức toán học nhé.

1. Lập trình == gõ phím?

Một developer dùng phần lớn thời gian để gõ code?

Nghe có vẻ hợp lý, developer không code thì làm gì nữa? Qua đôi ba năm cày ải mình nhận ra nhận định này có vẻ không đúng lắm.

Những ngày đầu tiên mình đi làm, mình thường quan sát các anh senior xung quanh xem họ làm việc như thế nào. Lạ ở chỗ là mình thấy họ không tập trung code mà cứ ngồi vẽ vẽ, viết viết gì đấy giống như là viết văn.

Tại sao lại như vậy? Tại sao senior trình code cao lại không code nhiều? Lý do là bởi lập trình không phải là gõ phím, để lập trình hiệu quả, bạn cần dành thời gian phân tích yêu cầu, suy nghĩ hướng làm, research hướng làm hiệu quả, đôi lúc là phác họa luồng chạy của code… Viết code gần như là một trong những bước cuối cùng của quá trình lập trình.

Thế nhé, chỉ mấy đứa gà mới code như một cái máy thôi.

2. Biết nhiều ngôn ngữ, công nghệ == code giỏi?

Đây là một trong những nhận định sai lầm nhất về lập trình, các bạn mới học rất dễ ngộ nhận điều này, đặc biệt là các anh chàng mới lớn.

Ngày xưa mấy đứa bạn mình trong trường hay bàn tán về một thằng tên S: “ôi thằng S nó biết PHP, C#”, “ôi thằng S nó biết cả Nodejs”, “ôi nó lại còn biết cả Java nữa”. Cuối cùng S được gọi là “S master“. S cũng tưởng mình master thật, ra oai ghê lắm. Thằng S này ngày càng cố gắng học nhiều ngôn ngữ mới vì nó nghĩ biết nhiều ngôn ngữ đồng nghĩa với code giỏi, đồng nghĩa với master.

Lúc đấy mình cũng nghĩ giống như thằng S kia, cũng muốn được như nó lắm. Nhưng không lâu sau thì nghe bảo S vào một công ty nọ bị hành ghê lắm, nó chẳng làm được gì với đống ngôn ngữ nó học cả. Bởi vì mấy cái trong thực tế cái nào cũng phức tạp, rối rắm, S thì chỉ biết code ứng dụng CRUD (ứng dụng thêm xóa sửa). Thế là mình thôi không bắt chước thằng S master nữa.

Sau này thằng S nó nói với mình là nó nhận ra rằng, hóa ra không phải cứ biết nhiều ngôn ngữ, công nghệ thì sẽ đồng nghĩa với code giỏi. Hóa ra kĩ năng giải quyết vấn đề, phân tích chương trình, thiết kế chương trình, clean code, kinh nghiệm… mới là những vũ khí tối thượng.

3. Cần nhớ mọi thứ để có thể lập trình?

Bắt đầu từ năm 2 đại học mình bắt đầu được học một loạt các kiến thức mới. Nào là các kĩ thuật lập trình như kĩ thuật vét cạn, quay lui…, các loại giải thuật khác nhau như: search, sort… Nói chung là rất nhiều thứ cần nhớ. Vậy chúng ta có cần nhớ hết mọi thứ đã được học hay không?

Câu trả lời là không. Không ai có thể nhớ hết mọi thứ được. Mình đã từng cố gắng nhớ hết gần chục cái thuật toán sort, cuối cùng sau vài tháng mình đã quên hơn một nửa.

Ngày nay chúng ta may mắn có internet, mọi thứ đều có thể được tìm kiếm dễ dàng. Vì vậy bạn có thể sử dụng internet như một bộ nhớ ngoài để lưu trữ những thông tin ít quan trọng hơn. Chúng ta chỉ nên sử dụng hàng xịn để lưu những thông tin quan trọng nhất mà thôi.

Cái gì search cũng có thì không cần học nữa hay sao? Không, có một thứ bạn không thể search đó là kĩ năng. Kĩ năng là một trong những thứ quan trọng cần dùng não để lưu. Giả sử như bạn đã code, rèn luyện rất nhiều các thuật toán search khác nhau, như vậy là bạn đã có kĩ năng với các thuật toán search. Sau này mặc dù bạn đã quên đi cách search cụ thể cho từng thuật toán nhưng kĩ năng thì vẫn còn đó, bạn có thể dễ dàng tìm kiếm google và học lại nhanh chóng.

Để có thể lập trình hiệu quả, bạn cần hiểu, nhớ mọi thứ ở mức trừu tượng nhất. Giả sử như bạn học lập trình kết nối cơ sở dữ liệu với C#, bạn không cần nhớ cụ thể cú pháp, syntax như thế nào, cái bạn cần nhớ là cơ chế hoạt động của nó, khi nào thì nên sử dụng… Có những thứ bạn chỉ cần nhớ rằng nó có tồn tại trên đời là đủ, khi gặp các bài toán cụ thể chúng ta sẽ tìm hiểu sâu hơn về nó sau.

Tóm lại, cái bạn cần nhớ là hệ thống kiến thức, liên kết giữa các mảng kiến thức, kĩ năng(thông qua rèn luyện).

4. Kĩ năng tìm kiếm thông tin vô cùng quan trọng

Như mình nói ở trên, bạn không thể nhớ mọi thứ được. Vì vậy kĩ năng tìm kiếm thông tin là kĩ năng quan trọng mà bạn cần giỏi để có thể lập trình.

Kĩ năng tìm kiếm thông tin là gì? Là kĩ năng google, đôi khi còn là kĩ năng đi hỏi người khác sao cho không bị chửi.

Google thì cứ thế search thôi chứ cần gì kĩ năng? Không đúng, cùng 2 đứa search một vấn đề nhưng đứa có kĩ năng sẽ ra ngay, đứa không có kĩ năng có thể mất cả ngày vẫn không ra. Kĩ năng sẽ giúp bạn chọn keyword phù hợp cho từng vấn đề, đôi khi chỉ cần đúng keyword là vấn đề sẽ được giải quyết.

Ngoài ra, để có thể tìm kiếm thông tin phù hợp, nhanh chóng, bạn cần có một hệ thống kiến thức rộng lớn trong đầu, đó là những thứ mà mình đã nói chúng ta cần nhớ ở phần trên. Tưởng tượng bạn cần tìm kiếm một viên ngọc màu đen nằm sâu trong lòng đại dương. Một gã thất phu sẽ nhảy ngay ra lòng biển để tìm kiếm một cách vô vọng, người có kiến thức trong đầu sẽ biết được ngọc màu đen sẽ nằm ở Thái Bình Dương, ngọc màu đỏ sẽ nằm ở Đại Tây Dương. Vậy ai sẽ là người tìm kiếm hiệu quả hơn?

Kĩ năng tìm kiếm thông tin = Kĩ năng tìm kiếm + hệ thống kiến thức.

Kết

Bạn còn biết “sự thật” vào nữa không? Chia sẻ với mọi người nhé.

Tags: nghề lập trình
Bài viết trước

Những kho lưu trữ Github JS phổ biến nhất 2019

Bài viết sau

Một vài cách tránh merge conflict khi làm việc cùng team

Nhat Tran

Nhat Tran

Chia sẻ vài thứ hay ho bản thân tìm hiểu và tìm kiếm được đến mọi người

Bài viết sau
Một vài cách tránh merge conflict khi làm việc cùng team

Một vài cách tránh merge conflict khi làm việc cùng team

Subscribe
Notify of
guest
guest
0 Comments
Inline Feedbacks
View all comments

Recommended.

Package-lock.json là gì?

Package-lock.json là gì?

13 Tháng Tám, 2019
Hướng dẫn cài đặt file APKM trên Android

Hướng dẫn cài đặt file APKM trên Android

14 Tháng Chín, 2020

Trending.

Hướng dẫn cài macOS trên Laptop, PC 2019

Hướng dẫn cài macOS trên Laptop, PC 2019

6 Tháng Chín, 2020
Chuẩn bị kiến thức cơ bản trước khi “vọc” hackintosh

Hướng dẫn tạo bộ cài vanilla hackintosh dễ dàng nhất

6 Tháng Ba, 2020
Cách “lách” bản quyền âm thanh và hình ảnh video Youtube 2020

Cách “lách” bản quyền âm thanh và hình ảnh video Youtube 2020

2 Tháng Mười Một, 2020
Chuẩn bị kiến thức cơ bản trước khi “vọc” hackintosh

Phần cứng phù hợp với Hackintosh macOS

30 Tháng Mười Một, 2019
Chuẩn bị kiến thức cơ bản trước khi “vọc” hackintosh

Cài đặt Clover vào ổ cứng sau khi cài macOS

30 Tháng Mười Một, 2019
nhat.dev

© 2019 nhat.dev

Chia sẻ chút kiến thức, kinh nghiệm, thủ thuật mà bản thân đã tìm hiểu và đọc được với mọi người

  • About me
  • Privacy & Policy
  • Advertise
  • Contact

Theo dõi tôi

No Result
View All Result
  • Tin tức
  • Dịch vụ
  • Lập trình
    • ReactJS
    • React Native
    • Angular
    • VueJS
  • Hackintosh
    • Hackintosh
    • Opencore
  • Liên hệ

© 2019 nhat.dev

Xin chào

Sign In with Facebook
OR

Đăng nhập bằng SSO Nhatdev

Quên mật khẩu?

Create New Account!

Fill the forms below to register

All fields are required. Đăng nhập

Lấy lại mật khẩu

Vui lòng nhập tên người dùng hoặc địa chỉ email của bạn để đặt lại mật khẩu của bạn.

Đăng nhập