Product owner là gì? Vai trò và nhiệm vụ của Product owner. Ảnh: longnguyen.site
Thành viên nào trong nhóm phát triển sản phẩm linh hoạt (agile product development) cũng có trách nhiệm của riêng mình. Trong số những người này, thì mô tả công việc của product owner (giám đốc sản phẩm) có lẽ là đa dạng và quan trọng nhất.
Tìm hiểu về product owner. Ảnh: romanpichler.com
Đội ngũ phát triển sản phẩm vào năm 2021 sẽ hoàn toàn khác với đội ngũ hồi 5 năm trước.
Phương pháp kinh doanh và công nghệ mới đã đưa tới sự thay đổi đáng kể trong cách thức hoạt động của các nhóm phát triển sản phẩm, đồng thời làm cho các vị trí riêng lẻ trong nhóm phát triển sản phẩm được săn đón trong nhiều lĩnh vực công việc.
Product owner là một trong những vị trí có giá trị cao trong một nhóm như vậy. Đây cũng là một vị trí rất đáng để làm việc — xét về kinh nghiệm chuyên môn và mức lương.
Trong trường hợp bạn muốn tạo dựng sự nghiệp như một product owner, điều quan trọng là bạn phải biết thông tin chi tiết về vị trí đó.
Để giúp bạn hiểu thêm về công việc của product owner, bài viết này sẽ cung cấp chi tiết về mô tả công việc cũng như vai trò và trách nhiệm của vị trí này.
Product owner làm gì?
Product owner là thành viên trong đội ngũ phát triển sản phẩm, người đảm bảo rằng mỗi sản phẩm sẽ mang lại giá trị tối đa cho người dùng.
Họ thường giữ vị trí trung tâm trong mỗi chu kỳ phát triển sản phẩm. Ngoài ra, họ có khả năng hoạt động với nhiều vai trò khác nhau trong một nhóm liên chức năng (cross-functional).
Một product owner linh hoạt có thể đảm nhận một số vai trò trong scrum.
Một số trong các vai trò này là:
Nhà làm chiến lược kinh doanh (Busines Strategist)
Nhà thiết kế sản phẩm lấy người dùng làm trung tâm (User-centric product designer)
Nhà phân tích kinh doanh (Business analyst)
Nhà quản lý nghiên cứu thị trường (Market research manager)
Ngoài ra, product owner cũng có thể được yêu cầu đảm bảo các thực hành tốt nhất về quản lý tác vụ nhằm giữ vững phương pháp luận agile trong quá trình phát triển.
4 Trách nhiệm chính của Product owner
Như đã nói, một giám đốc sản phẩm đôi khi sẽ được yêu cầu đảm nhiệm một số vai trò, đặc biệt nếu sản phẩm yêu cầu đầu vào từ một chuyên gia đơn nhất.
Công việc của Product Owner.
Tuy nhiên, mô tả công việc product owner năm 2021 có 4 trách nhiệm chính mà bất kỳ ai ở vị trí này cũng phải hoàn thành.
Hãy cùng xem xét các trách nhiệm chính của product owner
1. Xác định Tầm nhìn sản phẩm
Một product owner phải điều hành nhóm phát triển sản phẩm từ góc độ chiến lược. Họ phải nắm rõ mục tiêu phát triển sản phẩm và có trách nhiệm truyền đạt mục tiêu đó cho những người còn lại trong nhóm.
Vì là người chủ chốt trong đội ngũ sản phẩm, họ cần giao tiếp với tất cả các bên liên quan, bao gồm khách hàng, đội ngũ phát triển và quản lý doanh nghiệp.
Điều này là để đảm bảo tất cả mọi người tham gia vào việc định nghĩa và vòng đời sản phẩm đều nắm bắt mục tiêu sản phẩm và những mục tiêu đó phù hợp với mục tiêu doanh nghiệp.
Để xác định Tầm nhìn sản phẩm, PO phải:
Duy trì một tầm nhìn gắn kết và duy nhất về sản phẩm
Thích ứng với tính chất linh hoạt và nhanh chóng của quy trình phát triển sản phẩm (agile product development)
Cập nhật tình hình cho các bên liên quan
Tạo một lộ trình phát triển sản phẩm khả thi
Đảm bảo tính khả thi của sản phẩm đối với mục tiêu kinh doanh
Nhìn chung, product owner đóng vai trò trung tâm giao tiếp và định hướng chiến lược cho tất cả những ai liên quan đến sản phẩm.
2. Quản lý backlog sản phẩm
Backlog sản phẩm là danh sách việc cần làm của nhóm phát triển sản phẩm cho mỗi lần chạy sản phẩm.
Một product owener chịu trách nhiệm tạo và duy trì backlog sản phẩm. Họ cũng cần đảm bảo rằng backlog luôn được cập nhật dựa trên nhu cầu phát triển của dự án.
Ngoài ra, product owner còn phải làm cho tất cả các bên liên quan tiếp cận được với backlog trong suốt quá trình phát triển.
Để tạo ra một backlog sản phẩm hiệu quả, họ phải:
Đưa ra các đầu mục backlog phù hợp với mục tiêu kinh doanh
Ưu tiên các đầu mục dựa trên chiến lược sản phẩm
Vạch ra các ràng buộc của dự án
Thực hiện trình tự phát triển hiệu quả nhất
Nhìn chung, product owner cần liên tục tìm cách tối ưu backlog để đạt hiệu suất sản phẩm và giá trị kinh doanh tốt nhất có thể.
3. Ưu tiên nhu cầu sản phẩm
Phát triển sản phẩm Agile yêu cầu đội nhóm chỉ ra các nhu cầu của dự án và sắp xếp chúng theo thứ tự ưu tiên.
Product owner chịu trách nhiệm phối hợp với phần còn lại của scrum team và sắp xếp ưu tiên các nhu cầu theo 3 khía cạnh: phạm vi, thời gian và ngân sách.
PO thực hiện điều này bằng cách cân nhắc từng mức độ ưu tiên so với mục tiêu và nhu cầu của các bên liên quan.
Trong khi ưu tiên các nhu cầu, PO còn:
Xác định rõ bất kỳ và tất cả các ràng buộc của dự án.
Xác định khu vực phát triển nào có ít ràng buộc hơn.
Xác định sản phẩm nào sẽ được đưa vào phát triển tại thời điểm nào.
Lặp lại quy trình sắp xếp ưu tiên cho mỗi lần cải tiến sản phẩm.
Nhìn chung, product owner phải đảm bảo rằng đường thời gian phát triển (timeline) có tính thực tế. Khi đường thời gian được phát triển, họ phải hỗ trợ nhóm phát triển bám sát theo.
4. Giám sát quá trình phát triển sản phẩm
Khi chiến lược, tầm nhìn và các ưu tiên đã được thiết lập, product owner cần giám sát sản phẩm thực tế trong suốt chu kỳ phát triển.
Product owner là người đóng vai trò quan trọng trong mỗi sự kiện phát triển, bao gồm lập kế hoạch, cải tiến quy trình, đánh giá sản phẩm và chạy nước rút.
Để giám sát quá trình phát triển, product owner cần:
Làm việc với đội ngũ phát triển để nhận diện, xác định và tổ chức các bước cần thiết cho các lần cải tiến tiếp theo
Làm việc với các nhóm để điều chỉnh quá trình phát triển
Nhận diện bất kỳ khu vực nào có tiềm năng cải tiến
Hỗ trợ giai đoạn thiết kế sản phẩm
Nhìn chung, product owner phải theo dõi sự phát triển trong khi liên tục tìm cách để làm cho các quy trình hiệu quả hơn.
Product owner cần có những năng lực nào?
Yêu cầu năng lực đối với Product Owner. Ảnh: visual-paradigm.com
Dưới đây là một số khả năng mà PO cần có để hoàn thành vai trò:
Kiến thức tổng quản về agile software development (phát triển phần mềm linh hoạt)
Có kinh nghiệm quản lý dự án
Khả năng xác định câu chuyện người dùng (user story)
Kỹ năng truyền đạt xuất sắc, đặc biệt là với khách hàng và ban lãnh đạo
Hiểu biết các nguyên tắc khoa học máy tính (đối với các sản phẩm phần mềm)
Khả năng giải quyết vấn đề liên tục
Kinh nghiệm làm việc trong các nhóm Agile (nhóm phát triển phần mềm linh hoạt)
Ngoài ra, product owner nên biết về bản chất luôn thay đổi của thị trường phần mềm. Công nghệ phát triển nhanh chóng mang đến một loạt thách thức riêng cho các nhóm phát triển sản phẩm
Điều đó, cùng với sự thay đổi nhu cầu của khách hàng thường là lý do khiến một sản phẩm không tạo được dấu ấn trên thị trường.
Mặc dù phương pháp agile quản lý rất nhiều thách thức, sản phẩm cuối cùng cần một chuyên gia giám sát sự phát triển của nó.
Đây là nơi phát huy khả năng của product owner.
Product owner lý tưởng năm 2021
Product owner là vị trí quan trọng do sự đa dạng về kỹ năng cần thiết.
Trách nhiệm của product owner tương tự như những gì bạn thấy trong mô tả công việc của scrum master hoặc product manager.
Khác biệt duy nhất giữa cả hai là product manager chỉ là một trong nhiều vai trò mà product owner phải thực hiện.
Do đó, đôi khi, nội dung tuyển dụng việc làm cho product owner có thể gây nhầm lẫn — đặc biệt nếu bạn không nhận thức đầy đủ về những gì vị trí đó yêu cầu.
Nếu bạn đang cân nhắc sự nghiệp product owner, hãy đảm bảo là bạn nắm vững mô tả công việc của nó.
Không biết bao lần tôi được hỏi: “Product Manager là gì và làm gì để trở thành một Product manager đúng nghĩa?“
Tôi luôn bị cuốn hút bởi câu hỏi này, bởi vì người hỏi quan tâm đến quản lý sản phẩm, mặc dù họ không biết nó là gì.
Sự quan tâm đó có ý nghĩa. Product Manager (Giám đốc sản phẩm) là một trong những nghề được trả lương cao nhất, được tôn trọng nhất trên thế giới hiện nay, ngay cả khi không qua nhiều người hiểu về cái nghề này.
Tại các trường kinh doanh trên khắp thế giới, sinh viên MBA coi Product management (Quản lý sản phẩm) là công việc mơ ước của họ. Do nhu cầu cao, nên các trường học bắt đầu tạo ra chuyên ngành và chương trình mới chỉ tập trung vào Product Management.
Thách thức với việc mô tả một product manager làm gì chính là vai trò của product manager vốn đã không được xác định rõ ràng.
Product manager (Giám đốc sản phẩm) là gì?
Một product manager sẽ kết nối Chiến lược kinh doanh, Hiểu biết về thiết kế và Nhu cầu khách hàng để phát triển một sản phẩm phù hợp, khả thi và có giá trị.
Product management tập trung vào việc tối ưu hóa sản phẩm để đạt được mục tiêu kinh doanh và nhu cầu cần thiết của người dùng cùng lúc với việc tối đa ROI (Return on Investment).
Product manager sẽ quản lý tất cả khoảng trắng (white space) xung quanh sản phẩm. Hãy coi product manager như một mô liên kết – họ giải quyết mọi thứ nằm ngoài giới hạn của bất kỳ nhóm nào trong ba nhóm cốt lõi.
Product manager là gì? Ảnh: productmanagerhq.com
Bởi vì mỗi sản phẩm có một tập hợp các khách hàng, doanh nghiệp và nhà phát triển khác nhau, nên mỗi product manager vốn dĩ đã khác nhau, bởi vì loại white space mà họ sẽ hoạt động là khác nhau.
Ví dụ: một API product manager có khách hàng là tất cả các kỹ sư. Điều đó có nghĩa là người đó cần phải giỏi hơn ở kỹ năng kỹ thuật.
Một ví dụ khác, một consumer product manager có thể đang phục vụ hàng triệu khách hàng và do đó cần phải có tính định lượng cao.
Một ví dụ khác, một B2B product manager có thể chỉ phục vụ vài chục khách hàng và do đó cần phải có kỹ năng cao về quản lý thay đổi, đàm phán và xử lý phản đối.
Ngay cả trong cùng một công ty, bạn có thể thấy rất nhiều product manager khác nhau, vì mỗi product manager đang xử lý một không gian vấn đề khác nhau. Họ đang làm việc với các loại khách hàng khác nhau, các bên liên quan khác nhau và các đội ngũ phát triển khác nhau.
Để thực sự hiểu những gì mà một product manager làm, hãy đi sâu vào lý thuyết về quản lý sản phẩm.
Lý thuyết về Product Management (quản lý sản phẩm)
Hãy sử dụng sơ đồ này để minh họa một thế giới không có product manager.
Một thế giới không có product manager. Ảnh: productmanagerhq.com
Trong một thế giới không có product manager, chúng ta có thể chia tất cả mọi người vào một trong ba nhóm: khách hàng, doanh nghiệp và đội ngũ phát triển.
Khách hàng là người đang trải qua nỗi đau. Họ sẵn sàng dành thời gian, tiền bạc hoặc cả hai để giải quyết nỗi đau của họ.
Doanh nghiệp là một tổ chức tập trung vào việc cung cấp giá trị bền vững cho các cổ đông về lâu dài. Doanh nghiệp kiếm tiền từ hàng hóa và dịch vụ để có thể thuê người và tạo ra của cải cho chủ sở hữu.
Đội ngũ phát triển bao gồm các kỹ sư và designer. Họ muốn tạo ra thứ gì đó mà họ thấy có ý nghĩa, đồng thời vẫn đảm bảo thứ đó bền vững và có thể duy trì trong thời gian dài.
Ba nhóm này thường không hòa hợp với nhau.
Mẫu thuẫn Khách hàng và doanh nghiệp
Khách hàng muốn nhận hàng hóa và dịch vụ miễn phí. Họ gây áp lực buộc các doanh nghiệp phải đưa ra các giải pháp cho những khó khăn cụ thể của mình, đó không phải những cơ hội đủ lớn để doanh nghiệp tồn tại lâu dài.
Các doanh nghiệp muốn khách hàng mua các sản phẩm hiện có của họ với giá cao ngay cả khi điều đó không giải quyết được vấn đề của khách hàng và các doanh nghiệp muốn dành nhiều sự quan tâm nhất vào việc thu hút khách hàng mới thay vì phục vụ những khách hàng hiện có.
Mâu thuẫn Khách hàng và đội ngũ phát triển
Khách hàng muốn đội ngũ phát triển xây dựng mọi thứ chính xác như cách mà họ chỉ ra.
Nếu họ muốn có một nút màu xanh ở phía dưới cùng bên trái của trang, họ sẽ thúc giục để có một cái nút ở đó, ngay cả khi nó phá vỡ mô hình thiết kế và kỹ thuật hiện có.
Khách hàng thúc giục phải có giải pháp cho những nỗi đau của họ, ngay cả khi những giải pháp đó không thực sự giải quyết được nỗi đau đó.
Mặt khác, các đội ngũ phát triển muốn xây dựng những thứ mới mẻ thú vị, nhưng những chức năng mới này có thể không thực sự giải quyết được nhu cầu của khách hàng.
Các đội ngũ phát triển phát triển muốn có đủ thời gian để thực hiện QA (quality asurance) kỹ lưỡng, còn khách hàng thì muốn mọi thứ phải nhanh lên.
Mâu thuẫn đội ngũ phát triển và doanh nghiệp
Doanh nghiệp muốn đội ngũ phát triển phải hoạt động như các nhà máy sản xuất tính năng – càng nhiều tính năng được ‘xuất xưởng’ thì doanh nghiệp càng có nhiều tiền.
Đội ngũ phát triển thường xuyên không đáp ưng các mốc thời gian đưa ra vì họ muốn cấu trúc lại mã cho phù hợp với kỹ thuật hoặc họ muốn thiết kế lại các tính năng để có tính nhất quán trực quan.
Mâu thuẫn nhiều quá. Làm thế nào để giải quyết tất cả những mâu thuẫn này?
Chúng được giải quyết thông qua sản phẩm.
Sản phẩm là thứ giải quyết nỗi đau của khách hàng, đồng thời giúp doanh nghiệp có lãi, và là thứ mà đội ngũ phát triển rất hào hứng xây dựng và có thể duy trì dễ dàng. Nói cách khác, một sản phẩm tuyệt vời sẽ giải quyết được những khó khăn của khách hàng, doanh nghiệp và đội ngũ phát triển sản phẩm.
Vậy còn những khoảng trắng xung quanh sản phẩm?
Đó là Product manager.
Mô tả công việc của Product Manager
Vai trò của Product manager là phục vụ như một nhân tử (multiplier). Vai trò này gồm 2 việc: huấn luyện và canh gác.
Là huấn luyện viên, bạn trao quyền cho các bên liên quan và đồng đội để mang lại giá trị cao nhất.
Bạn xác định vấn đề cần giải quyết, cho ai, tại sao và khi nào. Bạn định hướng tầm nhìn sản phẩm và bạn thúc đẩy đội ngũ của mình hướng tới tầm nhìn đó.
Là người canh gác, bạn đang tháo bỏ trở ngại cho đồng đội. Bạn bảo vệ họ khỏi những trách nhiệm và áp lực, đồng thời giải quyết công việc có giá trị cao nhưng không tên.
Ví dụ: product manager viết thông số kỹ thuật sản phẩm, ghi chú cuộc họp và các test case. Mặc dù việc đó không thú vị nhưng làm tài liệu các sản phẩm để mọi người có cùng cách hiểu là rất quan trọng.
Tương tự, product manager cần phải giải quyết than phiền từ khách hàng và quản lý khủng hoảng.
Bạn sẽ làm việc với đủ loại người để tạo ra cơ chế thử nghiệm, sáng tạo và cải tiến mạnh mẽ.
Bạn chịu trách nhiệm cải thiện đội ngũ phát triển và doanh nghiệ, và bạn chịu trách nhiệm giữ vững sự hài lòng của khách hàng.
Trên hết, bạn cần chắt lọc những điều sau:
Dữ liệu định lượng từ các chỉ số lịch sử
Dữ liệu định tính từ nghiên cứu người dùng và phản hồi của khách hàng
Xu hướng thị trường
Phân tích cạnh tranh và những thức khác… giúp bạn đưa ra quyết định ROI cao nhất.
Từ việc chắt lọc thông tin này, product manager có trách nhiệm xếp ưu tiên các sản phẩm hoặc tính năng mà đội ngũ của họ nên tập trung cũng như thuyết phục đội ngũ và cấp trên để đạt được tầm nhìn mà họ đã đưa ra dựa trên phân tích và sự ưu tiên.
Một product manager giỏi cũng phải làm việc với những người còn lại trong nhóm để vạch ra một kế hoạch khả thi để thực hiện những ý tưởng được đề xuất này.
Khi tới thời điểm đội ngũ xây dựng sản phẩm, product manager phải đảm bảo các chi tiết đã được xử lý, tính toán tới các trường hợp đặc thù và đảm bảo sản phẩm đã được kiểm tra và sẵn sàng chuyển giao đúng hạn.
Ngay cả khi sản phẩm được chuyển giao, công việc vẫn chưa hoàn thành.
Product manager cần xác định sự thành công của sản phẩm bằng cách tìm hiểu khách hàng tương tác với sản phẩm ra sao.
Phản hồi này cung cấp cho product manager nhiều ngữ cảnh và dữ liệu cho việc hoàn thiện sản phẩm trong tương lai và cho phép họ lập kế hoạch cho các lộ trình tiếp theo.
Trách nhiệm của Product manager
Dưới đây là một số trách nhiệm hàng ngày mà product manager phải thực hiện.
1. Các cuộc họp đứng
Nếu công ty của bạn vận hành quy trình agile development, bạn có thể tổ chức nhiều “scrum” để đội ngũ họp lại với nhau và nói về những gì họ đã làm ngày hôm qua, những gì họ sẽ làm và có bất kỳ yếu tố nào ngăn cản bất kỳ ai thực hiện công việc.
Một người làm scrum giỏi sẽ định hướng các cuộc trao đổi và đảm bảo không ai đi quá sâu vào chi tiết của bất kỳ nhiệm vụ cụ thể nào.
Mục tiêu không nhất thiết là giải quyết mọi rào cản nào được đưa ra trong cuộc họp mà là giúp các thành viên trong nhóm họ có thể giải quyết các vấn đề bên ngoài cuộc họp.
Product manager cần giữ vai trò là scrum master, đặc biệt là trong các tổ chức tinh gọn không có sẵn scrum master về scrum riêng biệt có thể không có sẵn. Công việc của bạn là đảm bảo đội ngũ hoạt động trơn tru.
2. Nói chuyện với khách hàng
Cho dù gặp trực tiếp hay thông qua các phương tiện như customer support ticket, điện thoại hoặc cuộc gọi video, bạn nên dành thời gian cho khách hàng để hiểu rằng những gì đội ngũ đang xây dựng có đem lại giá trị cho khách hàng của bạn.
Thời gian với khách hàng cũng sẽ giúp bạn lập kế hoạch cho các tính năng sắp tới.
3. Quản lý product backlog
Bạn chịu trách nhiệm quản lý backlog tính năng sản phẩm và đảm bảo rằng đội ngũ của bạn không có bất kỳ thời gian nào giữa quá trình phát triển tính năng.
Bạn cần ưu tiên tính năng nào đội ngũ sẽ thực hiện trong các sprint sắp tới.
4. Lập kế hoạch chiến lược
Giám đốc sản phẩm không chỉ chịu trách nhiệm xác định các hạng mục công việc tiếp theo trước mắt của sản phẩm, mà còn cả chiến lược và tầm nhìn sản phẩm dài hạn.
Điều quan trọng là phải luôn đồng bộ với những thay đổi trong ngành và trong bối cảnh cạnh tranh và điều quan trọng là bạn phải có lập trường về tương lai sẽ như thế nào trong lĩnh vực của bạn.
Bạn không chỉ chịu trách nhiệm về kết quả hiện tại của sản phẩm mà còn về kết quả tương lai của sản phẩm trong 1 năm, 3 năm và 5 năm kể từ bây giờ.
Các product manager khác sẽ kì vọng bạn có tầm nhìn mà sản phẩm hướng tới và cũng mong rằng tầm nhìn đó sẽ kết hợp hiệu quả với tầm nhìn về sản phẩm của họ.
5. Thông số kỹ thuật
Bạn chịu trách nhiệm về thông số kỹ thuật toàn diện cho các tính năng và sản phẩm mới. Một phần của thông số kỹ thuật bao gồm mục tiêu kinh doanh, câu chuyện của người dùng, yêu cầu sản phẩm và bối cảnh của khách hàng.
Bạn cũng sẽ chịu trách nhiệm về wireframe và hành trình của người dùng như một phần trong thông số kỹ thuật.
Bạn nắm vững định nghĩa trải nghiệm người dùng tốt là như thế nào.
Trên hết, bạn cũng sẽ xem xét thông số kỹ thuật của mình với các thành viên còn lại trong đội phát triển.
Khi bạn nhận được nhiều ý kiến đóng góp hơn từ đội ngũ kỹ sư, đội ngũ sản phẩm và khách hàng, bạn sẽ tiếp tục tinh chỉnh thông số kỹ thuật của mình cho đến khi bạn quyết định nó đã sẵn sàng được xây dựng.
6. Họp với các đội ngũ khác
Bạn sẽ dành một phần thời gian đáng kể cho các cuộc họp.
Tùy vào quy mô của công ty, bạn sẽ dành thời gian cho các đội ngũ liên chức năng khác nhau như sales, marketing và phát triển kinh doanh.
Bạn cũng sẽ gặp ban điều hành để cập nhật cho họ về tiến độ hoặc giới thiệu với họ về tầm nhìn của bạn đối với sản phẩm và các nguồn lực khác.
Ngoài ra, bạn sẽ gặp khách hàng và người dùng để hiểu nỗi đau của họ và xác nhận xem sản phẩm của bạn có đáp ứng được nhu cầu của họ hay không.
Tại sao bạn cần phải tham gia nhiều cuộc họp như vậy?
Một trong những thách thức cốt lõi của tâm lý con người là cách truyền tải thông tin hiệu quả nhất là thông qua các cuộc họp.
Cho dù bạn viết email, người khác có thể không chú ý đến bạn. Rất tiếc, các cuộc họp trực tiếp là một trong những cách hiệu quả nhất để bạn truyền tải thông tin và để bạn nhận thông tin, ngay cả khi chúng tốn nhiều thời gian.
Theo nguyên tắc chung, bạn sẽ tham gia các cuộc họp liên tục trong giờ làm việc (ví dụ: 9 giờ sáng đến 5 giờ chiều) và bạn sẽ cần tìm thời gian bên ngoài cuộc họp để giải quyết công việc của mình, chẳng hạn như xác định phạm vi, phân tích dữ liệu và nghiên cứu thị trường.
Một số product manager thích làm việc vào sáng sớm, một số thích làm việc vào buổi tối muộn và một số thích làm việc vào cuối tuần.
7. Phân tích dữ liệu
Dữ liệu là yếu tố quan trọng để đưa ra các quyết định sản phẩm có đầy đủ thông tin, nhờ đó các PM có thể hiểu và lấy dữ liệu họ cần để chạy phân tích. SQL và Excel là phải bắt buộc nếu muốn chạy phân tích dữ liệu cơ bản.
Nếu bạn không hiểu dữ liệu, bạn sẽ gặp khó khăn trong việc xác định giá trị kinh doanh mà sản phẩm của bạn sẽ mang lại.
8. Tài liệu
Product manager có trách nhiệm đảm bảo thông tin đến đúng người vào đúng thời điểm.
Tài liệu là thành phần cốt lõi của luồng thông tin. Các product manager giỏi rất hiệu quả trong việc thu thập thông tin từ các nhóm khác nhau và tóm tắt các thông tin quan trọng nhất để chia sẻ với các bên liên quan.
Bạn chịu trách nhiệm ghi lại ngày phát hành, ghi chú phát hành, luồng người dùng, những điểm cần lưu ý, ghi chú cuộc họp và các loại bối cảnh tổ chức quan trọng khác. Một phần của thông số kỹ thuật bao gồm
Kỹ năng mà Product manager cần có
Nếu bạn phát triển ba kỹ năng cốt lõi sau đây, bạn sẽ phát triển thành một product manager giỏi ngay cả khi giải quyết khối lượng công việc khổng lồ về quản lý sản phẩm:
Đồng cảm và giao tiếp
Học hỏi nhanh và bền bỉ
Đặt cảm xúc qua một bên
Sự đồng cảm và giao tiếp là cần thiết vì công việc của bạn về cơ bản là tập trung vào việc lấp đầy khoảng trắng.
Bạn sẽ không biết khoảng trống nào là quan trọng nhất cần lấp đầy trừ khi bạn hiểu đầy đủ về khách hàng, doanh nghiệp và đội ngũ phát triển. Bạn cần đóng vai trò là người hòa giải cho cả ba nhóm, đó là lý do tại sao giao tiếp rất quan trọng.
Bạn cần cả sự đồng cảm và giao tiếp cùng một lúc – có cái này không có cái kia sẽ không đưa bạn đến được đâu.
Nếu bạn đồng cảm nhưng bạn không thể giao tiếp, bạn sẽ không thể chia sẻ bối cảnh giữa ba nhóm và điều đó sẽ dẫn đến sự suy giảm lòng tin.
Nếu bạn là người thích giao tiếp nhưng bạn không có sự đồng cảm, bạn cũng sẽ hủy hoại lòng tin vì bạn sẽ không định hình được thông điệp để nhắm vào nhu cầu của từng nhóm.
Sự bền bỉ và tốc độ học hỏi là cần thiết vì quản lý sản phẩm vốn dĩ là một khoảng không gian vô hạn.
Bạn cần phải có bản lĩnh vì bạn sẽ phải đối mặt với những quyết định khó khăn mỗi ngày và bạn sẽ luôn đối mặt với mâu thuẫn từ cả ba nhóm.
Bạn cần được ‘kết án’ trong sứ mệnh và niềm đam mê của mình, và bạn cần phải là người cổ vũ tinh thần và đại diện cho cả ba nhóm ngay cả khi thời điểm khó khăn.
Bạn cần học hỏi nhanh chóng vì khách hàng, doanh nghiệp và đội ngũ phát triển luôn thay đổi. Xu hướng ngành mới, đối thủ cạnh tranh mới, công nghệ mới và thậm chí là tuyển dụng mới có thể thay đổi hoàn toàn cách bạn làm việc.
Bạn cần cả sự bền bỉ và tốc độ học cùng một lúc – có cái này không có cái kia thì tương đối vô ích đối với bạn.
Nếu bạn chỉ có bền bỉ mà không có tốc độ học hỏi, bạn sẽ trở nên cứng nhắc và không thay đổi quyết định đủ nhanh khi có bằng chứng chống lại bạn. Và nếu bạn chỉ có tốc độ học hỏi mà không có sự bền bỉ, bạn sẽ nhanh kiệt sức và không thể gắn bó lâu dài.
Đặt cảm xúc qua một bên là cần thiết vì quản lý sản phẩm là vô hạn.
Bạn có hàng nghìn quyết định phải đưa ra mỗi ngày, bởi vì các product manager đều là người đưa ra quyết định.
Bạn có nên gửi tin nhắn đó không? Nếu vậy, gửi cho ai, khi nào, và bằng cách nào, với giọng điệu và nội dung nào? Bạn có nên nhận cuộc gọi của khách hàng này không? Nếu vậy, mục tiêu là gì? Nếu không, bạn sẽ làm thế nào để từ chối một cách khéo léo?
Nếu bạn không thể nhanh chóng xác định các yếu tố chính sẽ tạo nên hoặc phá vỡ công ty của mình, bạn sẽ chết chìm trong tình trạng tê liệt phân tích hoặc bạn sẽ quá tải với công việc ập tới.
Bạn phải biết khi nào nên từ chối và khi nào nên ủy thác – bạn không thể tự mình làm tất cả, vì vậy việc sắp xếp thứ tự ưu tiên là rất quan trọng.
Phân loại product manager
Có nhiều cách quản lý sản phẩm khác nhau, đặc biệt vì trách nhiệm của product manager phụ thuộc rất nhiều vào ngành, công ty, mô hình kinh doanh và sản phẩm.
Do sự đa dạng này, có rất nhiều hoạt động hàng ngày, nhưng một product manager vẫn chịu trách nhiệm làm bất cứ điều gì cần thiết để cộng tác với nhiều nhóm.
Dưới đây là một số yếu tố giúp phân biệt các nhà quản lý sản phẩm:
Mô hình phân phối: B2C so với B2B so với B2B2C
Tài trợ: Các nhà đầu tư bên ngoài so với bootstrapped (vốn tự thân)
Nền tảng: Web so với di động so với phần mềm và phần cứng
Quy định: Các ngành được quản lý cao so với các ngành không được kiểm soát
Quy mô: Công ty lớn so với công ty nhỏ
Định vị: Nội bộ (dữ liệu, nền tảng, API) so với bên ngoài
Thuộc tính khách hàng: Người dùng am hiểu công nghệ so với người dùng không hiểu biết về công nghệ, độ tuổi, địa lý
Vòng đời: Sản phẩm trưởng thành so với sản phẩm mới
Một lần nữa, bản chất của vai trò của product manager đến từ khách hàng, loại sản phẩm và đội ngủ phát triển.
Ngay cả trong cùng một công ty, các product manager khác nhau có thể có các mô tả công việc rất khác nhau với nhau, bởi vì loại khách hàng mà họ phục vụ và loại đội ngũ phát triển mà họ làm việc có thể hoàn toàn khác nhau.
Nói chung, các product manager có thể tham gia vào các quyết định “khi nào”, “cái gì” và “như thế nào” liên quan đến sản phẩm. Vì lý do này, một số PM có thể được coi là CEO của sản phẩm.
Điều đó đòi hỏi một lượng lớn kiến thức, bao gồm một số kiến thức know-hơ và sự hiểu biết sâu sắc về product leadership.
Java là một ngôn ngữ lập trình hướng đối tượng (object-oriented), dựa trên lớp (class-based), có mục đích chung, được thiết kế để giảm bớt sự phụ thuộc triển khai. Nó là một nền tảng điện toán (computing platform) phục vụ cho việc phát triển ứng dụng.
Java là gì? Ảnh: Lampalampa
Nó được đánh giá là một trong những ngôn ngữ lập trình nhanh, an toàn và đáng tin cậy được hầu hết các tổ chức ưa thích để xây dựng các dự án của họ.
Java được sử dụng rộng rãi để phát triển các ứng dụng Java trong máy tính xách tay, trung tâm dữ liệu, game consoles, siêu máy tính khoa học, thiết bị di động,…
Dừng lại chút nào, nếu bạn đang #open_to_work, thử nghía qua các công việc đang tuyển trên Gamba nhé. Vào LINK NÀY để xem các job Data hoặc scan QR Code ở bên dưới nhé.
Xem và ứng tuyển các job “java”
Nền tảng Java là gì?
Nền tảng Java là một tập hợp các chương trình giúp lập trình viên phát triển và chạy các ứng dụng lập trình Java một cách hiệu quả.
Nó bao gồm một công cụ thực thi (execution engine), một trình biên dịch (complier) và một bộ thư viện trong đó.
Nó là một tập hợp các thông số kỹ thuật và phần mềm máy tính.
James Gosling đã phát triển nền tảng Java tại Sun Microsystems và Tập đoàn Oracle sau đó đã mua lại nó.
Java được sử dụng để làm gì?
Dưới đây là một số ứng dụng quan trọng của Java:
Sử dụng để phát triển các ứng dụng Android
Giúp bạn tạo Phần mềm cho Doanh nghiệp
Nhiều ứng dụng java trên Mobile
Các ứng dụng điện toán phụ vụ cho khoa học (Scientific computing)
Sử dụng cho Phân tích dữ liệu lớn (Big data)
Lập trình Java cho các thiết bị phần cứng
Sử dụng cho các Công nghệ phía máy chủ như Apache, JBoss, GlassFish,…
Lịch sử của ngôn ngữ lập trình Java
Dưới đây là những dấu mốc quan trọng trong lịch sử của ngôn ngữ Java:
Ban đầu được gọi là OAK.
Ban đầu, nó được phát triển để xử lý các thiết bị di động và hộp giải mã tín hiệu. OAK là một thất bại lớn.
Năm 1995, Sun đổi tên thành “Java” và sửa đổi ngôn ngữ để tận dụng lợi thế của xu hướng kinh doanh www (World Wide Web) ngày càng phát triển.
Năm 2009, Tập đoàn Oracle mua lại Sun Microsystems và nắm quyền sở hữu ba tài sản phần mềm chính của Sun: Java, MySQL và Solaris.
Các phiên bản Java
Dưới đây là lịch sử tóm tắt của tất cả các phiên bản Java với ngày phát hành của nó.
Ngày phát hành phiên bản:
JDK Alpha và Beta 1995
JDK 1.0 ngày 23 tháng 1 năm 1996
JDK 1.1 ngày 19 tháng 2 năm 1997
J2SE 1.2 ngày 8 tháng 12 năm 1998
J2SE 1.3 ngày 8 tháng 5 năm 2000
J2SE 1.4 ngày 6 tháng 2 năm 2002
J2SE 5.0 ngày 30 tháng 9 năm 2004
Java SE 6 ngày 11 tháng 12 năm 2006
Java SE 7 ngày 28 tháng 7 năm 2011
Java SE 8 ngày 18 tháng 3 năm 2014
Java SE 9 ngày 21 tháng 9 năm 2017
Java SE 10 ngày 20 tháng 3 năm 2018
JAVA SE 11 ngày 25 tháng 9 năm 2018
JAVA SE 12 19 tháng 3, 2019
JAVA SE 13 ngày 17 tháng 9 năm 2019
JAVA SE 14 ngày 17 tháng 3 năm 2020
JAVA SE 15 ngày 15 tháng 9 năm 2020 (Phiên bản Java mới nhất)
Các tính năng của Java
Java cung cấp nhiều tính năng hấp dẫn:
Ngôn ngữ độc lập với nền tảng
Thư viện tiêu chuẩn phong phú giúp việc lập trình trở nên dễ dàng. Bạn có thể tạo toàn bộ một ứng dụng độc lập bằng Java.
Java hỗ trợ cấp phát và giải phóng bộ nhớ tự động (được gọi là thu gom rác).
Mang lại hiệu suất tuyệt vời nhờ hỗ trợ đa luồng và đồng thời, nhờ đó Java trở thành một ngôn ngữ có tính tương tác và đáp ứng cao.
An toàn và đơn giản
Các thành phần của ngôn ngữ lập trình Java
Lập trình viên Java viết một chương trình bằng ngôn ngữ mà con người có thể đọc được gọi là Mã nguồn (Source Code).
Vì vậy, CPU hoặc Chip không bao giờ hiểu được mã nguồn được viết bằng bất kỳ ngôn ngữ lập trình nào.
Những máy tính hoặc chip này chỉ hiểu được một thứ, nó gọi là ngôn ngữ máy hoặc mã máy (machine code). Các mã máy này chạy ở cấp độ CPU. Do đó, với model CPU khác nhau thì mã máy sẽ khác nhau.
Tuy nhiên, bạn không cần bận tâm tới mã máy, vì lập trình chủ yếu là về mã nguồn. Máy sẽ hiểu mã nguồn này và chuyển chúng thành mã máy có thể hiểu được, tức là mã thực thi.
Tất cả các chức năng này xảy ra bên trong 3 thành phần nền tảng Java sau:
3 Thành phần của Java. Ảnh: facingissuesonit.com
Bộ phát triển Java (JDK)
JDK là một môi trường phát triển phần mềm được sử dụng để tạo các ứng dụng applet và Java. Dạng đầy đủ của JDK là Java Developement Kit (Bộ công cụ phát triển Java).
Các nhà phát triển Java có thể sử dụng JDK trên Windows, macOS, Solaris và Linux. JDK giúp họ viết code và chạy các chương trình Java. Có thể cài đặt nhiều phiên bản JDK trên cùng một máy tính.
Đây là những lý do chính để sử dụng JDK:
JDK chứa các công cụ cần thiết để viết các chương trình Java và JRE (Môi trường chạy Java – Java Run Environment) để thực thi chúng.
Nó bao gồm một trình biên dịch (compiler), trình khởi chạy ứng dụng Java (application launcher), Appletviewer,…
Trình biên dịch chuyển đổi mã được viết bằng Java thành mã byte.
Trình khởi chạy ứng dụng Java mở một JRE, tải lớp (class) cần thiết và thực thi phương thức chính của nó.
Máy ảo Java (JVM)
Máy ảo Java (JVM – Java Virtual Machine) là một công cụ cung cấp môi trường runtime để chạy code hoặc ứng dụng Java.
Nó chuyển đổi Java bytecode thành ngôn ngữ máy. JVM là một phần của JRE (Java Run Environment).
Ở những ngôn ngữ lập trình khác, trình biên dịch tạo ra mã máy cho một hệ thống cụ thể. Còn trình biên dịch Java thì tạo ra mã cho Máy ảo được gọi là Máy ảo Java.
Dưới đây là những lý do quan trọng của việc sử dụng JVM:
JVM cung cấp cách thực thi mã nguồn Java độc lập với nền tảng.
JVM có nhiều thư viện, công cụ và framework.
Khi bạn chạy một chương trình Java, bạn có thể chạy trên bất kỳ nền tảng nào và tiết kiệm rất nhiều thời gian.
JVM đi kèm với trình biên dịch JIT (Just-in-Time) giúp chuyển đổi mã nguồn Java thành ngôn ngữ máy cấp thấp. Do đó, nó chạy nhanh hơn một ứng dụng thông thường.
Môi trường runtime Java (JRE)
JRE (Java Run Environment) là một phần của phần mềm được thiết kế để chạy phần mềm khác. Nó bao gồm các thư viện lớp (class library), bộ nạp lớp (class loader) và JVM.
Nói một cách dễ hiểu, nếu bạn muốn chạy một chương trình Java, bạn cần có JRE. Nếu bạn không phải là lập trình viên, bạn không cần cài đặt JDK mà chỉ cần JRE để chạy các chương trình Java.
Dưới đây là những lý do chính của việc sử dụng JRE:
JRE chứa các thư viện lớp (class library), JVM và các tệp hỗ trợ khác. Nó không bao gồm bất kỳ công cụ nào để phát triển Java như trình gỡ lỗi, trình biên dịch, v.v.
Nó sử dụng các gói chứa lớp (class package) quan trọng như math, swing, using, lang, awt và thư viện runtime.
Nếu bạn muốn chạy Java applet, thì hệ thống phải cài đặt JRE.
Các loại nền tảng Java khác nhau
Các loại nền tảng Java. Ảnh: CitizenChoice
Có bốn loại nền tảng ngôn ngữ lập trình Java khác nhau:
1. Nền tảng Java, Phiên bản tiêu chuẩn (Java SE)
API của Java SE cung cấp chức năng lõi của ngôn ngữ lập trình Java. Nó xác định tất cả các nền tảng về kiểu và đối tượng cho các lớp cấp cao.
Nó được sử dụng để kết nối mạng, bảo mật, truy cập cơ sở dữ liệu, phát triển giao diện người dùng đồ họa (GUI) và phân tích cú pháp XML.
2. Nền tảng Java, Phiên bản Doanh nghiệp (Java EE)
Nền tảng Java EE cung cấp API và môi trường runtime để phát triển và chạy các ứng dụng mạng có khả năng mở rộng cao, quy mô lớn, nhiều tầng, đáng tin cậy và an toàn.
3. Nền tảng ngôn ngữ lập trình Java, phiên bản Micro (Java ME)
Nền tảng Java ME cung cấp một API và một máy ảo kích thước nhỏ chạy các ứng dụng ngôn ngữ lập trình Java trên các thiết bị nhỏ, như điện thoại di động.
4. Java FX
JavaFX là một nền tảng để phát triển các ứng dụng internet phong phú bằng cách sử dụng API giao diện người dùng nhẹ.
Nó sử dụng các media engine và đồ họa tối ưu phần cứng giúp cho Java tận dụng các máy khách hiệu suất cao và các API giao diện hiện đại, cấp cao để kết nối với các nguồn dữ liệu được kết nối.
Kỹ thuật phần mềm (Software Engineering) liên quan đến việc phát triển và bảo trì tất cả phần mềm chúng ta sử dụng hàng ngày, từ các công cụ năng suất (productivity tool) đến trình duyệt web.
Nhu cầu đối với developer trên thế giới là rất lớn, vì nhiều lĩnh vực kinh doanh tiếp tục phụ thuộc lớn vào công nghệ. Do đó, các kỹ sư phần mềm (software engineer) kiếm được một mức lương ấn tượng và có triển vọng việc làm mạnh mẽ.
Bài viết này sẽ nói về cách trở thành kỹ sư phần mềm, cung cấp cho bạn thông tin cần thiết để quyết định xem nghề nghiệp này có phù hợp với bạn hay không.
Kỹ thuật phần mềm là gì (Software Engineering)?
Kỹ thuật phần mềm (software engineering) là việc áp dụng các khái niệm kỹ thuật vào phát triển phần mềm. Mục tiêu chính của nó là tạo ra, cải tiến và bảo trì phần mềm.
Kỹ thuật phần mềm tính đến các khía cạnh kỹ thuật như môi trường phần cứng và phần mềm khi làm việc trên một chương trình.
Một ngày của Kỹ sư phần mềm (Software Engineer). Ảnh: careerkarma.com
Dù mô tả công việc của kỹ sư phần mềm thường trùng lặp nhiều với nhà phát triển phần mềm (software developer), nhưng kỹ sư phần mềm (software engineer) và nhà phát triển phần mềm (software developer) lại không giống nhau.
Sự khác biệt chính là các kỹ sư phần mềm áp dụng các khái niệm và nguyên tắc kỹ thuật khi phát triển phần mềm.
Phạm vi làm việc của kỹ sư không giới hạn ở việc viết code và họ còn làm việc cả trên môi trường mà chương trình sẽ hoạt động.
Kỹ sư phần mềm (Software Engineer) làm gì?
Kỹ sư phần mềm sẽ tạo, duy trì và quản lý nhiều loại ứng dụng phần mềm khác nhau. Dưới đây là một số nhiệm vụ của kỹ sư phần mềm.
Cập nhật các chương trình: Kỹ sư phần mềm đảm bảo chương trình chạy trơn tru qua các bản cập nhật và sửa lỗi.
Tạo chương trình mới: Kỹ sư phần mềm thiết kế và tạo ra chương trình mới cho người dùng.
Phân tích: Kỹ sư phần mềm xem xét các nhu cầu của tổ chức và tạo ra phần mềm để đáp ứng các nhu cầu đó.
Theo dõi quá trình phát triển phần mềm: Việc tạo phần mềm thường liên quan đến công việc của nhiều nhóm. Các kỹ sư phần mềm theo dõi mã nội bộ và đảm bảo ứng dụng đáp ứng nhu cầu của người dùng.
Phạm vi nhiệm vụ của kỹ thuật phần mềm sẽ tùy vào tổ chức và quy mô của nhóm phát triển.
Trách nhiệm của kỹ sư phần mềm có thể bao gồm thiết kế, phát triển và bảo trì toàn bộ sản phẩm. Chúng cũng có thể chỉ đơn giản là giúp cấu trúc code của một ứng dụng trong các nhóm lớn hơn.
Thông thường, các kỹ sư phần mềm sẽ phải làm việc với nhà phát triển (developer), khách hàng và các bên liên quan khác để đáp ứng nhu cầu thiết kế cho sản phẩm của họ.
Một số vai trò kỹ thuật phần mềm bao gồm trí tuệ nhân tạo, trong khi những vai trò khác có thể là quản lý các chương trình ở phía máy chủ.
Dù với vai trò nào, một kỹ sư phần mềm sẽ sử dụng các ngôn ngữ lập trình để viết và duy trì nhằm đáp ứng một nhu cầu nhất định.
Các loại kỹ sư phần mềm
Nếu bạn muốn lấn sân sang lĩnh vực kỹ thuật công nghệ, bước đầu tiên là tìm ra lộ trình sự nghiệp mà bạn muốn nhắm đến. Hãy xem qua một số lộ trình phổ biến đối với kỹ sư phần mềm.
Kỹ sư phần mềm
Kỹ sư phần mềm phát triển phần mềm cho các thiết bị điện tử. Các nhà phát triển này sử dụng các ngôn ngữ lập trình như C ++, Java và Python để tạo các ứng dụng chạy trên máy tính.
Họ làm việc trên cả giao diện người dùng lẫn back-end, liên quan tới những gì người dùng nhìn thấy và cơ chế hoạt động đằng sau của một chương trình.
Kỹ sư hệ thống nhúng (Embedded System Engineer)
Các kỹ sư này chịu trách nhiệm thiết kế, phát triển, thử nghiệm và bảo trì các hệ thống nhúng. Hệ thống nhúng là sự kết hợp phần cứng và phần mềm được thiết kế để thực hiện các nhiệm vụ cụ thể.
Ví dụ, một kỹ sư hệ thống nhúng có thể làm việc trên phần mềm hỗ trợ máy ATM hoặc chương trình điều khiển rô bốt.
Kỹ sư bảo mật (Security Engineer)
Kỹ sư bảo mật chịu trách nhiệm tạo ra các hệ thống, phương pháp và chính sách để đảm bảo hệ thống thông tin đáp ứng các tiêu chuẩn nhất định và không có lỗi bảo mật.
Các kỹ sư bảo mật thường hoạt động như hacker “mũ trắng” và cố gắng đột nhập vào các hệ thống hiện có để xác định xem có vấn đề bảo mật nào tồn tại hay không.
Kỹ sư đảm bảo chất lượng (Quality Assurance)
Các kỹ sư Đảm bảo chất lượng (QA) sẽ viết, xem xét, kiểm tra và bảo trì phần mềm.
Các kỹ sư này chịu trách nhiệm đảm bảo nhóm phát triển viết mã có chất lượng nhất quán. Họ tạo ra các tiêu chuẩn và chính sách để đảm bảo tất cả mã hiệu quả và hoạt động chính xác.
Học Kỹ thuật phần mềm
Có nhiều lộ trình bạn có thể đi theo để trở thành một kỹ sư phần mềm, nhưng phổ biến nhất thường tuân theo các bước sau:
Chọn một lộ trình sự nghiệp kỹ thuật phần mềm.
Tìm hiểu về kỹ thuật phần mềm thông qua bootcamp, tự học hoặc đại học.
Phát triển và tinh chỉnh các kỹ năng kỹ thuật của bạn trong khi xây dựng hồ sơ năng lực của bạn.
Chuẩn bị và bắt đầu tìm kiếm việc làm.
Mất bao lâu để học Kỹ thuật phần mềm?
Có thể mất từ sáu tháng đến bốn năm để học kỹ thuật phần mềm.
Nếu bạn tham gia vào một khóa học hoặc chương trình đào tạo về lập trình, trung bình bạn có thể trở thành một kỹ sư phần mềm trong vòng sáu tháng đến một năm.
Ngoài ra, bạn có thể nhận được một nền giáo dục chính quy về kỹ thuật phần mềm bằng cách theo học bằng cử nhân bốn năm trong lĩnh vực này.
Cách học Kỹ thuật phần mềm: Từng bước
Có ba lộ trình phổ biến để học kỹ thuật phần mềm, đó là:
Theo đuổi bằng khoa học máy tính tại một trường cao đẳng hoặc đại học.
Tham dự khóa đào tạo lập trình chuyên về kỹ thuật phần mềm.
Tìm hiểu kỹ thuật phần mềm thông qua tự học.
Mỗi lộ trình đều có những lợi ích và hạn chế của nó.
Trước đây, chỉ những sinh viên tốt nghiệp đại học mới đủ điều kiện cho các vai trò kỹ sư phần mềm chuyên nghiệp, nhưng điều đó đã thay đổi trong vài năm qua.
Nhiều kỹ sư phần mềm gần đây đã phát triển mạnh trong lĩnh vực này mặc dù đã tự học và không được đào tạo chính quy về lập trình.
Tuy nhiên, có một phương án khác ngày càng phổ biến: Coding bootcamps.
Chương trình đào tạo lập trình cung cấp một giải pháp thay thế khả thi cho giáo dục đại học truyền thống.
Trong chương trình đào tạo này, bạn sẽ học được tất cả các kỹ năng thiết thực mà bạn cần để thành công trong sự nghiệp phát triển phần mềm (software developement).
Ngoài ra, hầu hết các bootcamp đều cung cấp một hệ thống hỗ trợ nghề nghiệp mạnh mẽ cho sinh viên và sinh viên mới tốt nghiệp.
Bạn sẽ làm việc với người cố vấn (mentor) và người hướng dẫn để học các kỹ năng mới và xây dựng porfolio để giới thiệu kỹ năng và khả năng của bạn với các nhà tuyển dụng tiềm năng. Họ thậm chí còn trợ giúp khi bạn tìm kiếm việc làm.
Mức lương của Kỹ sư phần mềm?
Bạn có thể kiếm được bao nhiêu từ nghề Kỹ sư phần mềm. Ảnh: Glassdoor
$ 188,000
$ 120,000
$ 50,000
Kỹ sư trình độ Senior
Kỹ sư trình độ Middle
Kỹ sư trình độ Junior
Khóa học và chương trình đào tạo kỹ thuật phần mềm
Các chương trình đào tạo kỹ sư phần mềm là một giải pháp thay thế khả thi cho giáo dục cao đẳng hoặc đại học. Một trong những loại chương trình phổ biến nhất là dưới dạng bootcamps.
Dưới đây là danh sách một số bootcamps được đánh giá cao nhất và phổ biến nhất trong kỹ thuật phần mềm.
Khóa học kỹ thuật phần mềm trực tuyến
App Academy
App Academy là một trường học lập trình cung cấp cả chương trình đào tạo trực tiếp và trực tuyến.
Không có chi phí học phí cho đến khi bạn được thuê trong vai trò kỹ sư phần mềm và kiếm được hơn 50.000 đô la.
App Academy đã đưa hơn 3.000 người vào các vị trí kỹ sư phần mềm toàn thời gian, thu về mức lương trung bình là 80.000 đô la.
Các cựu sinh viên của chương trình bootcamp làm việc tại hơn 1.000 công ty trên khắp thế giới, chẳng hạn như Twitter, Netflix, Apple và Google.
Flatiron School
Flatiron School cung cấp các chương trình trực tuyến và trực tiếp về kỹ thuật phần mềm.
Sinh viên tham gia vào một chương trình giảng dạy nghiêm ngặt phù hợp với nhu cầu của thị trường. Flatiron School dạy học sinh cách suy nghĩ và làm việc như một kỹ sư phần mềm.
Ứng viên phải nộp đơn đăng ký bằng văn bản nêu rõ lý do đăng ký tham gia chương trình đào tạo. Các em cũng phải học một số kỹ năng cơ bản để đủ điều kiện tham gia các chương trình nhập vai thông qua các khóa học dự bị miễn phí của Flatiron School.
Thinkful
Thinkful là một chương trình đào tạo trực tuyến cung cấp khóa học kéo dài bảy tháng về kỹ thuật phần mềm.
Các khóa học được thực hiện toàn thời gian hoặc bán thời gian.
Suốt chương trình, sinh viên sẽ được kèm cặp bởi một cố vấn cá nhân, huấn luyện viên nghề nghiệp và người quản lý thành công trong học tập. Họ cũng tham gia vào một mạng lưới đồng đẳng hỗ trợ để giúp đảm bảo thành công.
Trong một số khóa học, sinh viên đủ điều kiện được Thinkful đảm bảo học phí. Nghĩa là nếu một sinh viên không tìm được việc làm trong vòng sáu tháng sau khi tốt nghiệp, họ sẽ được trả lại tiền.
Rithm School
Rithm School là một chương trình kỹ thuật phần mềm toàn thời gian kéo dài 17 tuần.
Được thành lập bởi một đội ngũ giảng viên giàu kinh nghiệm, chú trọng vào quy mô lớp học nhỏ. Mỗi lớp học giới hạn 18 học viên với ba giảng viên giàu kinh nghiệm.
Chương trình học tập trung vào Python, SQL, Node, React, Cấu trúc dữ liệu và Thuật toán.
Không giống như các chương trình đào tạo lập trình khác, sinh viên dành ba tuần để ký hợp đồng cho các công ty và tích lũy kinh nghiệm chuyên môn.
Những kỹ năng hàng đầu của Kỹ sư phần mềm (Software Engineer). Ảnh: careerkarma.com
Sách kỹ thuật phần mềm
Ngoài các khóa học và chứng chỉ, sách kỹ thuật phần mềm có thể mở rộng kiến thức của bạn một cách đáng kể.
Những cuốn sách này chứa đầy lời khuyên và thông tin hữu ích về lĩnh vực này.
Cho dù bạn là người mới bắt đầu hay một chuyên gia có kinh nghiệm, sau đây là những tài nguyên hữu ích cho bất kỳ kỹ sư phần mềm nào
Cracking the Coding Interview
Cracking the Coding Interview: 189 Programming Questions and Solutions - Gayle Laakmann McDowell
Cracking the Coding Interview – Sách về Kỹ thuật phần mềm
Nếu bạn ứng tuyển vào vị trí kỹ sư phần mềm, bạn có thể phải tham gia một cuộc phỏng vấn viết code.
Cuốn sách này giúp bạn tìm kiếm các chi tiết ẩn trong các câu hỏi viết code, chia nhỏ vấn đề thành các phần có thể quản lý được và cải thiện khả năng học các khái niệm của bạn.
Ngoài ra còn có 189 câu hỏi phỏng vấn và cách giải quyết trong cuốn sách, sẽ giúp bạn chuẩn bị cho cuộc phỏng vấn tiếp theo.
Code Complete
Code Complete: A Practical Handbook of Software Construction - Steve McConnell
Code Complete – Sách về Kỹ thuật phần mềm
Code Complete là một phân tích về xây dựng phần mềm. Nó được viết tốt và được coi là một tiêu chuẩn công nghiệp.
Thực tế, mọi lập trình viên ít nhất nên đọc qua cuốn sách này. Nó bao gồm các chủ đề về thiết kế, coding, testing và debugging.
Cuốn sách này đặc biệt hữu ích cho những người có một số kinh nghiệm chuyên môn ban đầu về lập trình.
Tuy nhiên, những người mới bắt đầu sẽ tự tin hơn khi làm phần mềm sau khi đọc cuốn sách này.
The Clean Coder
The Clean Coder: A Code of Conduct for Professional Programmers - Robert Martin
The Clean Coder – sách học kỹ thuật phần mềm
Cuốn sách này dạy cho bạn tất cả về các nguyên tắc, công cụ, kỹ thuật và thực hành của nghề làm phần mềm, kèm với lời khuyên thực tế về coding, testing, refactoring và estimating.
Sau khi đọc cuốn sách, bạn sẽ học được cách giải quyết những xung đột, những quản lý khó tính và lịch trình chặt chẽ.
Bạn còn học được cách tạo môi trường cho developer phát triển mạnh mẽ, tránh tình trạng kiệt sức và tham gia vào luồng coding.
Introduction to Algorithms
Introduction to Algorithms - Thomas H. Cormen
Introduction to Algorithms – sách học về Kỹ thuật phần mềm
Đây là một hướng dẫn tuyệt vời cho tất cả các loại thuật toán. Là một phần cần thiết của kỹ thuật phần mềm, cuốn sách này bao gồm mọi thứ cho người mới bắt đầu cũng như các chuyên gia.
Bạn sẽ tìm hiểu về các thuật toán nhanh, thuật toán thời gian đa thức, lý thuyết đồ thị (graph theory), hình học tính toán (computational geometry) và cấu trúc dữ liệu (data structure). Nó thậm chí còn đưa ra một số ví dụ thông qua mã giả (pseudo-code).
The Pragmatic Programmer
The Pragmatic Programmer - David Thomas và Andrew Hunt
The Pragmatic Programmer – Sách học về Kỹ thuật phần mềm
Cuốn sách này chứa đầy những lời khuyên chuyên môn và kỹ thuật giúp bạn trở thành một kỹ sư phần mềm giỏi hơn.
Cuốn sách xem xét ý nghĩa của việc trở thành một nhà phát triển hiện đại, khám phá các chủ đề từ kỹ thuật kiến trúc đến phát triển nghề nghiệp. Khi đến trang cuối cùng, bạn sẽ học được cách lập trình thích ứng, linh hoạt và động.
Chứng chỉ Kỹ thuật Phần mềm
Một bước khác giúp bạn nổi bật trong quá trình phỏng vấn xin việc là kiếm chứng chỉ.
Chứng chỉ giống như bài kiểm tra cho phép nhà tuyển dụng biết bạn có đáp ứng một kỹ năng hoặc kiến thức nhất định cần thiết cho một công nghệ cụ thể.
Dưới đây là một số chứng chỉ hữu ích nhất dành cho kỹ sư phần mềm:
Đây là một cộng đồng trực tuyến lớn, với hàng trăm nghìn thành viên trên trang web. Nó kết nối các lập trình viên có kinh nghiệm, cho phép họ chia sẻ thông tin với nhau.
Trang web có các hướng dẫn lập trình chi tiết, các đoạn mã và một diễn đàn giúp bạn có thể nhận được bất kỳ hỗ trợ kỹ thuật phần mềm nào.
Trang này là một công cụ giáo dục trực tuyến. Nó toàn diện và bao gồm một loạt các chủ đề như Ruby, SQL, C ++, Python, C #, HTML, PHP và một vài chủ đề khác.
Mặc dù việc lập trình có thể phức tạp, nhưng tài nguyên trên đây rất đơn giản và dễ hiểu, giúp bạn dễ dàng bắt đầu.
Codecademy là một trang web tương tác dành cho các lập trình viên. Trang web cung cấp quyền truy cập vào một chương trình miễn phí giúp xây dựng kỹ năng phát triển web.
Có các chương trình dạy bạn các ngôn ngữ lập trình cụ thể. Trang web cũng cho phép sinh viên soạn thảo chương trình giảng dạy của họ và làm việc theo tốc độ của họ.
Tóm lại về kỹ thuật phần mềm
Lộ trình
Chứng chỉ Bootcamp, bằng cử nhân hoặc tự học
Các kỹ năng kỹ thuật cần thiết
Kiểm thử và gỡ lỗi phần mềm, lập trình, thiết kế hướng đối tượng, cấu trúc dữ liệu và thuật toán, dịch vụ web và API
Kỹ năng mềm cần thiết
Làm việc theo nhóm, chú ý đến chi tiết, giải quyết vấn đề
Bài học từ lối sống đơn giản của người Nhật. Ảnh: japanahome
Trong những năm gần đây, Châu Âu đã tạo nên sự mê hoặc cho chủ nghĩa tối giản và lối sống đơn giản, tự nhiên của người Scandinavia. Tuy nhiên, người Scandinavi không phải là những người duy nhất yêu thích sự đơn giản – hãy nhìn vào lối sống tối giản của người Nhật.
Bất chấp khoảng cách rộng lớn của họ, Nhật Bản và Thụy Điển có độ nhạy thiết kế tương tự nhau.
Giống như Scandinavia, Nhật Bản đề cao các nguyên tắc thiết kế sử dụng vật liệu tự nhiên, đường nét sạch sẽ và xây dựng hoặc cắt gọt đơn giản.
Bài học từ lối sống đơn giản của người Nhật. Ảnh: japanahome
Cả hai nền văn hóa đều ưa chuộng phong cách thẩm mỹ tươi vui, không trang trí cầu kì.
Chủ nghĩa tối giản (Minimalism) từ lâu đã gắn liền với nghệ thuật. Phong trào “ít là nhiều” này bắt đầu từ những năm 1960, từ đó đã xâm nhập vào nhiều khía cạnh khác nhau của cuộc sống.
Trong khi ở phương Tây, tất cả đều đang điên cuồng cố gắng trở nên nhiều hơn, mua nhiều hơn, đạt được nhiều hơn và kiếm được nhiều hơn, cuối cùng chúng ta đã hiểu rằng sống đơn giản là điều cần thiết để có thể tận hưởng sự phong phú, loại bỏ căng thẳng.
Dưới đây là 6 bài học từ lối sống tối giản của người Nhật mà chúng tôi đã học được và đưa vào cuộc sống của mình.
Dừng lại chút nào, nếu bạn đang #open_to_work, thử nghía qua các công việc đang tuyển trên Gamba nhé. Vào LINK NÀY để xem các job ‘Japanese’ hoặc scan QR Code ở bên dưới nhé.
Xem và ứng tuyển các ‘Japanese” job
Hy vọng bạn sẽ tận dụng chúng một cách hiệu quả.
6 Bài học từ lối sống tối giản của người Nhật
1. Loại bỏ những thứ kiềm hãm
Chìa khóa cho sự hiệu quả nổi tiếng của Nhật Bản?
Nếu điều gì đó làm họ cản trở hoặc không “khơi dậy niềm vui” (có thể là thói quen, thức ăn, con người), họ chỉ cần từ bỏ nó.
Loại bỏ những thứ kềm hãm, tiêu cực. Ảnh: nytimes.com
Không có thỏa hiệp cho sự chịu đựng. Giữ những điều xấu nhỏ nhặt đó trong cuộc sống của bạn thực ra khó hơn việc loại bỏ nó hoàn toàn.
Bằng cách buông bỏ, chúng ta chỉ đơn giản là không cần phải suy nghĩ nhiều về điều đó.
Nghiên cứu cho thấy chúng ta có một lượng ý chí hữu hạn, nhưng nếu chúng ta có thể chuyển một thói quen sang cơ chế tự động, thì bạn sẽ không cần nỗ lực để duy trì.
Hãy lên danh sách: điều gì làm bạn chậm lại, tiêu hao năng lượng của bạn, khiến bạn mất tinh thần, cảm thấy thoải mái trong hai giây còn hơn là kéo bạn xuống với cảm giác tội lỗi và hối hận trong suốt thời gian còn lại trong ngày.
Bạn sẵn sàng bỏ qua cái nào?
Bí quyết ở đây là phải thực tế, không duy tâm. Chắc chắn, chúng ta muốn kiêng caffein, rượu, đường hoặc Internet, nhưng tất cả chúng ta đều là con người và đều có những điểm yếu của mình.
Thay vào đó, mỗi chúng ta nên tập trung vào việc cắt giảm chỉ hai, ba thứ trở ngại lớn đối với sự tỉnh táo của bản thân.
2. Không gian âm: Yêu thích khoảng trống
Ở Nhật, có một phong cách thẩm mỹ được gọi là amor vacuii… tình yêu sự trống rỗng, bởi vì đó là điều thúc đẩy khái niệm văn hóa được gọi là “Ma Ma” (phát âm là “maah”) không phải là sự vật, mà là không gian giữa chúng.
Đó là về không gian âm, khoảng trống, sự trống rỗng.
Yêu thích Không gian âm – khoảng trống. Ảnh: qz.com
Và nó được yêu thích trong tất cả mọi thứ từ nội thất, kiến trúc và thiết kế sân vườn cho đến âm nhạc, cắm hoa và thơ ca. Và nó có thể được tìm thấy trong hầu hết các khía cạnh của cuộc sống Nhật Bản.
Coco Chanel nổi tiếng đã khuyên rằng,
“Trước khi bạn ra khỏi nhà, hãy nhìn vào gương và cởi bỏ một thứ.”
Chẳng hạn, trong khi loại bỏ một chiếc khăn, có thể không để lộ không gian âm, nó tạo chỗ cho các phụ kiện khác tỏa sáng.
Theo một cách nào đó, Ma cũng làm như vậy.
Trong một ngôi nhà giống như trong một cuộc sống có quá nhiều thứ, không có gì được làm nổi bật.
Thật khó để chúng ta định giá được mọi thứ khi chúng ta sống trong vô vàn lựa chọn, xung quanh là sự hỗn loạn.
Nhưng bằng cách tập trung vào và mở rộng không gian mà ở đó không có hoặc ít có gì bên cạnh, những thứ bạn quyết định giữ ở đó sẽ được ưu tiên và coi trọng.
Một cách để suy nghĩ về điều này là trong một không gian cảm thấy hỗn độn với sự lộn xộn, không phải là có quá nhiều thứ, mà là không có đủ Ma.
Nhìn vào sự sắp xếp của các thành phần về mặt không gian âm – những vùng trống – là một bài học được dạy trong vẽ và hội họa bởi vì những gì không có ở đó cũng quan trọng, nếu không muốn nói là hơn những gì đang có.
3. Danshari: Loại bỏ 80% mọi thứ của bạn, sau đó yêu thích những gì còn lại
Rất liên quan đến điểm trước đó, Nhật Bản yêu thích không gian và sử dụng nó một cách tối ưu, do đó người Nhật hoàn thiện thái độ của họ đối với danshari, một khái niệm của người Nhật về việc dọn dep:
danshari – 断 捨離
断 – từ chối
捨 – thải bỏ
離 – tách biệt
Tinh khiết, sạch sẽ, gọn gàng và cân bằng là tất cả những từ có thể dùng để mô tả nội thất phong cách Nhật Bản với sự tinh tế tối giản.
Và nơi nào trong nhà của bạn có thể áp dụng những vẻ ngoài và cảm xúc này tốt hơn là nhà bếp – một nơi bận rộn, bừa bộn, nóng nực và lộn xộn hàng ngày.
Liệu bạn không có cảm hứng nấu ăn vì bạn không thể dễ dàng tìm thấy dụng cụ cần thiết hoặc liệu bạn bị thuyết phục rằng bạn không có không gian rộng rãi để chuẩn bị một bữa ăn, dẫn đến sức khỏe tinh thần và thể chất của bạn bị quá tải.
Giá đỡ dao từ tính có thể dễ dàng giữ tới 7 con dao. Ảnh: japanahome
Nghệ thuật kintsugi của Nhật Bản dạy rằng những đồ vật bị vỡ, đặc biệt là đồ sứ không phải là thứ để che giấu mà là để trưng bày với niềm tự hào.
Khi một chiếc bát, ấm trà hay chiếc bình quý bị rơi và vỡ thành nghìn mảnh, chúng ta tức giận vứt bỏ chúng và tiếc nuối.
Tuy nhiên, có một phương pháp thay thế, một cách làm của người Nhật làm nổi bật và nâng cao sự gãy vỡ đó, nhờ vậy tăng thêm giá trị cho vật bị hỏng.
Nó được gọi là kintsugi (金 継 ぎ), hoặc kintsukuroi (金 繕 い), nghĩa đen là vàng (“kin”) và sửa chữa (“tsugi”).
Đĩa nghệ thuật kintsugi. Ảnh: japanahome
4. Ăn khi cần ăn
Ở Nhật, thực phẩm không phải là một phương trình toán học hay một công cụ thương lượng.
Họ chỉ đơn giản là ăn ba bữa ăn đầy đủ và đầy đủ mỗi ngày. Và bạn chưa bao giờ nhìn thấy bất kỳ ai ăn uống trên đường phố hoặc trên phương tiện giao thông công cộng (trên thực tế, điều đó thậm chí còn bị coi là bất lịch sự).
Ngược lại, chúng ta đã rèn luyện cơ thể thông qua việc chăn thả liên tục để giải thích dấu hiệu đói là lượng đường trong máu giảm nghiêm trọng.
Nhưng bất kỳ chuyên gia dinh dưỡng nào cũng sẽ cho bạn biết rằng nếu bạn đáp ứng đầy đủ nhu cầu dinh dưỡng của mình trong các bữa ăn chính, thì bạn thực sự không cần bổ sung.
Món ăn Nhật trông khó hiểu nhưng khá dễ chế biến. Ảnh: japanahome
Đơn giản chỉ cần mở một gói Miso, rưới một cục đậu phụ với nước tương, thêm một ít cơm thừa và một hộp cá ngừ. Chúc ngon miệng!
5. Này Tiền, tôi không phải là nô lệ!
Người Nhật cực kỳ sành điệu mà không phải là nô lệ của thời trang (khi họ đã bước qua thời đại Harajuku). Họ chi tiêu cho những phần quan trọng và chăm sóc chúng.
Lựa chọn vải chất lượng cao và cách mặc đơn giản nằm trong DNA của họ. Tương tự với những thứ họ mua cho gia đình hoặc sở thích. Đề cao chất lượng chứ không phải số lượng.
6. Thời gian, tôi sẽ không bao giờ đưa bạn trở lại
Hầu hết chúng ta đều có một vài “tệ nạn” hút thời gian (như lướt Facebook, Instagram) không mang lại niềm vui cũng như phần thưởng.
Chúng diễn ra ngay lập tức và dễ dàng, vì vậy chúng ta trượt ngay vào chúng với rất ít cơ hội trốn thoát. Nhưng mỗi hoạt động thực sự mang lại cho bạn bao nhiêu niềm vui?
Thông thường, gần như không có.
Bạn sẽ tốt hơn nhiều nếu không có nó. Chỉ cần nhìn vào những người sống trước cả thời đại truyền thông xã hội – họ hạnh phúc, họ dành nhiều thời gian hơn cho người khác mà không cần phải ngụy tạo về cuộc sống hoàn hảo của họ.
Nếu bạn có thể khiến bản thân ‘ly hôn’ với những thứ lãng phí thời gian, bạn sẽ đơn giản là hạnh phúc hơn.
SQL là ngôn ngữ tiêu chuẩn để xử lý Cơ sở dữ liệu quan hệ (Relational Databases).
SQL có thể được sử dụng để chèn, tìm kiếm, cập nhật và xóa các bản ghi cơ sở dữ liệu. SQL có thể thực hiện nhiều hoạt động khác, bao gồm tối ưu hóa và bảo trì cơ sở dữ liệu.
SQL là viết tắt của Ngôn ngữ truy vấn có cấu trúc (Structured Query Language), được phát âm là “S-Q-L” hoặc đôi khi là “See-Quel”…
Các cơ sở dữ liệu quan hệ như MySQL Database, Oracle, MS SQL Server, Sybase… sử dụng ANSI SQL.
SQL là gì?
Dừng lại chút nào, nếu bạn đang #open_to_work, thử nghía qua các công việc đang tuyển trên Gamba nhé. Vào LINK NÀY để xem các job SQL hoặc scan QR Code ở bên dưới nhé.
Xem và ứng tuyển các SQL job
Cách sử dụng SQL
Ví dụ về Code SQL:
SELECT * FROM Members WHERE Age > 30
Các cú pháp SQL được sử dụng trong các cơ sở dữ liệu khác nhau gần như tương tự nhau, mặc dù một số RDBMS (Relational Database Management System – hệ quản trị CSDL quan hệ) sử dụng một vài lệnh khác nhau và thậm chí cả các cú pháp SQL độc quyền.
SQL được sử dụng để làm gì?
Đây là những lý do quan trọng để sử dụng SQL
Giúp người dùng truy cập dữ liệu trong hệ thống RDBMS.
Giúp mô tả dữ liệu.
Cho phép xác định dữ liệu trong cơ sở dữ liệu và thao tác với dữ liệu cụ thể.
Với sự trợ giúp của SQL, bạn có thể tạo và thả cơ sở dữ liệu và bảng.
SQL cung cấp cách sử dụng hàm trong cơ sở dữ liệu, tạo dạng xem và thủ tục lưu trữ.
Có thể phân quyền trên bảng, thủ tục và dạng xem.
Sơ lược lịch sử SQL
Dưới đây là những dấu mốc quan trọng trong lịch sử của SQL:
1970 – Tiến sĩ Edgar F. “Ted” Codd mô tả một mô hình quan hệ cho cơ sở dữ liệu.
1974 – Ngôn ngữ truy vấn có cấu trúc (SQL) xuất hiện.
1978 – IBM phát hành một sản phẩm có tên là System/R.
1986 – IBM phát triển nguyên mẫu của cơ sở dữ liệu quan hệ, được tiêu chuẩn hóa bởi ANSI.
1989 – Phiên bản SQL đầu tiên ra mắt
1999 – SQL 3 ra mắt với các tính năng như trình kích hoạt, hướng đối tượng, v.v.
SQL 2003 – các hàm window, các tính năng liên quan đến XML, v.v.
SQL 2006 – Hỗ trợ ngôn ngữ truy vấn XML
SQL 2011 – Hỗ trợ cải tiến cho cơ sở dữ liệu tạm thời
Các loại câu lệnh SQL
Dưới đây là năm loại truy vấn SQL được sử dụng rộng rãi.
Ngôn ngữ định nghĩa dữ liệu (DDL)
Ngôn ngữ thao tác dữ liệu (DML)
Ngôn ngữ kiểm soát dữ liệu (DCL)
Ngôn ngữ kiểm soát giao dịch (TCL)
Ngôn ngữ truy vấn dữ liệu (DQL)
Danh sách các lệnh SQL
Dưới đây là danh sách một số lệnh SQL được sử dụng phổ biến nhất:
CREATE – xác định lược đồ (schema) cấu trúc cơ sở dữ liệu
INSERT – chèn dữ liệu vào hàng của bảng
UPDATE- cập nhật dữ liệu trong cơ sở dữ liệu
DELETE – xóa một hoặc nhiều hàng khỏi bảng
SELECT – chọn thuộc tính dựa trên điều kiện được mô tả bởi mệnh đề WHERE
DROP – xóa bảng và cơ sở dữ liệu
Quy trình SQL
Khi bạn muốn thực thi một lệnh SQL cho bất kỳ hệ thống DBMS nào, bạn cần tìm phương pháp tốt nhất để thực hiện yêu cầu của mình và công cụ SQL xác định cách diễn giải tác vụ cụ thể đó.
Các thành phần quan trọng được bao gồm trong quy trình SQL này là:
Công cụ truy vấn SQL (SQL Query Engine)
Công cụ tối ưu hóa (Optimization Engines)
Điều phối viên truy vấn (Query Dispatcher)
Công cụ truy vấn cổ điển (Classic Query Engine)
Một Classic Query Engine cho phép bạn quản lý tất cả các truy vấn không phải SQL (non-SQL).
Quy trình SQL
Tiêu chuẩn SQL
SQL là một ngôn ngữ để vận hành cơ sở dữ liệu. Nó bao gồm tạo cơ sở dữ liệu, xóa, tìm nạp hàng, sửa đổi hàng,…
SQL là ngôn ngữ chuẩn ANSI (Viện tiêu chuẩn quốc gia Hoa Kỳ – American National Standard Institute). Các tiêu chuẩn SQL được chia thành nhiều phần.
Dưới đây là một số phần quan trọng của tiêu chuẩn SQL:
Thành phần
Mô tả
Phần 1 – SQL / Framework
Nó đưa ra các khái niệm logic.
Phần 2 – SQL / Foundation
Nó bao gồm các yếu tố trung tâm của SQL.
Phần 3 – SQL / CLI
Tiêu chuẩn này bao gồm các yếu tố trung tâm của SQL.
Phần 4 – Mô-đun được lưu trữ liên tục
Quy trình được lưu trữ, quy trình bên ngoài và phần mở rộng ngôn ngữ thủ tục cho SQL.
Phần 9 – Quản lý Dữ liệu Bên ngoài
Thêm cú pháp và định nghĩa vào SQL / Foundation, cho phép SQL truy cập vào các nguồn (tệp) dữ liệu không phải SQL.
Phần 10 – Các ràng buộc ngôn ngữ đối tượng
Liên kết ngôn ngữ đối tượng: Phần này chỉ định cú pháp và ngữ nghĩa của việc nhúng SQL vào Java ™.
Phần 11 – SQL / Schema
Lược đồ Thông tin và Định nghĩa
Phần 12 – SQL / Replication
Dự án này bắt đầu vào năm 2000. Phần này giúp xác định cú pháp và ngữ nghĩa để cho phép định nghĩa các sơ đồ và quy tắc sao chép.
Cung cấp hỗ trợ SQL cho Mảng đa chiều (Multi-Dimensional Arrays)
Các phần tử ngôn ngữ SQL
Dưới đây là các yếu tố quan trọng của ngôn ngữ SQL:
Từ khóa (Keywords): Mỗi câu lệnh SQL chứa một hoặc nhiều từ khóa.
Số nhận dạng (Identifiers): Số nhận dạng là tên của các đối tượng trong cơ sở dữ liệu, như ID người dùng, bảng và cột.
Chuỗi (Strings): Chuỗi có thể là chuỗi ký tự hoặc biểu thức với kiểu dữ liệu VARCHAR hoặc CHAR.
Biểu thức (Expressions): Biểu thức được hình thành từ một số phần tử, như hằng số, toán tử SQL, tên cột và truy vấn con.
Điều kiện tìm kiếm (Search Conditions): Điều kiện được sử dụng để chọn một tập hợp con của các hàng từ bảng hoặc được sử dụng để điều khiển các câu lệnh như câu lệnh IF để xác định quyền kiểm soát luồng.
Giá trị đặc biệt (Special Values): Giá trị đặc biệt nên được sử dụng trong biểu thức và làm giá trị mặc định của cột khi xây dựng bảng.
Biến (Variables): Sybase IQ hỗ trợ các biến cục bộ, biến toàn cục và biến mức kết nối.
Chú thích (Comment): Chú thích là một phần tử SQL khác được sử dụng để đính kèm văn bản giải thích vào các câu lệnh hoặc khối câu lệnh SQL. Máy chủ cơ sở dữ liệu không thực hiện bất kỳ bình luận nào.
Giá trị NULL: Sử dụng NULL, giúp bạn chỉ định một giá trị không xác định, bị thiếu hoặc không áp dụng được.
Cơ sở dữ liệu trong SQL là gì?
Cơ sở dữ liệu được tạo thành từ một tập hợp các bảng lưu trữ một bộ dữ liệu có cấu trúc chi tiết. Nó là một bảng chứa một tập hợp các hàng, được gọi là bản ghi hoặc bộ dữ liệu, và các cột cũng được gọi là thuộc tính.
Mỗi cột trong bảng được thiết kế để lưu trữ một loại thông tin cụ thể, chẳng hạn như tên, ngày tháng, số tiền và số.
NoSQL là gì?
NoSQL là một danh mục sắp ra mắt của Hệ thống quản lý cơ sở dữ liệu. Đặc điểm chính của nó là không tuân thủ các khái niệm cơ sở dữ liệu quan hệ. NoSQL có nghĩa là “Không chỉ SQL”.
Khái niệm về cơ sở dữ liệu NoSQL đã phát triển với những gã khổng lồ internet như Google, Facebook, Amazon… những người xử lý khối lượng dữ liệu khổng lồ.
Khi bạn sử dụng cơ sở dữ liệu quan hệ cho khối lượng lớn dữ liệu, hệ thống bắt đầu chậm lại về thời gian phản hồi.
Để khắc phục điều này, chúng ta có thể “mở rộng quy mô” hệ thống của mình bằng cách nâng cấp phần cứng hiện có.
Một giải pháp khác cho vấn đề trên là phân phối tải cơ sở dữ liệu trên nhiều máy chủ khi tải tăng lên. Điều này được gọi là “mở rộng quy mô”.
Cơ sở dữ liệu NoSQL là cơ sở dữ liệu không quan hệ có quy mô tốt hơn cơ sở dữ liệu quan hệ và được thiết kế với các ứng dụng web.
Họ không sử dụng SQL để truy vấn dữ liệu và không tuân theo các lược đồ nghiêm ngặt như các mô hình quan hệ.
Với NoSQL, các tính năng ACID (Atomicity, Consistency, Isolation, Durability) không phải lúc nào cũng được đảm bảo.
Tại sao nên học SQL sau NoSQL?
Với những ưu điểm của cơ sở dữ liệu NoSQL đã nêu, bạn có thể thắc mắc tại sao người ta vẫn muốn tìm hiểu về cơ sở dữ liệu SQL?
Cơ sở dữ liệu NoSQL là các hệ thống chuyên biệt cao và có cách sử dụng cũng như hạn chế đặc biệt của chúng. NoSQL phù hợp hơn với những ai xử lý khối lượng dữ liệu khổng lồ.
Phần lớn sẽ sử dụng cơ sở dữ liệu quan hệ và các công cụ liên quan.
Cơ sở dữ liệu quan hệ có những ưu điểm sau so với cơ sở dữ liệu NoSQL.
Cơ sở dữ liệu (quan hệ) SQL có mô hình quản lý và lưu trữ dữ liệu hoàn thiện (mature). Điều này rất quan trọng đối với người dùng doanh nghiệp.
Cơ sở dữ liệu SQL hỗ trợ khái niệm dạng xem cho phép người dùng chỉ xem dữ liệu mà họ được phép xem. Dữ liệu mà họ không được phép xem sẽ được ẩn.
Cơ sở dữ liệu SQL hỗ trợ thủ tục SQL được lưu trữ cho phép các nhà phát triển cơ sở dữ liệu triển khai một phần logic nghiệp vụ vào cơ sở dữ liệu.
Cơ sở dữ liệu SQL có mô hình bảo mật tốt hơn so với cơ sở dữ liệu NoSQL.
Thế giới đã không đi chệch hướng trong việc sử dụng cơ sở dữ liệu quan hệ. Ngày càng có nhiều nhu cầu về các chuyên gia có thể xử lý cơ sở dữ liệu quan hệ. Vì vậy, việc học cơ sở dữ liệu và các kiến thức cơ bản về SQL vẫn có giá trị.
Sách học SQL
Dưới đây là một số sách SQL hàng đầu
SQL Tutorial for Beginners
Trong quyển này, bạn sẽ học các khái niệm Cơ sở dữ liệu cơ bản, các lệnh MS-SQL và các chủ đề nâng cao như SQL nối, Tạo, thêm và thả bảng, v.v.
SQL in 10 Minutes
SQL in 10 Minutes
Cuốn sách này cung cấp các ví dụ mã đầy đủ màu sắc để giúp bạn hiểu cách các câu lệnh SQL được cấu trúc. Bạn cũng sẽ có kiến thức về các phím tắt và giải pháp.
SQL Cookbook
SQL Cookbook
Trong cuốn này, bạn sẽ có thể học kỹ thuật đi bộ một chuỗi cho phép bạn sử dụng SQL để phân tích cú pháp các ký tự, từ hoặc các phần tử được phân tách của một chuỗi.
SQL: The Complete Reference
SQL: The Complete Reference
Cuốn sách này bao gồm các chủ đề Microsoft SQL quan trọng như các hàm Window, Xoay các hàng thành cột, xoay ngược các cột thành các hàng.
QL Pocket Guide: A Guide to SQL Usage
SQL Pocket Guide: A Guide to SQL Usage
Cuốn sách hướng dẫn bạn cách hệ thống sử dụng các hàm SQL, cú pháp biểu thức chính quy và các hàm chuyển đổi kiểu. MUA NGAY
Bài học rút ra
Ngôn ngữ SQL được sử dụng để truy vấn cơ sở dữ liệu
SQL là viết tắt của gì hay SQL có nghĩa là: Ngôn ngữ truy vấn có cấu trúc
SQL được sử dụng cho:
Hệ thống RDBMS
Mô tả, xác định và thao tác dữ liệu
Tạo và thả Cơ sở dữ liệu & bảng
Các loại câu lệnh SQL: DDL, DML, DCL, TCL, DQL
Danh sách lệnh SQL: CREATE, INSERT, UPDATE, DELETE, SELECT, DROP
Các phần tử ngôn ngữ SQL: Từ khóa, Số nhận dạng, Chuỗi, Biểu thức, Biến, v.v.
NoSQL: có nghĩa là “Không chỉ SQL” là danh mục sắp tới của Hệ thống quản lý cơ sở dữ liệu
Phương pháp tiếp cận cơ sở dữ liệu có nhiều ưu điểm khi lưu trữ dữ liệu so với các hệ thống dựa trên tệp phẳng truyền thống
Unit test là gì? Vai trò của Unit test. Ảnh: evoketechnologies
Quy trình testing bao gồm nhiều bước kiểm thử. Unit Test (Kiểm thử đơn vị) là mức kiểm thử đầu tiên nhưng giữ vai trò không kém phần quan trọng đảm bảo sản phẩm phần mềm chất lượng đến tay người dùng.
Unit testing – bước kiểm thử đầu tiên trong quy trình Software Testing. Ảnh: TestOrigen
Dừng lại chút nào, nếu bạn đang #open_to_work, thử nghía qua các công việc đang tuyển trên Gamba nhé. Vào LINK NÀY để xem các job Testing hoặc scan QR Code ở bên dưới nhé.
Xem và ứng tuyển các job “testing”
Unit test là gì?
Unit là thành phần nhỏ nhất trong phần mềm, có thể là các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương thức (Method).
Unit test là một loại kiểm thử phần mềm với mục tiêu cô lập và xác minh tính chính xác của một đơn vị.
Việc phát hiện lỗi, xác định nguyên nhân và khắc phục trở nên dễ dàng hơn khi chỉ khoanh vùng trong phạm vi một Unit đang kiểm tra.
Một ví dụ về Unit test case. Ảnh: jeff.wilcox.name
Thực hiện kiểm thử trên đơn vị càng nhỏ thì càng tốt. Khi đó, bạn sẽ hiểu chi tiết hơn về cách code hoạt động. Không những vậy, tốc độ test sẽ nhanh hơn, nhiều Unit test sẽ được hoàn thành hơn.
Ai thực hiện Unit test?
Do Unit test được tiến hành trong quá trình lập trình, người thực hiện Unit test có thể chính là người viết phần mềm, đôi khi cũng có thể là QA/QC.
Unit test nếu được thực hiện từng bước, không sử dụng công cụ hỗ trợ thì được gọi là Phương pháp kiểm thử thủ công (Manual Unit testing).
Ngược lại, nếu có sự trợ giúp của công cụ để test nhanh hơn, chính xác hơn chính là Phương pháp kiểm thử tự động (Automated Unit testing).
Các phương pháp kiểm thử tự động sử dụng trong Automated Unit testing: black box testing, white box texting và gray box testing.
Đa số trường hợp Developer sẽ tiến hành Unit testing. Ảnh: Unplash
Các bước trong Unit test
Một Unit test điển hình sẽ trải qua 3 giai đoạn, được biết đến với tên gọi AAA:
Arrange: xác định thành phần của ứng dụng bạn muốn kiểm thử trong SUT (system under test)
Act: Giả lập trong SUT
Assert: Quan sát kết quả
Nếu kết quả quan sát được đúng như kỳ vọng, Unit test được xem là hoàn thành (pass). Nếu không, nó sẽ báo lỗi (fail), tức là đã có vấn đề ở đâu đó trong SUT.
Vai trò của Unit test
Công việc viết Test case cho Unit test mất khá nhiều thời gian, thậm chí đôi khi hơn cả việc coding.
Tuy nhiên, Unit test đặc biệt không thể bỏ qua trong các bước của quá trình kiểm thử bởi vì những lợi ích mà nó mang lại cho quá trình phát triển phần mềm như sau:
Unit test được thực hiện trên những thành phần rất nhỏ của code hoặc những chức năng đơn lẻ, vì vậy, trường hợp tìm ra vấn đề hay thiếu sót sẽ độc lập và không ảnh hưởng đến các test case khác.
Thông qua Unit test, nếu sớm phát hiện ra lỗi hay sai sót sẽ rất có ích và giảm bớt được chi phí toàn dự án. Khi Unit test được hoàn tất trước khi tích hợp code, những sai sót hay lỗi tìm thấy sẽ dễ dàng được giải quyết mà hầu như không mang lại ảnh hưởng gì đáng kể.
Các Unit test case đơn giản hóa và giúp việc kiểm tra code nhẹ nhàng hơn. Về sau nếu có cần giải quyết lỗi thì cũng chỉ phải test đoạn code được chỉnh sửa mới nhất.
Unit testing tự động (Automated Unit testing) giúp giảm thiểu số bugs khi chạy trên môi trường production.
Điểm cộng nữa của Unit test đó là tạo điều kiện cho thay đổi, làm tiền đề cho phương pháp Agile, tiết kiệm thời gian và thúc đẩy tiến độ tổng thể của dự án.
Trên phương diện thiết kế, Unit test nhắc nhở người lập trình trước khi bắt đầu viết code, phải tập trung để đưa ra các thiết kế thật ổn. Việc kiểm thử code trong giai đoạn ban đầu có thể phát hiện các vấn đề, xử lý hệ thống và các mô hình thiết kế từ sớm.
Thêm vào đó, Unit test còn giúp ích trong việc giải phóng các chuyên viên QA khỏi những công việc kiểm tra mang tính chất phức tạp, đồng thời cũng là công cụ đánh giá năng suất và tốc độ làm việc, dựa trên số lượng các test case đạt trạng thái “pass”.
Unit test góp phần không nhỏ vào sự thành công của dự án. Ảnh: freepik
Unit test thật sự có thể cải thiện đáng kể chất lượng sản phẩm phần mềm của bạn.
Kinh nghiệm thực tiễn cho thấy bất kỳ dự án nào cũng cần thực hiện Unit test, đặc biệt là những dự án lớn.
Để tạo ra những Unit test case tối ưu, chúng ta cần không ngừng thực hành và học hỏi. Với những lợi ích mà Unit test mang lại, nó xứng đáng dành được một vị trí quan trọng, không thể tách rời trong quy trình kiểm thử.
Ruby on Rails (đôi khi là RoR) là khung ứng dụng web mã nguồn mở phổ biến nhất.
Ruby on Rails là gì? Ảnh: onix-systems
Nó được xây dựng bằng ngôn ngữ lập trình Ruby.
Bạn có thể sử dụng Rails để giúp bạn xây dựng các ứng dụng, từ đơn giản đến phức tạp, không có giới hạn nào cho những gì bạn có thể làm với Rails!
Khung là gì?
Khung là một tập hợp mã, công cụ và tiện ích cung cấp cho bạn một cấu trúc cụ thể để làm việc khi bạn viết phần mềm.
Cấu trúc này làm cho code của bạn có tổ chức hơn.
Công việc của bạn trở nên dễ dàng khi bạn học cách sử dụng nó một cách chính xác.
Ruby on Rails chính xác làm gì?
Rails giúp bạn xây dựng website.
Loại website mà bạn sử dụng hàng ngày.
Các website cho phép bạn đăng nhập, để lại nhận xét và đánh giá, mua hàng…
Rails được làm từ một số thành phần để tạo điều kiện thuận lợi cho việc này.
Ví dụ:
Active Record giúp bạn đọc, tạo và cập nhật các bản ghi trong cơ sở dữ liệu của mình mà không cần phải là một thiên tài về cơ sở dữ liệu.
Trong khi cơ chế định tuyến cho phép bạn dễ dàng ánh xạ URL (như /login) với các hành động cụ thể.
Nếu bạn phải code tất cả những thứ này từ đầu, không có khung, thì đó sẽ là một khối lượng công việc KHỔNG LỒ.
Rails xử lý tất cả những chi tiết này cho bạn…
Vì vậy, bạn có thể tập trung vào việc xây dựng các ứng dụng của riêng mình!
Ví dụ về ứng dụng Ruby on Rails
Ai đang sử dụng Rails?
Đây là một vài ví dụ về các trang web Ruby on Rails
Đây là một số:
Github
Shopify
Ask.fm
Kickstarter
Viết nguệch ngoạc
ConvertKit
Twitch
Instacart
Zendesk
SoundCloud
Đây không phải là những công ty nhỏ!
Và tất cả họ đều được hưởng lợi từ việc sử dụng Ruby on Rails để phục vụ khách hàng của mình.
Bạn có nên học Ruby on Rails?
Nếu bạn đang tìm kiếm một sự nghiệp đầy thử thách, vui vẻ và sáng tạo trong việc xây dựng website tuyệt vời giúp ích cho mọi người thì Ruby on Rails có thể dành cho bạn.
Bất kỳ ai cũng có thể học Rails, ngay cả khi bạn chưa có kinh nghiệm lập trình.
Có thể mất nhiều thời gian hơn hoặc ít hơn tùy thuộc vào vị trí của bạn.
Nhưng mọi kỹ năng đều CÓ THỂ được học và làm chủ.
Những lợi ích của việc sử dụng Rails:
Đó là một giải pháp tích hợp. Rails cung cấp cho bạn mọi thứ bạn cần để tạo một ứng dụng web.
Các quy ước và cấu hình mặc định của Rails giúp bạn tiết kiệm rất nhiều công việc!
Rails có một hệ sinh thái tuyệt vời để bạn có thể tìm thấy tất cả các công cụ và hỗ trợ mà bạn có thể cần
Nó đang được phát triển tích cực, vì vậy bạn thường xuyên nhận được các bản sửa lỗi và các tính năng mới!
Và lý do tốt nhất của tất cả:
“Bạn nên sử dụng Ruby, thứ ngôn ngữ đẹp và sang trọng nhất mà tôi chưa từng gặp”
– DHH, cha đẻ Ruby on Rails
Triết lý Rails
Ruby on Rails là một khung dựa trên quy tắc.
Một trong quy tắc đó là ‘quy ước quan trọng hơn cấu hình’.
Điều đó nghĩa là gì?
Điều đó có nghĩa là bạn phải đưa ra ít quyết định hơn vì những người tạo ra Rails đã đưa ra những quyết định đó cho bạn.
Bởi vì bạn phải đưa ra ít quyết định hơn, bạn sẽ năng suất hơn và hoàn thành công việc nhanh hơn.
Nhưng nếu bạn muốn thay đổi một số trong số này, bạn vẫn có thể.
Một số ví dụ về ‘quy ước cao hơn cấu hình’?
Rails tìm kiếm các tên tệp cụ thể khi tìm kiếm code của bạn.
Ví dụ: nếu bạn có mô hình Book, Rails sẽ tìm kiếm một tệp có tên là app/models/book.rb.
Đó là quy ước.
Thay vì phải nói: “Này Rails, đây là nơi để tìm tệp này”
Rails cho bạn biết nó phải ở đâu.
Tổng quan về Rails
Làm thế nào để Rails phù hợp với bức tranh toàn cảnh của một ứng dụng web hoàn chỉnh?
Tôi vẽ cái này để bạn dễ hiểu:
Tổng quan về Rails
Rails nhận các yêu cầu, định tuyến chúng đến hành động thích hợp, sau đó tương tác với cơ sở dữ liệu (thông qua ActiveRecord) để thực hiện yêu cầu. Sau đó, nó trả về kết quả (HTML hoặc JSON) cho người dùng.
Nếu bạn muốn xem kỹ thành phần Rails, chúng ta phải có một chút kỹ thuật.
Rails sử dụng kiến trúc MVC.
MVC là viết tắt của Model, View, Controller.
Đây là minh họa:
Kiến trúc MVC
Các hành động được tổ chức thành các bộ điều khiển (controller), các bộ điều khiển ra quyết định về cách xử lý yêu cầu và chúng yêu cầu cơ sở dữ liệu cung cấp bất kỳ dữ liệu nào mà mình cần.
Sau đó, bộ điều khiển hiển thị chế độ xem.
Chế độ xem là thiết kế và nội dung của trang.
Đây là sản phẩm cuối cùng sẽ được trả lại cho người dùng.
Ai đã phát minh ra Ruby on Rails?
David Heinemeier Hansson (DHH) đã phát hành Ruby on Rails 1.0 vào tháng 12 năm 2005.
Gần 14 năm sau, David vẫn đang làm việc trên Rails với một nhóm lớn các cộng tác viên mã nguồn mở để làm cho nó tốt hơn và nhanh hơn.
Tại sao anh ấy lại tạo ra Rails?
“Tôi tạo Rails vì tôi muốn tận hưởng những gì mình làm”
DHH
Ruby vs. Ruby on Rails
Ruby là một ngôn ngữ lập trình.
Ruby on Rails là một khung công tác được xây dựng trên nền tảng của Ruby.
Có gì khác biệt?
Ruby là thứ chuyển đổi code (bao gồm cả Rails) thành thứ mà máy tính của bạn có thể hiểu.
Rails là một lớp trên của Ruby. Một lớp giúp bạn xây dựng các ứng dụng web.
Nhưng bản thân Ruby có thể làm được nhiều hơn thế, nó là một ngôn ngữ lập trình rất mạnh.
Dưới đây là một số điều bạn có thể làm:
Bạn có thể thu thập thông tin và tìm kiếm các trang web để trích xuất thông tin
Bạn có thể tự động hóa các tác vụ như sao lưu, cảnh báo và thông báo
Bạn có thể xây dựng tất cả các loại công cụ và tiện ích, như trình phân tích cú pháp nhật ký, trình quét bảo mật, phân tích nội dung tệp…
Bài học rút ra là:
Rails làm cho Ruby trở thành một nền tảng thực sự tốt để xây dựng các ứng dụng web, nhưng vẫn có một hệ sinh thái mạnh mẽ các chương trình không phải Rails được xây dựng bằng Ruby.
Làm thế nào để học Rails
Đây là sai lầm lớn nhất mà nhiều người mắc phải, nhưng bạn có thể tránh nó nếu bạn hiểu điều này:
Hãy tìm hiểu các khái niệm lập trình chung và ngôn ngữ lập trình Ruby trước. Rồi hãy nhảy vào Rails!
Lý do rất đơn giản.
Bạn KHÔNG THỂ bắt đầu xây một ngôi nhà từ mái được…
Nếu bạn không hiểu cơ sở về cách Rails hoạt động, bạn sẽ bị rối hàng.
Khi bạn thấy thông báo lỗi, nó sẽ như thể tiếng nước ngoài.
Và điều đó sẽ RẤT khó chịu đối với bạn.
Giải pháp?
Bắt đầu bằng cách học Ruby.
Hãy kiên nhẫn, hãy chắc rằng bạn sẽ học tốt mọi thứ.
6 Website miễn phí giúp bạn học Ruby on Rails
Dưới đây là tổng quan các website học Ruby on Rails miễn phí giúp bạn thiết lập và viết code nhanh chóng.
1. Codecademy
Codecademy là một trong những trường dạy code trực tuyến nổi tiếng nhất cung cấp các khóa học lập trình miễn phí.
Trang web bao gồm các hướng dẫn riêng biệt cho cả Ruby và Rails, và khi hoàn thành, bạn sẽ xây dựng được tám ứng dụng web đầy đủ chức năng.
2. The Ruby on Rails Tutorial
Nếu phong cách của bạn là đọc, chắc chắn bạn sẽ bị cuốn hút vào Hướng dẫn về Ruby on Rails của Michael Hartl.
Ngay cả khi bạn chưa bao giờ lập trình một dòng Ruby nào, cuốn sách của Hartl sẽ dạy bạn cách xây dựng “các ứng dụng web thực sự, có sức mạnh công nghiệp”.
Ấn bản gần đây nhất của cuốn sách đã được cập nhật cho Rails 5, vì vậy bạn được đảm bảo sẽ tìm hiểu các phương pháp RoR cập nhật nhất.
Sách có sẵn miễn phí trực tuyến, nhưng mẹo là: mua sách điện tử và bạn cũng sẽ có quyền truy cập vào các video độc quyền.
3. Try Ruby
Try Ruby, giống như Codecademy, là một trang web tương tác dành cho người mới bắt đầu sử dụng Ruby on Rails cho phép bạn lập trình trong trình duyệt của mình.
Nhưng không giống như Codecademy, nó có một phong cách siêu vui nhộn và dễ tiếp cận.
Tất cả những gì cần làm là hoàn thành một loạt các bài tập ngắn và bạn sẽ nắm được những kiến thức cơ bản về ngôn ngữ Ruby.
4. Ruby Koans
Bạn nghĩ rằng bạn đã là một chuyên gia Ruby? Hãy thử Ruby Koans.
Trong Thiền tông, công án là một câu hỏi hoặc một câu nói nghịch lý nhằm khơi gợi sự suy nghĩ của người nghe.
Trong Ruby Koans, mỗi “công án” là một bài tập viết code phức tạp đòi hỏi bạn phải sử dụng kiến thức về Ruby để chương trình hoạt động chính xác.
Các bài tập được sắp xếp thành một loạt các bài kiểm tra mà bạn cần vượt qua để tiếp tục xây dựng với khung web Rails.
Sử dụng video hướng dẫn và định dạng tương tác, giống như trò chơi, khóa học Rails for Zombies giúp bạn học Rails từ đầu thông qua một loạt các bài tập lập trình.
Tác giả của khóa học nổi tiếng vì đã giúp xây dựng Envy Labs, Starter Studio và Code School, và bản dùng thử miễn phí 10 ngày sẽ giúp bạn bắt đầu và sử dụng trước khi bạn biết điều đó.
6. Roadmap for Learning Rails
Vì vậy, bạn đã thử Rails với một số tài nguyên khác, nhưng bạn đã thực sự sẵn sàng sử dụng nó trong production chưa?
Lộ trình Học Rails sẽ giúp bạn nắm vững RoR và phát triển web back-end — và đó không phải là tất cả.
Trang web phác thảo tất cả các khái niệm quan trọng nhất mà bạn cần biết để thành công trong sự nghiệp phát triển phần mềm, không chỉ bao gồm Ruby on Rails mà còn cả HTML / CSS, JavaScript, Git, Heroku và SQL.
Cây kỹ năng theo bề ngang của Full stack developer. Ảnh: hackernoon
Full-stack developer là một kỹ sư (engineer) có thể xử lý tất cả các việc như cơ sở dữ liệu, máy chủ, thiết kế hệ thống và khách hàng.
Là một trong những chủ đề nóng nhất trong giới developer, các thảo luận chưa bao giờ dừng lại.
Trên LinkedIn và Facebook, rất nhiều người đặt chức danh cho mình là full stack developer. Bên cạnh đó, dường như “Full Stack” đã trở thành một xu hướng việc làm mới.
Một bài báo trên Medium thảo luận về full stack designer đã nhận được cả khen ngợi lẫn chê trách. Một số người cho rằng full stack chỉ là một chức danh, cái mà người đó nên tập trung là thực lực cá nhân và công nghệ.
Về cơ bản, tôi nghĩ thảo luận về full stack cũng là một loại tranh luận liên quan đến những người toàn diện và chuyên gia trong ngành CNTT, và tranh luận về độ sâu rộng của kỹ năng development.
Bạn không thể vừa muốn có cái bánh, vừa muốn ăn bánh được. Nhưng full stack developer và full stack designer có vẻ như đang thách thức khả năng này. Bởi vì cây kỹ năng theo chiều ngang mang lại cho họ khả năng vừa có bánh, vừa ăn được bánh.
Có một câu nói khác là cái gì cũng biết, nhưng không biết cái gì sâu. Vậy nên, cần phải suy nghĩ về cách trở thành một full stack developer thực thụ chứ không phải một chức danh trống rỗng.
Vậy Full stack developer là gì?
Cây kỹ năng theo bề ngang của Full stack developer. Ảnh: hackernoon
Nói một cách đơn giản, full stack developer là kiểu người thành thạo nhiều kỹ năng và sử dụng những kỹ năng này để hoàn thành sản phẩm một cách độc lập.
1 câu trả lời được bình chọn nhiều nhất trên Quora khi giải thích một full stack developer là gì:
“Full-stack developer là một kỹ sư (engineer) có thể xử lý tất cả các việc như cơ sở dữ liệu, máy chủ, thiết kế hệ thống và khách hàng.“
Tùy vào dự án, những gì khách hàng cần có thể là các stack mobile, Web hoặc native app.
Trên thực tế, “full stack” đề cập đến tập hợp các công nghệ cần thiết để hoàn thành dự án.
“Stack” đề cập đến tập hợp các mô-đun con. Các mô-đun con hoặc thành phần phần mềm này kết hợp với nhau để đạt được chức năng đã thiết lập mà không cần đến các mô-đun khác.
Tại sao full stack developer lại được thảo luận đầy tranh cãi?
Như đã đề cập ở trên, thảo luận về full stack developer thực sự là cuộc tranh luận về độ sâu rộng của các kỹ năng.
Đặc biệt tại hội nghị OSCON, một kỹ sư của Facebook cho biết họ chỉ thuê một “full stack developer” mà thôi.
Chủ đề này là kết quả của một cuộc thảo luận sôi nổi về ưu và nhược điểm của việc trở thành một full stack developer.
Điểm mạnh
Các full stack developer tham gia vào một yêu cầu kỹ thuật theo chiều ngang, vì vậy họ có thể tạo thiết kế nguyên mẫu cho một sản phẩm rất nhanh chóng nhờ kỹ thuật đa dạng của mình.
Với khả năng full stack, họ có góc nhìn rộng hơn và tư duy tích cực hơn. Hơn nữa, họ sẽ nhạy cảm hơn với kỹ thuật và sản phẩm.
Vì vậy, những người này luôn có thể có ý kiến của mình đối với sản phẩm hoặc thiết kế.
Từ một khía cạnh khác, họ có thể giúp đỡ mọi người trong nhóm và giảm đáng kể thời gian và chi phí kỹ thuật của giao tiếp nhóm, cập nhật công nghệ.
Vì vậy, nhiều người trong số họ trở thành doanh nhân hoặc là đối tác kỹ thuật trong các công ty mới thành lập.
Nhược điểm
Chính vì sự phát triển công nghệ theo chiều ngang, một số full stack developer không thể chuyên sâu một kỹ năng.
Hầu hết những người tự nhận là “full stack dev” chỉ biết một chút ở nhiều kỹ năng. Đối với việc làm thế nào để làm cho kiến trúc phù hợp hơn với sự phát triển mô-đun, đó là một câu hỏi.
Mặc dù vậy, vẫn có người đặt câu hỏi…
Làm thế nào để trở thành một full stack developer?
Một full stack dev chất lượng phải có kiến thức và khả năng vận hành đối với tất cả các khía cạnh liên quan đến việc xây dựng ứng dụng. Kiến thức này bao gồm:
Vì hầu hết các quy trình kinh doanh cốt lõi của bạn cần phải được viết bằng các ngôn ngữ này.
Nhưng bạn cũng phải nắm vững ngữ pháp ngôn ngữ và quen thuộc với cách cấu trúc, thiết kế, triển khai và kiểm tra dự án dựa trên một ngôn ngữ hoặc nhiều ngôn ngữ.
Ví dụ: nếu bạn chọn JAVA, thì bạn cần phải nắm vững thiết kế hướng đối tượng và phát triển, các mẫu thiết kế, các thành phần dựa trên J2EE của quá trình phát triển, v.v.
Nơi học: Git / GitHub – Bạn phải biết cách sử dụng Git để quản lý và chia sẻ code của mình.
Ngôn ngữ lập trình Full stack developer cần nắm vững. Ảnh: hackernoon
2) Khung phát triển và thư viện của bên thứ ba
Các ngôn ngữ phát triển phổ biến thường đi kèm với một khung phát triển tốt (development framework), chẳng hạn như JAVA Spring, MyBatis, Hibernate, Python Django, PHP thinkphp, Yin, nodeJs express, v.v.
3) Công nghệ front-end
Công nghệ front-end ngày càng trở nên quan trọng hơn trong quá trình phát triển sản phẩm và dự án ngày nay.
Ngoài tính năng của sản phẩm thì trải nghiệm của người dùng cũng là một trong những tiêu chí để kiểm chứng sự thành công của một sản phẩm.
Tất cả điều đó phụ thuộc vào việc triển khai công nghệ front-end, vì vậy bạn cần phải nắm vững một số công nghệ front-end cơ bản như HTML5, CSS3, JavaScript và nghiên cứu sâu hơn về các khuôn khổ front-end hoặc thư viện của bên thứ ba như JQuery, LESS, SASS, AngularJS hoặc REACT.
4) Cơ sở dữ liệu và cache
Bất kỳ sản phẩm hay dự án nào cũng cần có cơ sở dữ liệu để lưu trữ dữ liệu.
Là một full stack developer, bạn cũng cần phải có ít nhất một hoặc hai cơ sở dữ liệu và biết cách tương tác với cơ sở dữ liệu.
Hiện tại, cơ sở dữ liệu phổ biến là MySQL, MongoDB, Redis, Oracle, SQLServer, v.v.
Là một cơ sở dữ liệu dạng tài liệu, MongoDB, đang được sử dụng rộng rãi hơn trong các sản phẩm Internet.
Đối với các dự án lớn hơn, khuyên bạn nên sử dụng MySQL hoặc Oracle thương mại làm cơ sở dữ liệu back-end.
Trong khi cơ sở dữ liệu bộ nhớ, chẳng hạn như Redis, có thể được sử dụng để lưu vào bộ nhớ đệm nhằm cải thiện hiệu suất hệ thống.
5) Khả năng thiết kế cơ bản
Hầu hết các bài báo hoặc thảo luận về full stack developer khi liên quan đến các yêu cầu thiết kế.
Nhưng tôi nghĩ kỹ năng thiết kế rất quan trọng, nguyên tắc và kỹ năng của thiết kế nguyên mẫu cơ bản, thiết kế UI, UX cũng cần hiểu rõ.
Full stack developer cần có khả năng thiết kế căn bản. Ảnh: hackernoon
6) Tư duy, kỹ năng mềm
Yêu cầu bản thân cũng là một yếu tố cần thiết để trở thành full stack developer
Tư duy toàn cầu
Kỹ năng giao tiếp tốt
Sáng tạo
Sự tò mò
Kỹ năng quản lý thời gian
Tổng kết
Theo luật 10.000 giờ của Gladwell, bạn sẽ mất 10 năm để nắm vững nội dung kiến thức hướng đến khách hàng, front-end và back-end để trở thành một full stack developer.
Do đó, full stack developer hoàn toàn không thể đạt được trong một sớm một chiều. Những gì bạn cần làm là đặt nền tảng kỹ thuật, củng cố các kỹ năng cốt lõi và tiếp tục học hỏi để đạt được nhiều thử thách hơn.
Nhằm tiếp cận với các cơ hội việc làm hiện có, cũng như tham gia các buổi chia sẻ Technical Event do Gamba Team tổ chức, thì việc đăng ký tài khoản và tạo hồ sơ năng lực trên Gambaru.io là điều không thể thiếu.
Làm việc từ xa – Nhận lương thật đã – Ngay tại Gambaru
Bài này sẽ hướng dẫn bạn các bước cần thiết để thực hiện điều này.
Có nhiều lựa chọn khi đăng ký tài khoản Gambaru.io
2. Nhập mã xác nhận
Lưu ý: Nếu đăng ký bằng Google hoặc Facebook, bạn sẽ không cần thưc hiện bước 2 mà chuyển sang bước 3.
Bạn sẽ nhận được một email từ Gambaru Support Team có chứa mã xác nhận. Mã xác nhận là một dãy 6 chữ số và có hiệu lực trong vòng 2 phút.
Do đó, bạn cần nhanh tay kiểm tra hộp thư đến. Để chắc chắn hơn, bạn nên xem cả hộp thư spam và thư quảng cáo nữa nhé.
Mã xác nhận được gửi qua email ngay sau khi đăng ký
Vì đây là email tự động, đừng phản hồi lại bạn nhé. Nếu gặp vấn đề với việc đăng ký hay mã xác nhận, hãy liên lạc ngay với chúng tôi qua email: contact@gambaru.io.
3. Tạo hồ sơ
Bước cuối cùng nhưng cũng không kém phần quan trọng. Hồ sơ của bạn được duyệt hay không đều phụ thuộc vào bước này.
Tuy nhiên, bạn đừng quá lo lắng! Gambaru sẽ tường tận những gì cần lưu ý để hồ sơ được duyệt nhé.
Cách tạo profile 100% được duyệt
Hồ sơ càng chỉn chu, cơ hội được mời phỏng vấn càng cao
1. Ảnh đại diện
Ảnh đại diện mặc dù không bắt buộc, nhưng thông tin cá nhân đầy đủ và hình ảnh rõ ràng sẽ giúp tăng uy tín profile của bạn.
Một hình ảnh gọn gàng, sáng sủa cũng được xem như lời chào đầu tiên đến Nhà tuyển dụng.
Càng tốt hơn nếu bạn có thể để lại vài câu giới thiệu sơ lược về bản thân, ngắn gọn nhưng súc tích.
2. Kỹ năng chính và phụ
Bạn càng liệt kê được nhiều kỹ năng liên quan (tại mục “Nghề nghiệp”), profile của bạn càng có giá trị hơn.
Những công cụ, nền tảng, ngôn ngữ lập trình bạn đã từng có kinh nghiệm sử dụng qua, hay là những kỹ năng mềm thiết yếu, phong phú sẽ làm nổi bật profile của bạn.
3. Kinh nghiệm làm việc
Một IT-er có thâm niên, đã trải qua nhiều dự án ắt hẳn là sẽ không hào hứng khi phải nhập tất cả Kinh nghiệm làm việc của mình.
Thế nhưng, những kỹ năng bạn có, công việc bạn đã từng làm qua sẽ gián tiếp kết nối bạn với Nhà tuyển dụng và cho họ biết mức độ phù hợp của bạn với công việc họ đang tuyển dụng nữa đấy. Hãy cho mình cơ hội tăng sức cạnh tranh, được tỏa sáng trước hàng trăm profile khác, bằng cách liệt kê đầy đủ quá trình công tác và giá trị mà nó mang lại.
*Bật mí nho nhỏ: tính logic của bạn được thể hiện thông qua sự liên kết xuyên suốt profile. Đừng quên chú ý nhé!!!
4. Link, porfolio
Sẽ tuyệt vời hơn nếu như profile của bạn được chứng thực tại những nền tảng uy tín như Linkedin (dẫn link) hoặc có thể phô trương một chút với Porfolio đa dạng thể hiện trực quan những thành tích của bạn.
Nhà tuyển dụng chắc là sẽ thích thú hơn với việc xem xét hồ sơ qua Porfolio, vừa sinh động, vừa nhanh chóng. Porfolio cũng được xem là một bước đi khéo léo đúng không?
5. Trước khi xác nhận
Nghe có vẻ khó, nhưng hãy thử đặt mình vào vị trí người xét duyệt hồ sơ, hoặc Nhà tuyển dụng để đánh giá xem hồ sơ của mình đã thật sự đạt yêu cầu chưa, đã đủ chuyên nghiệp chưa, đủ hấp dẫn để nhận được thư mời phỏng vấn chưa,…
Một khi câu trả lời “có” chiếm ưu thế, hãy tự tin nhấn “Xác nhận” để gửi profile chờ xét duyệt. Chắc chắn câu trả lời từ Gambaru sẽ không làm bạn thất vọng đâu.
E-mail chấp thuận profile Gambaru – chỉ trong tầm tay bạn
6. Nếu profile không được duyệt thì thế nào?
Không có gì phải lo lắng cả, trường hợp hồ sơ bị từ chối, bạn sẽ nhận được một email thông báo.
Đa phần lý do bị từ chối là thông tin về kinh nghiệm làm việc hay kỹ năng khá sơ sài, hoặc không tương quan với trình độ mà bạn đã đưa ra.
Vậy nên hãy trở lại cập nhật profile và gửi lại một lần nữa theo các lưu ý bên trên.