[Hướng nghiệp] Nên học lập trình ngôn ngữ nào, mảng nào?

Thảo luận trong 'Thư giãn' bắt đầu bởi living2nd, 27/8/19.

  1. living2nd

    living2nd ✣✣✣ Xiaolonista✣✣✣ CHAMPION ✡ Shine Wizard ✡ Lão Làng GVN

    Tham gia ngày:
    8/7/11
    Bài viết:
    13,850
    Nơi ở:
    Unknown
    Học 2 môn đó cùng với tool nào vậy bạn, mình tra thì thấy mysql browser. Mà học về csdl nên kèm theo những môn nào khác cũng như hướng phát triển nghề nghiệp ra sao vậy bạn?
     
  2. MegaAngel

    MegaAngel C O N T R A Lão Làng GVN

    Tham gia ngày:
    2/10/05
    Bài viết:
    1,782
    Cả 2 cái nó đều là relational database management system mà, 1 cái của microsoft còn 1 cái open source thôi. Bạn cài xampp về là có MySQL rồi. Còn về csdl hay thuật toán, OOP v..v thì nó là cơ bản rồi, bạn cần phải học và làm để biết mình giỏi gì, mong muốn gì và muốn đi theo cái gì tiếp.
    Vì ngành này mà đào sâu thì nó cũng có quá nhiều nhánh (làm nhúng hay là data analysis cho IoT, back end, front end, dev ops, ... ) phải biết bản thân muốn gì thì lúc gặp tường cao mới có động lực trèo để vượt qua được. Sau mỗi giai đoạn thì bạn nhìn lại xem skill của mình có những gì và xem thị trường những trend đang lên như thế nào rồi mò mẫm, làm thử xong xác định skill mình cần tiếp theo để học. Chứ vừa vào chạy theo nhu cầu hiện tại thì chạy không kịp có thể nản, dễ bị đào thải như mấy ông làm 3-4 năm rồi bảo ngành này nhu cầu hết rồi hay than tao giỏi nhưng không gặp thời.
     
  3. bdt_td

    bdt_td C O N T R A

    Tham gia ngày:
    30/4/07
    Bài viết:
    1,980
    Học thuật toán trước nhé. Lên hackerrank mà train.

    Học xong rồi thấy ngôn ngữ framework chỉ là phù du
     
    buonnguquaday thích bài này.
  4. Minamoto_Shizuka

    Minamoto_Shizuka The Warrior of Light Lão Làng GVN

    Tham gia ngày:
    24/10/09
    Bài viết:
    2,424
    Sai nhé.
    Dù nắm rõ thuật toán thì chỉ biết nhiều lắm là độ phức tạp tính toán Theta(f(n)), thường thì chỉ biết O(f(n)) là khá lắm rồi. Có 2 vấn đề thường gặp với những người chỉ biết về thuật toán mà không rõ về cài đặt bên dưới:
    • Không xác định được thuật toán nào thì nhanh hơn trong trường hợp nào: vì độ phức tạp tính toán chỉ giúp ước lượng đánh giá được thuật toán khi n tiến tới vô cùng. Theo định nghĩa thì thuật toán thuộc lớp Theta(f(n)) nếu số bước tính toán của thuật toán T(n) bị chặn: c1 * f(n) <= T(n) <= c2 * f(n), với c1 và c2 là hằng số và n > n0 nào đó. Xét 2 thuật toán có độ phức tạp là Theta(n) và Theta(n^2):
    • Vì theo định nghĩ là T(n) bị chặn dưới cho nên hoàn toàn có thể là T1(n) của thuật toán Theta(n^2) nhỏ hơn T2(n) của thuật toán Theta(n). VD: T1(n) = 10 n^2 và T2(n) = 100000 n. Với n đủ nhỏ thì T1(n) < T2(n),
    • Tức là chỉ khi n đủ lớn thì thuật toán Theta(n) mới phát huy tác dụng so với thuật toán Theta(n^2). Như ví dụ ở trên là thì n > 10 000 mới.
    • Vậy cái gì quyết định n bao nhiêu là đủ lớn? Rất nhiều yếu tố, trong đó có ngôn ngữ. Bởi vì mỗi ngôn ngữ có cách thực hiện các cấu trúc cơ bản khác nhau dẫn tới số phép tính khác nhau. Ví dụ đơn giản là ngôn ngữ bậc thấp như C/C++ không bound check khi truy cập mảng còn Python lại có. C/C++ có thể khởi tạo biến tại stack (tốn ít phép tính) còn Python luôn phải khởi tạo trên heap (tốn nhiều phép tính).
    • Không xác định đầy đủ các "phép toán cơ bản": Theo như định nghĩa trên thì hàm T(n) là hàm số lượng các phép toán cơ bản (là phép được thực hiện nhiều nhất trong thuật toán). Những người chỉ biết về thuật toán không quan tâm đến ngôn ngữ thường chỉ nghĩ rằng các phép toán cơ bản là cộng/trừ/nhân/chia/bitwise. Nhưng thật ra đó chưa chắc đã là những thứ cơ bản nhất trong máy tính. Ví dụ:
      • Phép chia thường tốn thời gian thực hiện hơn so với phép nhân và hơn rất nhiều so với cộng/trừ. Cho nên khi tính T(n) mà cho chia với cộng/trừ vào cùng một loại thì sẽ dẫn tới sai lầm,
      • CPU hiện nay sử dụng nhiều kỹ thuật để cho phép tính đồng thời nhiều phép toán trên 1 nhân (SIMD, Out of Order execution). Cả chương trình bây giờ là tổng hợp của những phép toán tình đồng thời và tuần tự. Phân tích thuật toán mà bỏ qua yếu tố này cũng sẽ trở thành đánh giá sai,
      • Ngoài các phép tính toán thì còn những thao tác khác cũng tốn thời gian mà ít thấy nhắc tới: vi dụ thời gian chờ bộ nhớ thì RAM tới cache và từ cache tới thanh ghi. Một phép cộng có thể chỉ mất 1/2 clock CPU nhưng truy cập bộ nhớ RAM mất tới 200 clock. Bỏ qua điều này nhẹ thì đánh giá sai hằng số c1 c2 trong công thức T(n), nặng thì có thể đánh giá sai luôn lớp thuật toán.
      • Cùng tương tự như trên, ngôn ngữ là một yếu tố có ảnh hưởng lớn đến mặt này. Một số ngôn ngữ cho phép người dùng thực hiện các phép toán SIMD, ngôn ngữ khác thì phải phó mặc cho JIT Compiler nó tự biết mà tối ưu để sử dụng SIMD. Có ngôn ngữ cho phép ta can thiệp tới từng bit bộ nhớ để có thể tối ưu sử dụng cache nhưng cũng có ngôn ngữ ẩn hết những thứ đó và ta phải mày mò thử nghiệm mà không hiểu vì sao.
    Ngôn ngữ là thứ bậc thấp hơn thuật toán, nó trừu tượng hoá, ẩn đi những thứ cơ bản rồi cho nên nhìn từ phía trên xuống sẽ thấy nó cỏ vẻ chẳng có gì quan trọng, ra sao cũng được miễn là có đủ cộng trừ nhân chia. Nhưng thực ra nếu hiểu được cách nó trừu tượng hoá thì sẽ có ích nhiều cho việc hiểu thuật toán. Tư tưởng này cũng giống như việc làm frontend chả cần quan tâm backend làm gì, chỉ cần đủ API là được.

    Knuth trong bộ sách The Art of Computer Programing thay dựa vào các mã giả hay một ngôn ngữ bậc cao nào đó thì ông đã nghĩ ra một loại hợp ngữ mới trên một kiến trúc CPU cũng do ông tự nghĩ ra. Đó là vì chỉ như này thì mới đánh giá được đúng thuật toán: https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming#Assembly_language_in_the_book
     
  5. hgiasac

    hgiasac snake, snake, snaaaake Lão Làng GVN

    Tham gia ngày:
    21/12/07
    Bài viết:
    8,238
    Có ngôn ngữ như Haskell học cả đời cũng không master được hết đâu :1cool_look_down:

    Còn code giải thuật toán cũng chỉ là bề nổi, ứng dụng phổ thông ít dùng tới. Cái quan trọng của kỹ thuật phần mềm là Design pattern, structure code, phân tích business logic và quy trình phát triển phần mềm.

    Ai đi làm rồi sẽ thấy, Project manager và Project Owner vẫn ưu tiên deadline nhất, nên cần code chạy đúng chứ không cần tối ưu. Đến khi có vấn đề về performance thì mới quay lại tối ưu sau. Hơn nữa dự án hiện nay theo quy trình Scrum, Agile release hàng tuần nên cũng chả có thời gian mà làm
     
    aragon0510, valshe and mashimuro like this.
  6. Darkwolf.vn

    Darkwolf.vn Leon S. Kennedy ✟ Grim Reaper ✟ Lão Làng GVN

    Tham gia ngày:
    12/12/06
    Bài viết:
    13,865
    Nơi ở:
    CosmoEntelecheia
    ^
    Như bác hgiasac thì cũng đúng với mấy bạn bắt đầu tiếp cận công việc cntt (vd chủ thớt, sinh viên...)
    Nhưng mà sau 2-3 năm exp nếu muốn apply mấy chỗ lương 1k5-2k$+ thì phải trao dồi giải thuật nhiều lên, hoặc lên Hackerrank nâng cao trình độ nữa, do các cty chịu trả mức đó thường sẽ phỏng vấn giải thuật hơn là mấy cái ngôn ngữ hay kĩ thuật.
    Btw,
    Chắc do bên team bác còn bận vật lộn với feature mới nhỉ? Chứ bên em thì lâu lâu cũng có khá nhiều story cho việc refactor code để boost up performance lên ấy chứ

    p/s: Tầm này thì design pattern/SOLID là MUST rồi nên ko tính nữa

    @Thớt: Mình đang theo Java, và thấy Java cũng khá dễ học dễ tìm việc do nhu cầu cao, hoặc theo hot trend frontend thời nay là ReactJS cũng ok
     
    Chỉnh sửa cuối: 31/8/19
    living2nd and hgiasac like this.
  7. hgiasac

    hgiasac snake, snake, snaaaake Lão Làng GVN

    Tham gia ngày:
    21/12/07
    Bài viết:
    8,238
    Làm outsourcing cho tụi Singapore với Tàu toàn đẻ feature ra liên tục, thích ôm đồm một đống feature vào 1 app nên tuần nào vẽ với ra một đống feature mới :3cool_nosebleed:.
    Còn thuật toán thì đúng là mấy công ty lớn test coding skill sẽ có 1 câu thuật toán, nhưng cũng là dạng phổ thông như sắp xếp cây nhị phân, tìm đường ngắn nhất, .v.v.
     
  8. tthixk

    tthixk Youtube Master Race

    Tham gia ngày:
    20/4/06
    Bài viết:
    0
    ^
    ^

    +1

    Design pattern, programming paradigms là quan trọng nhất, sau đó thì tiếp cận ngôn ngữ framework rất dễ dàng.

    Thuật toán là bonus, khi pv những cty có khả năng trả 3k thì họ thường filter đầu vào bằng thuật toán cho đỡ mất công pv nhiều, có thể 1 năm mới xài vài 3 lần, mà khi xài cũng toàn google :))

    Khi pv cty có màn whiteboard coding thì thuật toán giúp hiểu cách suy nghĩ, cách code của ứng viên nữa, nhiều khi giải ko ra kq vẫn pass vòng này vì ý tưởng tốt và code nhìn đẹp :)).
     
  9. Diệp Thanh

    Diệp Thanh Kirin Tor Moderator Lão Làng GVN

    Tham gia ngày:
    7/2/04
    Bài viết:
    4,295
    Lên Udemy kiếm mấy course highest rate học ok đó bạn
     
    living2nd thích bài này.
  10. giahuypro1

    giahuypro1 Dragon Quest

    Tham gia ngày:
    15/10/17
    Bài viết:
    1,286
    Nơi ở:
    Đà Nẵng
    28 rồi mới xuất phát điểm từ số 0 thì coi bộ phải nghiêm túc và cày gấp mấy lần lần lần lần so với người khác , đặc biệt là so với bọn trẻ học lên ra trường , sợ học vài tháng là nản nhất là đối với cái nghề lập trình này
     
  11. firestork

    firestork Mayor of SimCity GameOver Lão Làng GVN

    Tham gia ngày:
    3/1/09
    Bài viết:
    4,065
    Mình làm Dev gần chục năm cũng muốn chuyển qua làm BA. Có gì bác cho review từ đầu đc ko. Eng với nền tảng code mình đều OK.
     
  12. Dyrus

    Dyrus Fire in the hole! Lão Làng GVN

    Tham gia ngày:
    19/1/14
    Bài viết:
    2,893
    Cungx muốn viết dài dài debate mà nghĩ lại thôi.

    Thớt mà nghiêm túc thì tìm 1 ai profile tốt tốt, sau đó hẹn đi cf và nhờ người ta định hướng (ko cần người quend dâu, người giỏi ở VN nhiều người cũng tốt lắm, có cái họ thường kahs bận :)) ). Thớt không biết lên mạng thì 9 người 10 ý, kết quả dễ gặp nhất là đẽo cày giữa đường à?
     
  13. XXxxxXX

    XXxxxXX Legend of Zelda

    Tham gia ngày:
    28/1/11
    Bài viết:
    914
    Mới vào học c# đi, làm được nhiều thứ. Mà đi thực tập cho nó bóc lột, được làm thiệt mau lên tay hơn là đi học hay tự học, nhưng 28 tuổi thì quá khó.
     
    Chỉnh sửa cuối: 31/8/19
  14. seaaza

    seaaza Dragon Quest Lão Làng GVN

    Tham gia ngày:
    8/4/06
    Bài viết:
    1,262
    Tôi năm nay 29 tuổi, toàn mày mò tự học, tuần trước cũng thử đi phỏng vấn .net xem trình độ đến đâu.
    Tuy pass nhưng nghĩ đi nghĩ lại thì quyết định ở nhà cày tiếng anh và chuyên sâu thêm 1 thời gian nữa (chủ yếu cũng là chờ vợ đẻ
     
  15. valshe

    valshe Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    2/3/10
    Bài viết:
    823
    Nơi ở:
    HN
    Tiện đây xin các bác tư vấn.Sơ qua về mình: hiện 28 tuổi.Đang đi làm có 4 năm kinh nghiệm về network/support user.Đợt vừa rồi trước nghỉ lễ có đi phỏng vấn vị trí IT ở 3 nơi,thì đều đã pass nhưng hiện vẫn đang phân vân.Sơ qua về 3 công ty,bao gồm:

    2 công ty tư nhân:
    - 1 công ty về chuỗi cửa hàng ( 3 trụ sở chính và hơn 40 cửa hàng.Số lượng user gần 200).Team IT hiện có 1 người.(chuyên về support)
    - 1 công ty chuyên về kinh doanh vàng bạc ( 3 trụ sở và 4 cửa hàng. Số lượng user tại 3 trụ sở gần 100-150).Team IT hiện có 3 người(2 chuyên về helpdesk,1 về phần mềm)
    Cả 2 công ty tư nhân đều yêu cầu đánh giá hiện trạng tình hình hiện tại về công nghệ thông tin tại công ty,đồng thời lên phương án xây dựng lại hệ thống mới( thực ra thì 1 chưa hề có và 1 mới đang trong giai đoạn xây dựng )
    1 công ty nhà nước:
    - Bao gồm 1 công ty mẹ,và gần 10 công ty con,công ty thành viên.Nếu vào làm thì sẽ tiếp quản,vận hành hệ thống đã có(Làm việc tại công ty mẹ và hỗ trợ các công ty con,thành viên) Trong tương lai gần thì sẽ chuyển địa điểm và bê hệ thống sang hoặc xây dựng lại tại chỗ mới.Team IT hiện có 1 người.(chưa rõ vai trò???)

    Mức lương offer của 3 công ty đều xấp xỉ nhau(net:~ 10tr) nên không phải vấn đề lớn.Thời gian làm việc trừ công ty nhà nước làm 5 ngày/tuần còn 2 công ty kia y/c làm cả thứ 7.
    Định hướng tương lai của mình là lên sys admin và học thêm 1 số chứng chi về ảo hóa,lpi,..Và có thể học thêm về 1 số phần mềm(lập trình C#,SAP,ERP),dự định học thêm tiếng Nhật trong vòng mấy năm tới cố kiếm cái N2.
    Băn khoan của mình ở đây là với 3 công ty kia thì môi trường ở đâu là tốt nhất cho việc phát triển nghề nghiệp ,học tâp và tích lũy kinh nghiệm?Sau một vài năm nữa( 4-5năm??) mục tiêu của mình 1 là vẫn tiếp tục gắn bó với công ty mình đã chọn( ổn định cuộc sống và lấy vợ),hoặc sẽ sang Nhật làm ( Hiện đang có một số mối sang bên đấy làm system engineer nhưng thiếu tiếng (y/c:N2)) .Mong các bác cho chút ý kiến và lời khuyên về định hướng và mục tiêu của mình.
    Trân trọng cám ơn!
     
  16. gaaravn

    gaaravn C O N T R A

    Tham gia ngày:
    29/12/06
    Bài viết:
    1,966
    Nơi ở:
    Sơn Tặc Trại
    Nếu xác định sang Nhật, thi N2 nếu chỉ là cần lấy chứng chỉ thì luyện 1 năm là đỗ, học tập trung 3~4 tiếng/ngày, học càng nhanh thi càng dễ đỗ vì đỡ quên chữ.

    Nếu bác định cày thêm chứng chỉ chuyên ngành và học ngoại ngữ vào buổi tối để sau này nhảy việc thì nên chọn cái nào môi trường làm việc nhàn chút. Mệt thì tối khó nhồi chữ.

    Đây cũng là lý do cty tui rất nhiều dev muốn học tiếng Nhật, có N2 phát là thăng hoa luôn nhưng cố lắm mà ko học đc. Vì ban ngày đi làm suy nghĩ nhiều, về nhà mệt ko học nổi.
     
    Chỉnh sửa cuối: 1/9/19
    valshe thích bài này.
  17. bdt_td

    bdt_td C O N T R A

    Tham gia ngày:
    30/4/07
    Bài viết:
    1,980
    Xác định sang Nhật thì học N2 mới là quan trọng nhất nhé.
     
    phanthieugia and valshe like this.
  18. kidhunt

    kidhunt Mario & Luigi

    Tham gia ngày:
    20/12/07
    Bài viết:
    752
    Từ Dev qua BA ok nhưng có cái bạn cần lưu ý sau. Rất nhiều BA mắc phải một cái bệnh khá là mãn tính nếu họ từ Dv chuyển qua :)). Bệnh đó là bệnh bảo thủ, engineering-mindset. Khi bạn làm BA là bạn phải đặt mình vào vị trí end-user chứ không phải là engineer. Làm được chuyện đó thì bạn mới có thể làm BA tốt được
     
    TIDUS2111 and firestork like this.
  19. firestork

    firestork Mayor of SimCity GameOver Lão Làng GVN

    Tham gia ngày:
    3/1/09
    Bài viết:
    4,065
    Ừa cũng đang ngại cái đấy, dù 2 năm nay chuyển sang làm lead cũng ít code hơn xưa :)). Bác cho xin cái list sách với courses để học dần dần sang năm còn tính cách chuyển. Nếu rảnh review quá trình làm việc thì đa tạ :2cool_sexy_girl:
     
  20. kidhunt

    kidhunt Mario & Luigi

    Tham gia ngày:
    20/12/07
    Bài viết:
    752
    Sách thì bác cứ search cuốn BABOK v3.0 của bọn IIBA mà đọc, trong đó nó hướng dẫn rất cặn kẽ từng cái nghiệp vụ mà thằng BA nào cung phải làm hết. nhớ học kĩ BPMN và Scrum vì đôi lúc BA đóng luôn vai trò Scrum Master.

    Học xong thì quan trọng là cách bác nói chuyện với client để elicit requirement. Còn về URD SRS thì ko quan trọng, template nào cũng xài được nhưng mà hiện giờ làm theo Agile với Scrum thì toàn viết user story với acceptance Criteria nên đơn giản hơn nhiều :D.

    Good luck, cái gì ko biết thì hỏi mình :D
     

Chia sẻ trang này