Thảo luận Chán code, tôi thường làm gì!

Thảo luận trong 'Bàn Trà' bắt đầu bởi Missfly82, 27/2/20.

  1. Missfly82

    Missfly82 Mầm Non

    Chán code, tôi thường làm gì!

    Chán nản là khi cuộc sống có quá nhiều bộn bề lo toan, có quá nhiều thứ phải đắn đo suy nghĩ. Ai ở lứa tuổi tôi đều còn trẻ và hãy còn non nớt lắm nhưng sâu thẳm trong mỗi con người vẫn tồn tại đâu đó sự chán nản với cuộc sống chỉ chực chờ bùng phát. Chán nản là khi bản thân không theo kịp bạn bè, là khi phải lo lắng về ngày mai, là khi thấy sự bất công của xã hội đối với bản thân mình và người khác.

    Tất cả sự xô bồ đó rồi sẽ khiến bản thân uể oải, mệt mỏi. Buổi sáng thức dậy không muốn rửa mặt, không muốn ăn sáng và chả buồn nói chuyện với ai, tự nhốt mình trong căn phòng với bốn bức tường khô khan, đơ cứng. Những ngày tháng đó rồi sẽ qua nhưng hiện ngay lúc này nó khiến con người ta mất đi kha khá thời gian, làm giảm sút năng suất công việc, chất lượng sống.

    Năm vừa rồi tôi 22 tuổi, làm việc tại một công ty lập trình website, hàng ngày ngồi làm 8-9 tiếng tại một chỗ, không có nơi giải trí. Tối đến ăn vội miếng cơm rồi lại ngồi học lập trình và tiếng Anh đến khuya, rồi sáng tranh thủ dậy sớm code tiếp mấy chức năng còn dang dở lúc tối trước khi đi làm. Có những lúc gặp rắc rối trong công việc, về đến nhà dù mệt lả người vẫn phải cố gắng ngồi học với mong muốn là sau này công việc sẽ tốt hơn. Đến khi đi ngủ, lúc nằm xuống là lưng đau nhức (tôi bị đau lưng khi ngồi lâu) nên ngủ một mạch tới sáng không trở mình, đến giấc mơ cũng không thèm xem. Nhưng sau 1 năm quay cuồng đó, đến bây giờ tôi đã không còn giữ được phong độ đó nữa – dù mỗi ngày đều học thêm được chút ít kiến thức.

    Sau khoảng vài tuần chán nản, tôi đã quyết định thay đổi không để nó đè bẹp. Thật sự có rất nhiều cách vượt qua nỗi buồn nhưng không phải cách nào cũng phù hợp với bạn, riêng tôi thì đã áp dụng và rút ra một vài sự việc hay ho sau.

    Đôi khi không nên quá áp đặt bản thân mình

    Lúc trước tôi đã từng áp đặt bản thân mình và đem so sánh cuộc sống của mình và người khác. Đó là một sai lầm khá cơ bản vì suy cho cùng hướng đến điều hay, điều tốt thì không có gì sai trái, nhưng một lúc nào đó ta nên dừng lại, ngồi xuống suy nghĩ và hài lòng với chính bản thân mình, với chính những gì mình đang có. Khi chán nản về điều đó, tôi thường quên đi tất cả những gì ngoài tầm với của mình, tôi sẽ biết ơn những gì đang nắm giữ và luôn trân trọng nó. Hạnh phúc thật sự chỉ là một lựa chọn, và thay vì chọn cách ủ ê, sầu muộn tôi sẽ chọn làm những điều hạnh phúc cho riêng mình.

    Hãy đi dù không biết sẽ đi đâu

    Thay vì ngồi trong phòng như xưa, giờ đây tôi lại thích lang thang mỗi khi buồn. Có quá nhiều điều hay ho ngoài đường mà mình chưa biết, chưa từng trải nghiệm. Cảm giác lang bạt bằng đôi chân của mình qua những con đường, tuyến phố hoặc đơn giản là gặp gỡ và trò chuyện với ai đó xa lạ sẽ mang niềm vui đến xóa nhòa đi những gì u uất trong lòng hiện tại. Cái cảm giác trò chuyện với người lạ vừa mới mẻ, nâng niu, trân trọng… thật là thú vị lắm, và tôi biết hầu như ít ai có can đảm để bắt chuyện với người khác mà chưa từng quen biết trước. Và may mắn là tôi đã dám nhiều lần rồi,

    Không làm những gì không thấy hứng thú

    Một khi đã không thích điều gì, tốt nhất đừng nên tiếp tục làm nó trong tâm trạng chán nản. Có 2 hệ quả nó sẽ mang lại, một là nó sẽ khiến tâm trạng đó ngày càng tồi tệ và trầm trọng hơn, hai là kết quả của công việc đó sẽ không tốt bằng việc làm trong lúc phấn chấn vui vẻ. Một tinh thần thoải mái thì mới đem lại những dòng code chất lượng và đẹp đẽ.


    Nghe một bản nhạc vui vẻ, sau đó code tiếp

    Cách này tôi hay dùng nhất nếu không muốn gián đoạn công việc đang làm, nó khiến tâm trí thoải mái và tăng thêm động lực. Thể loại nhạc nên nghe là thể loại mang lại không khí sôi động một chút. Đừng dại mở trữ tình, cải lương, cải thảo, cải bắp, ru ngủ không khéo sập luôn tinh thần.

    Một số bài hát hay nếu bạn thích:

    • Đường đến ngày vinh quang – Nần chập
    • Vì tôi còn sống – Tiên nữ tóc ngắn
    • Niềm tin khát khao – Minh béo, lộn Minh Quân
    • Titanium – Sia
    • Hey Brother – Avicii
    • Magic – Rude
    • Try – P!nk bánh bèo … các bạn có thể giúp tôi thêm vào
    Đọc sách, đọc bài viết, đọc tất cả

    Thay vì cố gắng cắm đầu code trong khi biết rõ chất lượng nó sẽ không tốt, tại sao ta không bỏ nó qua một bên và đọc nốt Vui lòng đăng nhập hoặc đăng ký để xem link mình yêu thích. Ngày xưa, tôi chúa ghét sách bởi vì không thể cầm nổi nó trong 30 phút mà không ngáp ngắn ngáp dài, nước mắt nước mũi chảy dàn dụa. Giờ đây tự nhiên thói quen đọc sách lại chiếm của tôi khá nhiều thời gian, tôi đam mê nó vô cùng, đủ các thể loại, đủ các tác giả.

    Thay vì dành hết thời gian cho facebook với những câu chuyện nhạt nhẽo, tôi xén bớt một phần và ưu tiên cho medium và quora. Có khá nhiều chủ đề, câu hỏi hay ho mà mọi người đặt ra trên khắp thế giới và đặc biệt nữa là nó bằng tiếng Anh 100%, nó rất không hấp dẫn bằng facebook nhưng tôi vẫn chết mê đi được, trời ạ.

    ————————

    Chán nản là một tình trạng tâm lý, nếu ai đó nói cả đời không có cảm giác chán nản thì đó là lời nói dối. Chán nản sẽ luôn luôn đi với cảm xúc vui vẻ, và cả hai sẽ mãi là đối trọng của nhau khiến cuộc sống thêm phần thú vị. Dù có hại nhưng nó sẽ khiến cho bạn mạnh mẽ hơn sau mỗi lần vượt qua. Và thêm nữa, hãy luôn nhớ “Ai cũng sẽ chán một lần trong đời, quan trọng là cách ta vượt qua nó”.
     
    Dxom0 and The Pain like this.
  2. The Pain

    The Pain Mầm non

    Năm nay mình 25 tuổi. Mình có ý định đổi ngành sang đi học code, ngày mai là buổi học đầu tiên. Cảm ơn bạn đã chia sẻ kinh nghiệm !
     
    Missfly82 thích bài này.
  3. nhat1395

    nhat1395 Lớp 5

    Chán code mình thường chuyển sang ...làm ebook :))) vừa đọc sách vừa cảm thấy có việc để làm :<
     
    Missfly82 thích bài này.
  4. Caruri Tlkd

    Caruri Tlkd Sinh viên năm II

    Làm ebook cũng là một hình thức code: bằng html, css, phức tạp hơn thì python, javascript...
     
    Missfly82, vanthach and nhat1395 like this.
  5. babylon

    babylon Lớp 3

    Chán code Tui học Phong thuỷ ! Lâu lâu dòm lại vẫn thèm ...
     
    Missfly82 thích bài này.
  6. phuga89tb

    phuga89tb Mầm non

    Chán code từ năm ra trường 2012. Làm trái nghành đến nay 30t rồi. Lúc chưa lấy vợ thì chơi game, yêu đương. Lấy rồi thì tgian cho con và nghịch dt dù ít đi, Không chăm chỉ như bạn. Dù thỉnh thoảng nghĩ lại tự trách mình lãng phí tgian quá khứ và htai, nhưng vẫn ko thay đổi dc. Thói quen tốt có lẽ là vẫn vào tve xem có sách nào hay thì đọc. Đang đọc "suy ngẫm hàng ngày" thấy hợp ý vs mình. Thu nhập htai của mình chỉ 8tr (ở tỉnh lẻ) nhưng cảm thấy ko lo lắng chút nào về tiền bạc. Ko thấy buồn phiền vì kém ng ta, thấy thoải mái vì hơn ngta ở cái vô lo. Vì sau khi đọc nhiều sách thấy là:
    - cảm xúc con ng luôn thay đổi, cái sướng ta đang trải nghiệm đây r sẽ qua, ta lại phải tìm cách đạt dc nó. Và như vậy thật vô nghĩa.
    - cuộc đời vốn dĩ chả có ý nghĩa gì. Dưới sự ảnh hưởng của môi trường tiếp xúc hàng ngày, mỗi ng tự tưởng tượng cho mình 1 hoặc nhiều ý nghĩa r theo đuổi đến hết tuổi thọ của mình.
    -cái chết ko đáng sợ. Nếu ngày mai t chết, t cũng ko luyến tiếc cd này.
     
    Missfly82, nero01 and luckycomet like this.
  7. vanthach

    vanthach Lớp 2

    Cho em cười 1 cái nhé
     
    Missfly82 thích bài này.
  8. memomii

    memomii Lớp 1

    Mình không phải dân code nhưng xũng làm trong tech-field, nói chung là thấy hơi chán vì nhìn máy nhiều nhưng có cái hay là thoải mái. Sắp tới mình định học python
     
    Missfly82 thích bài này.
  9. giinny9x

    giinny9x Mầm non

    Ý nghĩa cuộc sống thì chủ quan, mỗi người mỗi kiểu (thường là cảm xúc cá nhân áp đặt lên người khác).
    Còn mục đích sống thì khác(người ta hay lẫn 2 khái niệm này). Tuy tự cuộc sống ko có mục đích nhưng như sách dạy thì có mục đích sống vẫn hơn là vô hướng. Vì có cái này thì cuộc sống sẽ dễ dàng, có tổ chức hơn, tạo ra những mục tiêu khiến người ta phải vượt qua giới hạn bản thân.

    Trách nhiệm là làm những gì ko muốn làm, ko làm những gì ko thấy hứng thú là chưa trưởng thành thôi. Mà cảm xúc hứng thú nó cũng có tính tạm thời, nó hoàn toàn có thể thay đổi trong tương lai, nêú dựa vào nó thì khó đi đến cùng của vấn đề được (ví dụ hết cảm xúc thì ko làm việc đó nữa).
    Thấy thay vì "do what you love" thì có thể "love what you do" hoặc là chờ cho khi cảm giác chán code qua đi rồi quay lại làm việc.
     
    Missfly82 and The Pain like this.
  10. 4DHN

    4DHN Tiêu Dao

    Một đề tài quá vô thưởng vô phạt. Nói tóm lại trừ khi là công việc bắt buộc còn việc thay đổi một hoạt động nhàm chán nào đó bằng một hoạt động "mới"(*), và thú vị hơn là bình thường, có gì đáng bàn nhỉ?

    (*) Cái "mới" này có thể trở nên nhàm chán thì ta lại tìm cái "mới" khác thôi.
     
    Missfly82 thích bài này.
  11. Missfly82

    Missfly82 Mầm Non

    Kinh nghiệm lập trình, cảnh giới lập trình

    Phần một. Kinh nghiệm
    Nói tới kinh nghiệm thì mỗi người có những kinh nghiệm khác nhau. Những người giỏi thật sự thì có lẽ họ ít chia sẻ kinh nghiệm tối cao (vì đó là cái làm nên giá trị riêng mỗi người) mà thường họ chia sẻ những kinh nghiệm phổ biến. Bản thân tôi cũng vậy, nhưng trong bài viết này tôi chia sẻ những quan niệm hơi khác người một chút.
    1. Nội lực trong ngành CNTT
    Để học tốt trong ngành CNTT, bạn phải có đủ 5 yếu cốt căn bản cốt lõi sau
    1. Tư duy.
    2. Kỹ năng IT (biết nhiều phần mềm, cài đặt máy tính, dual-boot, diệt virus bằng tay, v.v).
    3. Kiến thức chuyên môn (lập trình, Toán học, Vật lý,…).
    4. Đam mê.
    5. Ngoại ngữ (tiếng Anh).
    5 yếu tố trên gộp lại thành 1 thứ gọi là “cốt cách”, “tư chất”. Điều này giải thích một chuyện mà bạn thường hay thấy: có vài bạn học lập trình suốt 2 năm liền mà trình độ không bằng được vài bạn học lập trình trong…vài tháng. Đơn giản là sự khác nhau ở “tư chất” và sự cần cù kiên trì mỗi người.
    Để giải thích 5 yếu tố trên vừa dễ mà vừa khó. Dễ là vì bạn nào đọc cũng hiểu cả. Khó là vì để cho bạn hiểu đúng được ý nghĩa sâu xa thì không phải đơn giản.
    [​IMG]

    Bạn phải phát triển đồng đều 5 yếu tố “tư chất” ở trên. Mở rộng ra thì bạn không chỉ học lập trình mà còn phải học về Toán, Vật lý, biết nhiều về xã hội…
    Bạn có thể hiểu như vầy: giả sử 4 yếu tố đầu tiên bạn rất giỏi, nhưng bạn không giỏi yếu tố cuối cùng (tiếng Anh). Vì vậy mà bạn không thể leo lên mức cảnh giới thượng thừa mà mãi mãi bị giới hạn ở 1 mức nào đó. Bạn chỉ đạt cảnh giới cao khi nội lực đầy đủ. Lấy hình trên minh họa chẳng hạn, với “minimum” là ngôn ngữ tiếng Anh.
    Lưu ý: 5 yếu tố trên đây chỉ là “tư chất”, muốn phát huy được “tư chất” để đạt được thành công thì bạn phải rèn luyện, kiên trì và cần có nhiều yếu tố khác (thậm chí là cả may mắn). Nếu rèn luyện tốt tư chất thì bạn có thể học giỏi bất cứ lĩnh vực nào trong ngành CNTT chứ không phải riêng về lập trình.
    2. Copy code
    Thường thì đa số các bài viết chia sẻ kinh nghiệm họ đều nói rằng không được phép copy code của người khác, copy code là ngu, là gà, copy code là vô đạo đức, v.v. Dĩ nhiên tôi đồng ý hoàn toàn, vì “copy code” đối với đa số người là “lấy code của người khác mang về làm bài làm của mình”.
    Còn với tôi, thì quan niệm “copy code” đúng với ý nghĩa thuần túy của nó: “copy một đoạn code từ tài liệu, sau đó dán vào bài của mình, chạy thử”.
    Vậy thì điều đó có gì khác nhau ? Rất khác. Khi tôi tìm kiếm tài liệu, chạy thử code, để tiếp thu nhanh nhất thì tôi phải copy code thấy được kết quả ngay, dễ dàng hình dung ra vấn đề. Điều này rõ ràng tốt hơn việc “gõ code từ từ (không copy) để hiểu từng câu lệnh, gõ quá trời quá đất, chạy thử, ôi mẹ ơi 69 lỗi, thiếu thư viện tè le, biết vậy khỏi gõ code chi cho mệt người tốn sức”.
    Khi tôi “copy code” thuần túy, tôi sẽ thấy ngay kết quả, điều đó tạo động lực và cảm hứng, từ đó bắt đầu chạy debug từ từ, dần dần hình dung ra vấn đề và hiểu được, sử dụng được. Đó là 1 trong những bí kíp tối thượng của tôi khi học lập trình.
    3. Nhìn xa trông rộng
    Nghe có vẻ khá là hoa mỹ nhưng thực tế là vậy.
    Khi làm một đồ án (bài tập siêu lớn), các bạn của tôi thường hay nhào vào code ngay, code được chức năng nào hay chức năng đó để kiếm điểm. Còn tôi thì không.
    Tôi dành đến gần 50% thời gian làm đồ án cho sự chuẩn bị, chuẩn bị về mọi thứ. Tôi học những công nghệ liên quan đồ án, tìm hiểu kĩ các hàm, code thử vài tính năng nho nhỏ để hiểu. Sau đó tôi bắt đầu lên ý tưởng, thiết kế hệ thống class (phương pháp lập trình Hướng đối tượng). Tôi phải thiết kế làm sao mà phải mở rộng được tối đa các chức năng. Ví dụ đồ án yêu cầu chức năng vẽ hình cơ bản, nhưng tôi thiết kế làm sao mà có thể dễ dàng mở rộng ra thành “vẽ hình phức tạp, vẽ hình mà chèn thêm được chữ”.
    Giai đoạn đầu rất mệt, phải liên tục điều chỉnh cho hoàn thiện, nhưng bù lại khi cái lõi đã xong, thì giờ đến lúc tôi sướng, bạn tôi khổ. Bạn tôi khổ vì nhào vào code liền, giờ code như 1 đống rác đọc chả hiểu gì (xin lỗi, dùng từ hơi xúc phạm), vì code miễn sao ra đúng chức năng là ok nên “làm được trước đã rồi tính tiếp”. Và vì vậy bạn tôi thường sẽ bị bế tắc về sau. Còn tôi thì giai đoạn sau rất thoải mái, mở rộng tính năng tối đa, giựt điểm về ngon lành. Tôi cũng rất tự hào vì điểm đồ án #1 của tôi là cao nhất lớp (tiến độ 1, còn tiến độ còn lại thầy chưa chấm chưa biết).
    Mấu chốt quan trọng ở đây là phải biết nhìn xa trông rộng, và nền tảng đó là cấu trúc dữ liệu và giải thuật, phương pháp lập trình Hướng đối tượng, tư duy Hướng đối tượng. Dùng các mẫu thiết kế Hướng đối tượng làm cho code của mình hay hơn, chuyên nghiệp hơn.
    Tất nhiên, còn nhiều kinh nghiệm khác, nhưng đó là những giá trị không-miễn-phí :).
    Phần hai. Cảnh giới lập trình
    Nhằm đơn giản hóa vấn đề, mọi code minh họa trong bài sử dụng ngôn ngữ C/C++.
    Cảnh giới 1. Nhập môn (beginner)
    Mới bước vào ngành CNTT và lập trình thì ai ai cũng phải “nhập môn”, làm quen. Vì vậy mà nhiều khi code rất là trẻ trâu. Code đọc khó hiểu, tệ hơn là thụt dòng loạn xạ không có quy tắc.
    [​IMG]

    Code minh họa
    Cảnh giới 2. Biết sử dụng hàm, thư viện chuẩn có sẵn
    Có một điều trớ trêu thay là dù bạn học các ngành về khoa học kĩ thuật hay là về khoa học xã hội, thì vẫn len lỏi đâu đây một yếu tố gọi là “học thuộc lòng”.
    Tất nhiên, với các ngành khoa học xã hội thì điều đó dễ dàng nhận ra, môn Văn chẳng hạn, học bài phát điên luôn. Còn với khoa học kĩ thuật thì sao ? Liệu có học bài không ?
    Với quan điểm của tôi, một trong những bước đệm để bạn giỏi lên là phải học thuộc càng nhiều hàm, càng nhiều thư viện càng tốt, giống như học từ vựng tiếng Anh ấy. Điều này đôi khi nghe có vẻ phi lý, vì sao ta lại học thuộc lòng ?
    Đơn giản vì ta đang muốn giải quyết nhanh một vấn đề, sao ta lại tốn công sức viết thủ công các hàm trong khi thư viện đã có sẵn, gọi 1 phát là xong ? Ta sẽ tiết kiệm được thời gian, công sức để tập trung vào vấn đề chính nhiều hơn. Nhiều khi mình lo viết hàm phụ mà hàm phụ bị lỗi, gây rối, mất tập trung, xuống tinh thần.
    Ghi chú: chỉ khi bạn vững thuật toán cơ bản thì mới xài hàm để tiết kiệm thời gian.

    Lấy ví dụ minh họa: kiểm tra xem một số nguyên dương có phải số đối xứng hay không. Ví dụ như số 121 là số đối xứng, số 123 thì không phải, số 9009 là số đối xứng, v.v
    [​IMG]

    Cảnh giới 3. Tinh thông hàm, thư viện, nguyên lý
    “Tinh thông” hoàn toàn khác với chuyện “biết biết một chút”.
    [​IMG]
    Khi bạn hiểu rõ được cú pháp các hàm xử lý, bạn sẽ dễ dàng ứng dụng nó để xử lý bài toán tốt nhất. Lấy lại ví dụ “xác định số đối xứng”. Khi bạn chưa hiểu rõ hàm strcmp, strrev, strcpy thì bạn chỉ hiểu đơn giản là nó giúp mình làm cái này, cái kia. Nhưng khi bạn hiểu rõ được cú pháp của hàm đó, nguyên lý xử lý của hàm đó, thì bạn có thể áp dụng để làm cho code mượt mà hay hơn như hình ở trên.
    Cảnh giới 4. Cấu trúc dữ liệu và thuật toán
    Đây là một lợi thế của những bạn từng học “đội tuyển Tin học” đi thi Học sinh giỏi cấp tỉnh, thành phố/quốc gia/Olympic. Bạn sẽ ứng dụng những cấu trúc dữ liệu & thuật toán để giải quyết một vấn đề ở mức độ tối ưu (tối ưu về tốc độ là chính).
    Có những thứ ở cuộc sống rất là trừu tượng, khi mang nó vào biểu diễn trong lập trình thì phải nói là 1 thảm họa khủng khiếp, vì bình thường ta chỉ khai báo các biến, sử dụng các hàm có sẵn để xài, vậy thôi.
    Ví dụ: hệ thống bản đồ. Làm sao mà các lập trình viên có thể mô phỏng lại bản đồ trên máy tính, và có thể giúp ta tìm đường đi ngắn nhất giữa 2 địa điểm nào đó ? Google Maps là 1 ví dụ rất điển hình. Nếu ta chỉ khai báo biến, sử dụng các hàm có sẵn như nhập số, tách chuỗi, ghép chuỗi, v.v thì liệu có thể làm được điều này ?
    Nhờ những cấu trúc, dữ liệu cơ bản như số nguyên, số thực, mảng, v.v người ta kết nối chúng, tập hợp lại (trong struct, class) rồi áp dụng một quy tắc hoạt động đặc biệt, vậy là có thể hình thành nên 1 cấu trúc dữ liệu. Từ đó giúp ta giải quyết vấn đề cực kì hay và ngọt, mà lại hiệu quả nữa.
    Đi kèm với cấu trúc dữ liệu, đó là thuật toán. Cấu trúc dữ liệu quyết định thuật toán. Thuật toán giúp bạn tư duy tốt hơn. Bạn cần phải luyện tập nhiều với thuật toán.
    [​IMG]

    Cấu trúc dữ liệu thường hay gặp: Stack
    Vì vậy nên, để đạt đến một cảnh giới cao hơn, nhìn mọi vật, mọi sự việc khác người bình thường, thì nhất định bạn phải tinh thông cấu trúc dữ liệu và thuật toán [​IMG]

    Cảnh giới 5. Phương pháp lập trình Hướng đối tượng
    Cảnh giới được nâng lên tối thượng hay không cũng là nhờ phương pháp lập trình Hướng đối tượng.
    [​IMG]

    Tư duy cũ: lập trình hướng thủ tục/hàm (hàm là trung tâm của việc lập trình)
    [​IMG]

    Minh họa tư duy lập trình với hàm: hàm TinhTong
    [​IMG]

    Tư duy Hướng đối tượng: đối tượng là trung tâm của việc lập trình, hàm chỉ là phụ
    [​IMG]

    Minh họa tư duy Hướng đối tượng
    Khi có tư duy lập trình Hướng đối tượng, bạn sẽ nhìn mọi vật, mọi sự việc lên 1 tầm cao mới, khác xa với con mắt của người bình thường (giống như cảnh giới trước đó á).
    Phương pháp lập trình Hướng đối tượng (PP LT HĐT) giúp bạn tiết kiệm thời gian, công sức, tái sử dụng code, mở rộng phần mềm. Nếu áp dụng tốt phương pháp lập trình HĐT và cấu trúc dữ liệu/thuật toán thì bạn có thể nói là rất vững cơ bản rồi đó [​IMG]
    P/S: những thứ bạn học PP LT HĐT từ nhà trường, hay là từ video dạy học trên mạng đa số đều rất là tầm thường (nói hơi xúc phạm tí nhưng thực tế là vậy). Bạn đừng nghĩ rằng chỉ học mỗi hàm thành viên (phương thức), kế thừa, rồi đa hình, virtual này nọ thì đã gọi là học xong, nhưng thứ đó đều rất cơ bản. Những cảnh giới cao ở PP LT HĐT còn rất nhiều, cố gắng nhìn lên trên và áp dụng vào những project lớn thì mới nâng tầm được.
    Cảnh giới 6. Engine, framework, thư viện, đa nền tảng
    Khi học, bạn học từ dưới đáy lên cao thì mới có thể đạt được cảnh giới. Khi bạn học ở trên rồi bạn đào sâu xuống dưới thì thường rất khó và gần như không thể.
    5 cảnh giới trước là bạn đang ở đáy, và đến cảnh giới này là bạn bắt đầu học lên mức “ứng dụng thực tế”. Bạn sử dụng các engine, framework, thư viện có sẵn để làm nên 1 chương trình hoàn thiện, có giao diện đàng hoàng, tung ra ngoài thị trường. Bạn có thể va chạm nhiều với MVC, MVVM, XML, database, Windows Form, WPF, Java Swing, v.v
    Tưởng tượng như 5 cảnh giới trước là bạn luyện nội công vững vàng, thì ở cảnh giới này bạn học ngoại công để thể hiện ra ngoài. Khi có nội công vững, ngoại công tốt thì thiên hạ nhìn vào biết bạn là cao thủ, thiên hạ khiếp sợ.


    Chương trình vẽ MyPaint – niềm tự hào của mình giúp mình đạt điểm cao.





    Game bắn máy bay – Vui lòng đăng nhập hoặc đăng ký để xem link
    Còn với những bạn chưa có nội công tốt mà đã lo vội thể hiện thì thật là thảm họa. Ví dụ như có những bạn lo làm game Flappy Bird, bạn dễ dàng làm được game này nhưng chỉ là phần đồ họa bên ngoài. Chỉ khi bạn học Vật lý, hiểu được công thức rơi tự do (của con chim) thì bạn mới mô phỏng được chính xác chim đang bay, đó là nội công đó bạn. Hay hơn nữa là bạn lập trình trí tuệ nhân tạo cho con chim tự bay, né các ống cống, đây mới gọi là giỏi.
    Tưởng tượng: một người chưa có nội lực, nhưng mà được học chút võ công bên ngoài (ngoại công), khi múa võ sẽ làm cho nhiều kẻ sĩ sợ hãi, nhưng mà khi gặp cao thủ chưởng 1 phát là bẹp dí luôn. Còn nếu một người có nội lực mà chưa có ngoại công, lỡ bị cao thủ chưởng thì có thể “ráng chịu đựng đi gặp thầy thuốc chữa trị”. Có nội lực mà còn thêm ngoại công pro thì thôi khỏi nói rồi.
    Một số bạn học sâu thì lại có quan niệm khác. Các bạn học sâu thì đào xuống phía dưới chớ không lên trên, bạn sử dụng các thư viện xử lý thread, xử lý va chạm Vật lý chẳng hạn. Đó cũng là một điều tốt. Xa hơn nữa là bạn tính toán chuyện đa nền tảng. Làm sao bạn viết code 1 lần mà biên dịch được trên nhiều nền tảng Windows, Android, iOS, Linux,… (với ngôn ngữ C/C++ chẳng hạn) ???
    Cơ bản nhất là sử dụng macro. Sau đây tôi sẽ minh họa khi bạn đạt cảnh giới macro. Tôi sẽ lấy lại ví dụ về việc “nhập vào một số nguyên dương, kiểm tra xem đó là số đối xứng hay không”.
    [​IMG]

    Sử dụng macro trong tiền xử lý (preprocessor) và tùy biến code
    [​IMG]

    Nâng cấp thêm 1 chút
    Ở cảnh giới này thì đồng thời bạn đã biết sử dụng các thư viện bên ngoài, biết cách link thư viện với project, biết tạo DLL, LIB và sử dụng chúng. Thường bạn sẽ chìm đắm rất lâu trong cảnh giới này vì ham mê thể hiện và học quá nhiều thứ =))
    Cảnh giới 7. Phong cách lập trình
    Lên đến cảnh giới này, bạn bắt đầu chăm chú cho code mình được đẹp hơn, ưu việt hơn, dễ đọc hơn. Tưởng tượng: bạn viết 1 đống code cả ngàn dòng rất là cao siêu, sau 1 năm bạn đọc lại code mình bạn còn hiểu không ?
    Khoảng trắng giữa các thành phần là quan trọng. Bạn cần tách ra rõ ra phần nào ra phần đó. Ví dụ bạn khai báo biến, sau đó nhập dữ liệu, sau đó xử lý, và xuất ra kết quả. Vậy thì: nên có thêm khoảng trắng giữa 4 thành phần trên.
    Đó là chưa kể có cách viết code như sau:
    Cách 1: if (x == 0) In_ra_dòng_chữ(“Hello”);


    Cách 2: if (0 == x) In_ra_dòng_chữ(“Hello”);
    Câu hỏi: liệu có sự khác biệt nào giữa 2 đoạn code trên không ?
    Xét về mặt vật lý thì câu trả lời là KHÔNG, đều giống như nhau hoàn toàn. Xét về mặt tư duy: có 1 sự khác biệt rất lớn về đẳng cấp. Vì sao vậy ?
    Giả sử ta quên đi 1 dấu ‘=’ trong biểu thức ở lệnh if.
    Với cách 1 ta có thể nhầm lẫn if (x = 0) (thiếu đi 1 dấu ‘=’). Và code vẫn hợp lệ với C/C++, vì đó là việc “gán x = 0” nằm bên trong lệnh if, nhưng nó mang 1 ý nghĩa khác hoàn toàn và dẫn đến code sai.
    Với cách 2 thì if (0 = x) là câu lệnh vô lý, làm sao mà hằng số gán giá trị được ? IDE sẽ gạch đỏ và báo lỗi ngay cho ta biết ===> “Code tự định nghĩa, tự né tránh lỗi vô lý”.
    Một vấn đề nữa đó là vấn đề đặt tên cho class/truct, tên hàm, tên biến, v.v (mặc định ta bàn tới tên biến cho dễ hiểu). Bạn sẽ phải mất nhiều thời gian để đặt tên biến sao cho hay và đúng quy tắc, dễ nhớ. Chỉ có những cao thủ họ mới hiểu được chuyện này. Khi bạn học cơ bản thì bạn chỉ quan tâm “tạo ra biến để xài” chứ ít quan tâm “tên biến như thế nào”. Đơn giản thôi, code vài dòng thì nhìn biến a, biến c, biến x biến y dễ dàng hiểu được. Còn code 10000 dòng thì nhìn vào x, y, z xem có hiểu nó là gì không ?
    Cảnh giới 8. Hacking/cracking
    Cảnh giới này dành cho những bạn nào thích học sâu về hệ thống bên dưới, có thể sâu đến mức nghiên cứu về hợp ngữ (asm).
    Bạn sẽ học với Windows API, shell (Windows). Với Linux bạn có thể tìm hiểu về system calls, kernel, shell, v.v Tôi không xài Linux nhiều nên chỉ chém vậy thôi.
    [​IMG]

    Chương trình “SimpleGame”: tính tổng 2 số, nhập tổng đúng thì tăng level.
    [​IMG]

    Minh họa công cụ “SuperPointer” giúp bạn hack game đơn giản. SuperPointer là một class nhỏ được lập trình bởi tôi – Nguyễn Trung Thành (abcxyz tcIT)
    2 hình trên là minh họa việc sử dụng Windows API để hack 1 game nho nhỏ. Bạn sẽ được demo thử công cụ “SuperPointer” của tôi khi học khóa học “Kỹ thuật lập trình & PP lập trình Hướng đối tượng cơ bản” của tôi (PR xíu, hihi).
    Ở cảnh giới này, bạn sẽ đi rất sâu về bên dưới, hiểu rõ đươc cơ chế hoạt động của hệ điều hành, ví dụ bạn tiêm DLL, ghi đè dữ liệu lên không gian bộ nhớ của tiến trình để hack, viết ra [virus] keylog, trojan, backdoor; hoặc bạn có thể nghiên cứu về cơ chế hook, message để từ đó mô phỏng lại quá trình test phần mềm tự động (test automation), v.v
    Cảnh giới 9. Vô chiêu thắng hữu chiêu
    Đến cảnh giới này thì có thể nói bạn đã bước chân đến mức master rồi.
    Ở cảnh giới này thì tôi đoán là nhìn code cũng chạy được code trong đầu, khỏi cần chạy trên IDE luôn haha. Bạn có thể tự viết thư viện riêng cho mình mà thậm chí còn hay hơn những thư viện bên ngoài.
    Nói vậy thôi, chớ tôi nghĩ rằng khi đạt đến mức độ này thì thường bạn sẽ đi nghiên cứu khoa học và công nghệ, về Big Data, Data Mining, Machine Learning, hay là Virtual Reality, v.v
    Và dĩ nhiên còn nhiều cảnh giới cao hơn, tầm mắt của tôi chỉ đạt tới mức này thôi.
    ========================================================
    Ghi chú: trong nhà trường, bạn học theo hướng dẫn thầy cô thì cùng lắm bạn chỉ học được một chút ở mỗi cảnh giới chứ bạn chưa thật sự tinh thông. Chỉ có sự tự học mới đưa bạn được tới đỉnh cao thôi :).
    Một điều quan trọng nữa là: – Nếu bạn chỉ biết ở mỗi cảnh giới một chút chút, thì tương đương bạn vẫn là con số 0 (biết 10 ngôn ngữ lập trình nhưng ở mỗi ngôn ngữ chỉ viết được chương trình Hello World). – Nếu bạn tinh thông đầy đủ mỗi cảnh giới, thì bạn vẫn có thể đạt đỉnh cao (chỉ biết 1, 2 ngôn ngữ lập trình nhưng tạo ra được sản phẩm hay). ===> Nếu đã xác định mình đã đam mê, hãy học tới nơi tới chốn, học cho kĩ cho sâu, phóng 1 mũi tên tựa như lao đến được đích cuối cùng.
    ========================================================
    Bài này được viết với quan niệm của 1 junior(er), nên mang tính chủ quan cao. Trong quá trình tiếp xúc, giao lưu, đào tạo với nhiều học sinh, sinh viên, cao thủ khắp cả nước thì tôi rút trích lại và chia sẻ cho các bạn.
    P/S: junior(er) đối với tôi là kiến thức chuyên môn CNTT, kỹ năng IT và lập trình ở mức độ “biết nhiều hơn beginner, có khả năng làm ra sản phẩm ở mức độ cơ bản”, tôi vẫn chưa đạt cảnh giới của 1 senior, vẫn còn nhiều điều phải học hỏi từ nhiều cao thủ ẩn danh.
     
    The Pain and nhat1395 like this.
  12. inno14

    inno14 Lớp 7

    Hihi, em chưa bao giờ chán code, mỗi khi chán chán là chỉ có code mới làm em mau hết chán :D
    PS: hiện tại em code ngày phải tầm 10 tiếng, vẫn cứ phải tranh thủ code trong đầu khi buộc phải rời khỏi máy :D
    Khoe với anh Ca tí cho zui, hihi, code của em vừa lọt vào list của tháng
    chrome_468rIh36pb.png
     
    Chỉnh sửa cuối: 29/2/20

Chia sẻ trang này