Kiến thức cần thiết để trở thành Developer giỏi theo từng level


Mục Lục

  1. Công nghệ - Skill
    1. Kiến thức về thuật toán
    2. Kiến thức về CI/CD - Khả năng sử dụng các công cụ quản lý Source Version
    3. Code sạch - Coding convention
    4. Kiến thức về thiết kế
    5. Phương pháp Phát triển phần mềm thông dụng
    6. Quy trình Kiểm soát chất lượng phần mềm
    7. Quy trình Phát triển phần mềm của công ty
    8. Kiến thức cơ bản về Dữ liệu
    9. Kiến thức về Cấu trúc dữ liệu
    10. Kiến thức về Cơ sở dữ liệu - Nắm các khái niệm cơ bản của Cơ sở dữ liệu:
    11. Design Pattern
    12. kỹ năng về Integration Testing (IT)
    13. Phương pháp lập trình cơ bản
    14. khả năng Lập trình bảo mật

Trong những năm gần đây, ngành công nghệ thông tin vẫn đang là một ngành nghề rất hot tại việt nam và cả nước ngoài. Cụ thể nghề Lập trình viên được đánh giá là nghề có thu nhập khá cao trong xã hội. Vậy để có được mức lương cao, có chỗ đứng trong dự án, doanh nghiệp, cơ bản 1 developer cần phải biết, nắm bắt rõ được những thứ thiết yếu gì? Cùng kitu123 điểm qua một số những kiến thức được yêu cầu trong một số doanh nghiệp hiện nay nhé: 

Công nghệ - Skill

  1. Kiến thức về thuật toán

    • Nắm vững các khái niệm về một số thuật toán sau:
      • Thuật toán tìm kiếm: Tìm kiếm luyến tính, tìm kiếm nhị phân, ...
      • Thuật toán sắp xếp: Bubble Sort, Selection Sort, Insertion Sort, Quick Sort
      • Thuật toán đệ quy
    • Phải vận dụng được ít nhất 1 thuật toán trên vào dự án thực tế.
      • Hiểu các tính toán phức tạp của dự án, các vấn đề liên quan đến bộ nhớ và tốc độ của thuật toán
      • Nếu biết về các thuật toán nâng cao thì lại càng tốt: tìm kiếm nâng cao merge, heap; Duyệt case; Quy hoạch động
    • Phải áp dụng thành thạo các thuật toán trong lập trình và có khả năng giải quyết bài toán dựa trên các thuật toán có sẵn
    • Nếu có thể có khả năng đọc hiểu thuật toán mới và áp dụng trong dự án thực tế thì thật tuyệt vời phải không nào
    • Trình độ thượng thừa có thể tìm ra các thuật toán mới để giải quyết vấn đề, tối ưu tốc độ, bộ nhớ ( đạt được mức này thì lương cũng k vừa đâu nhé )
  2. Kiến thức về CI/CD - Khả năng sử dụng các công cụ quản lý Source Version

    • Một số công ty sẽ khuyến khích lập trình viên biết về CI/CD; devops nhưng không phải tất cả, developer mà biết cái này sẽ là một lợi thế rất lớn
    • Hiểu biết về CI / CD, triển khai được là một điều rất tốt
    • Đa số các công ty hiện nay đều sử dụng công cụ quản lý source code: git. Là 1 developer chắc chắn phải biết sử dụng git  
    • hiểu biết cơ bản về các công cụ quản lý Source Version (GIT, SVN,...)
    • thực hiện các thao tác cơ bản sử dụng source version control như: Pull, Commit, Push, Checkout, Commit...
  3. Code sạch - Coding convention

    • Code giỏi thôi chưa đủ, mà phải code sạch, code theo quy tắc ví dụ cách đặt tên lớp, hắng sô, biến, hàm, cách comment, ... để người khác dễ đọc tiện lợi cho việc bảo trì và phát triển sau này/ Chúng ta sẽ nói chi tiết về 1 bài sau nhé!
  4. Kiến thức về thiết kế

    • Hiểu biết về Basic Design, Detailed Design, Architecture Design
    • Làm được Detailed Design ở mức Reviewer/KH chấp nhận được trong dự án
    • Làm được Basic Design, Detailed Design ở mức Reviewer/KH chấp nhận được
    • Architecture Design nếu có khả năng tốt thì cũng tuyệt cú mèo
  5. Phương pháp Phát triển phần mềm thông dụng

    • Có hiểu biết về một trong các kiến thức sau thì rất có lợi, tuy nhiên 1 developer nếu có thời gian và tâm huyết thì nên biết:
      • Quy trình Phát triển phần mềm (Software Development Lifecycle - SDLC) 
      • Mô hình Thác nước (Waterfall Model) - Mô hình chữ V (V-Shaped Model)
      • Mô hình xoắn ốc (Spiral Model) 
      • Mô hình tiếp cận lặp (Iterative Model) 
      • Mô hình tăng trưởng (Incremental Model) - Mô hình Agile - Mô hình Scrum 
  6. Quy trình Kiểm soát chất lượng phần mềm

    • Khái niệm, định nghĩa về chất lượng phần mềm
    • Software Testing (UT, IT, ST, UAT..)
    • Quy trình xử lý lỗi phần mềm của dự án
  7. Quy trình Phát triển phần mềm của công ty

    • áp dụng  mô hình phát triển phần mềm theo quy trình của công ty
    • Hiểu rõ các bước trong quy trình của mô hình phát triển, đánh giá & vận dụng Quy trình phát triển có sẵn phù hợp theo dự án
  8. Kiến thức cơ bản về Dữ liệu

    • Nắm được các khái niệm cơ bản về hệ cơ số và cách chuyển đổi qua lại: - Các hệ cơ số 2 (Binary), 8 (Octa), 10 (Decimal), 16 (Hexa)
    • Nắm được các định dạng biểu diễn các giá trị số trong máy tính: - Hệ thập phân / hệ nhị phân
    • Hiểu được cách để biểu diễn các giá trị về characters / symbols / colors: - Các bảng mã ký tự: ASCII Code, Unicode, RGB(A) - Hex...
    • Hiểu về phép dịch bit và sai số khi thực hiện các phép toán của máy tính Nắm chắc về khái niệm và cách sử dụng các mệnh đề logic AND, OR, NOT, EOR, XOR
    • Có khái niệm cơ bản về các kiểu dữ liệu khác (optional): - Âm thanh, hình ảnh, video ...
    • Hiểu về bản chất của các kiểu dữ liệu, có thể sử dụng đúng mục đích, thỏa mãn yêu cầu.
    • Sử dụng thành thạo các phép toán logic
    • Có khả năng sử dụng các phép dịch bit (bitwise Operator)
    • Có khả năng convert giữa các kiểu biểu diễn giá trị khác nhau
  9. Kiến thức về Cấu trúc dữ liệu

    • Nắm vững các khái niệm cơ bản về các kiểu primitive như char, int, long, float, double
    • Nắm khái niệm về các kiểu mở rộng: 
      • Arrays, List -
      • Linked Lists (Single Linked List, Doubly Linked List, Circular Linked List)
      • Stack, Queue
      • Dictionary, Hash Table
    • Vận dụng thành thạo cấu trúc dữ liệu trong lập trình & có khả năng thiết kế cấu trúc dữ liệu dựa trên các quy chuẩn có sẵn
  10. Kiến thức về Cơ sở dữ liệu - Nắm các khái niệm cơ bản của Cơ sở dữ liệu:

    • Khái niệm Cơ sở dữ liệu cơ bản:
      • -Schema, Table/View, Row, Column, Primary Key, Foreign Key, Index, Contrains, Trigger... -
      • CRUD: INSERT, SELECT, UPDATE, DELETE statements
      • Join Tables: INNER JOIN, LEFT JOIN, RIGHT JOIN, UNION,..
      • Chuẩn hóa (Normalization), ER Diagram,... - Stored Procedure
    • Vận dụng được các lý thuyết cơ bản vào trong dự án thực tế (CRUD, sử dụng được SQL truy xuất dữ liệu...)
    • DATABASE: 
      • Có thể làm việc thành thạo được với 1-2 loại Database và sử dụng các hệ quản trị dữ liệu (DBMS)
      • Có khả năng thiết kế được Database 
      • Viết được các câu lệnh truy vấn
      • Sử dụng tốt các Transaction, Roll-back dữ liệu khi có sự cố xảy ra
  11. Design Pattern

    • Singleton
    • Builder/Factory
    • Adapter 
    • Delegate
    • ...............
    • Ứng dụng thành thạo các design pattern vào một số chương trình của dự án
    • Tùy biến design pattern khi thiết kế cấu trúc dự án
  12. kỹ năng về Integration Testing (IT)

    • Hiểu được các khái niệm cơ bản về Integration Testing: External Integration Testing, Internal Integration Testing, State Matrix..
    • Thực hiện IT case theo các test case có sẵn
    • Viết được tài liệu IT Specs, IT Cases.. cho các module - thực hiện được IT cases, lấy evidence,...
  13. Phương pháp lập trình cơ bản

    • Nắm vững các khái niệm cơ bản về các phương pháp lập trình cơ bản:
      • Lập trình Thủ tục (Procedural Programming)
      • Lập trình Hướng đối tượng (Object-Oriented Programming)
      • Lập trình Chức năng (Functional Programming)
    • Vận dụng được các phương pháp lập trình cơ bản vào trong dự án thực tế
  14. khả năng Lập trình bảo mật

    • Có kiến thức cơ bản về Lập trình bảo mật:
      • Các nguyên tắc lập trình bảo mật cơ bản trong các ngôn ngữ lập trình cụ thể (Java, C#, PHP,...)
      • Các kỹ thuật phòng tránh các lỗi được đề cập trong OWASP Top10: SQL Injection, DDOS
      • Hiểu biết về các thuật toán Encryption / Decryption (Symetric / Asymetrric) - Hiểu biết về Authentication / Authorization
    • tạo SSL Certificate Authority cho HTTPS,....