Bài viết được sự cho phép của tác giả Nguyễn Hoàng Phú Thịnh Đã bao giờ anh em thắc mắc: Product trong ngành công nghệ là gì? Nó khác gì với các “software” thông thường? Và ranh giới giữa một thứ được xem là “product” và một thứ “chỉ-được-xem-là-software” là gì 🙂 ? Chả hiểu bằng một ma lực nào đó mà thời gian qua, các câu hỏi này cứ liên tục trôi nổi trong đầu mình. Nay mình note ra vài thứ (có thể xem là) trải nghiệm cá nhân về 2 khái niệm: product và software này. Hi vọng có dịp cùng anh em chém gió, đàm đạo sôi nổi về topic này 😎 Product vs Software Nói theo ngôn ngữ marketing thì “Product is anything that can be offered to the market that satisfied a want or need“. Anything ở đây có thể là vô hình hoặc hữu hình. Hữu hình như cái chén, cái muỗng, cái dĩa. Đến những thứ vô hình như: tour du lịch, excel, bữa ăn tối tại nhà hàng, hay dịch vụ sử [...]
Read more →Trong bối cảnh thế giới ngày càng chú trọng đến sự bền vững và giảm thiểu tác động môi trường, các yếu tố chất lượng của kiến trúc phần mềm cũng đang dần thay đổi để thích ứng với yêu cầu này. Bài viết này sẽ trình bày chi tiết về tính bền vững như một yếu tố chất lượng mới trong kiến trúc phần mềm và những bước cần thiết để đạt được điều này. Các thuộc tính chất lượng Các yêu cầu không chức năng (non-functional requirements) là các tiêu chí quan trọng để đánh giá mức độ hoàn thiện của một hệ thống phần mềm. Chúng bao gồm hơn 80 thuộc tính đáng chú ý như tính sẵn sàng, độ tin cậy, khả năng mở rộng, bảo mật và bảo trì. Dưới đây là một số bộ thuộc tính chất lượng chính: Bảo mật (Security): Bảo mật thông tin, tính toàn [...]
Read more →Bài viết được sự cho phép bởi tác giả Vũ Thành Nam Đây là bài viết tiếp tục chặng đường trở thành SA của mình mà mình có đề cập đến trong bài viết “Software Architect – Con đường chẳng hề dễ dàng“. Đúng là một con đường chẳng hề dễ dàng. Bài viết này mình đã tổng hợp được những kỹ năng cụ thể cần phải đạt được khi dấn thân vào con đường đầy chông gai này, có thể sau này mình có vững tâm rẽ theo con đường này hay không thì bài viết này mình cũng xin chia sẻ những kỹ năng này tại đây để các bạn cũng có thể nắm được như mình tại thời điểm hiện tại. Cùng đi tiếp nghiệp Architect sẽ gồm 3 level cơ bản sau: Application Level: Đây là level thấp nhất, nó tập trung vào một ứng dụng riêng lẻ, thiết kế kiến trúc chi tiết nhưng ở mức thấp, sẽ phải làm việc chủ yếu với [...]
Read more →Bài viết được sự cho phép bởi tác giả Vũ Thành Nam Bài viết sau đây chỉ ra những kỹ năng mà mình cần hướng tới để có thể tiếp tục trên con đường trở thành một Software Architect (SA) của bản thân mình, có thể nó đúng, có thể nó sai, có thể rằng một ngày nào đó mình dừng chân ở một vị trí nào đó khác với vị trí này, nhưng mình vẫn muốn viết lại để có thể lưu lại và chia sẻ những giai đoạn mà mình lựa chọn nó. Sau này đọc lại chắc sẽ vui lắm đây! Đầu tiên phải nói là với vị trí này thì mình nhận ra được rằng phong cách việc mỗi người mỗi vẻ, chẳng ai giống ai trong quá trình quan sát các anh chị đi trước, và cũng đã từng làm việc cùng với rất nhiều các anh SA. Giống như việc một kỹ sư thiết kế, không nói đến việc những tiêu [...]
Read more →Lập trình nhúng hiện nay đang tạo một xu hướng nghề nghiệp tiềm năng trên thị trường lao động nói chung và nghề lập trình nói riêng. Mức lương dành cho Embedded Software Engineer khoảng bao nhiêu là một câu hỏi mà nhiều bạn mới vào nghề đặt ra; bài viết hôm nay chúng ta cùng nhau tìm hiểu về ngành này và trả lời cho câu hỏi trên nhé. Công việc của một Embedded Software Engineer Embedded Software Engineer hay kỹ sư phần mềm nhúng là những người sẽ làm việc với các hệ thống nhúng Embedded System – một hệ thống có thể tự vận hành và thiết kế tích hợp vào các hệ thống lớn hơn tùy theo mục đích sử dụng. Hệ thống nhúng bao gồm cả phần mềm (software) và phần cứng (hardware), vì vậy công việc của kỹ sư nhúng liên quan đến cả việc xây dựng phần mềm nhúng và đồng thời [...]
Read more →Software Engineer là gì? Software Engineer làm gì? Cơ hội nào để trở thành Sofware Engineer trong năm 2023. Những câu hỏi được liệt kê trên đây đã được trả lời từ khoảng 4,5 năm về trước. Nhưng mỗi năm một khác, yêu cầu về kinh nghiệm và kĩ năng của người kỹ sư phần mềm đang dần thay đổi. Đặc biệt với sự xuất hiện và phát triển mạnh mẽ của AI, Software Engineer vẫn được dự báo là nghề hót hòn họt trong 10 năm tới. Cùng tìm hiểu chi tiết hơn về nghề Software Engineer nhé! [caption id="attachment_56473" align="aligncenter" width="640"] Sắp tới còn vào nhiều meet lắm anh em đừng lo[/caption] 1. Software Engineer là gì? Theo như định nghĩa khá là phổ biến và thông dụng cho Software Engineer thì Software engineer is the branch of computer science that deals with the design, development, testing, and maintenance of software applications. Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users. Software Engineer (kỹ sư phần mềm) là một nhánh của khoa học máy tính, làm [...]
Read more →Khi xây dựng một hệ thống lớn dành cho các tổ chức, công ty thì việc thiết kế, phát triển và quản lý được một giải pháp kiến trúc để vận hành là một công việc đòi hỏi những kỹ năng chuyên môn cao. Vì thế mà vị trí Solution Architect – Kiến trúc sư giải pháp thường được đảm nhiệm bởi các kỹ sư có nhiều năm kinh nghiệm cùng với những hiểu biết sâu sắc về các công nghệ liên quan. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về Solution Architect là gì và những kỹ năng cần có của một Solution Architect nhé. Solution Architect là gì? Khi một tổ chức, công ty hay doanh nghiệp đối mặt với nhu cầu chuyển đổi các quy trình và hệ thống để có thể đáp ứng được các yêu cầu kinh doanh mới; họ sẽ cần tìm ra được một danh sách các hoạt động cần phải làm theo trình tự từ [...]
Read more →Bài viết đến từ anh Nguyễn Ngọc Hải - Quản lý cao cấp Kiến trúc Giải pháp Enterprise Architect team @Techcombank Tổng quan Trong quy trình phát triển phần mềm, các nguyên tắc về thiết kế component là không thể thiếu để có một hệ thống được tổ chức quy củ, dễ mở rộng và dễ quản lý. Components trong bài dùng để chỉ đến các thành phần nhỏ nhất, thuộc về một hệ thống, có thể triển khai được một cách tương đối độc lập với các component khác, có thể là micro-service, hoặc library, package, v.v.. Các nguyên tắc thiết kế dưới đây giúp hướng dẫn developer và kiến trúc sư đặt class nào vào component nào (component cohesion), và những component đó liên quan gì đến nhau (component coupling). Việc có các nguyên tắc thiết kế đặc biệt quan trở nên quan trọng khi các hệ thống phần mềm phát triển ngày một lớn và phức tạp. Lúc này chỉ riêng việc quyết định đặ [...]
Read more →Solution Architect là một vị trí rất quan trọng trong các tổ chức, công ty phần mềm hay phát triển sản phẩm, đóng vai trò quyết định đến sự thành công của một dự án hay một sản phẩm. Vị trí Solution Architect thường đòi hỏi kinh nghiệm làm việc ở trong ngành từ trên 5 năm cùng với những kiến thức chuyên sâu liên quan đến kiến trúc hệ thống và các nguyên tắc thiết kế. Hôm nay chúng ta cùng nhau điểm qua những câu hỏi phỏng vấn mà nhà tuyển dụng thường hỏi cho vị trí Solution Architect nhé. Solution Architect là gì? Solution Architect (SA) hay kiến trúc sư giải pháp phần mềm là người có vai trò đưa ra giải pháp, tính năng của sản phẩm phục vụ và đáp ứng theo yêu cầu của khách hàng. Đối với một sản phẩm phần mềm luôn có những yêu cầu về mặt chức năng (functional) và phi chức [...]
Read more →Software Architect, chức vụ chỉ nghe thôi đã thấy to, vậy phỏng vấn Software Architect có gì đặc biệt? Những câu hỏi và nội dung kiến thức nào thường được đề cập khi phỏng vấn Software Architect? Trách nhiệm của Solution Architect là làm sao đặt business logic vào không bể nha anh em. Là một người chịu trách nhiệm lớn cho sự thành công hay thất bại của dự án phần mềm. SA là công việc stress. Nhưng trách nhiệm lớn đồng nghĩa với lương cao. Tất nhiên lượng kiến thức nằm trong đầu cũng thuộc dạng khủng khiếp. Thử lướt xem mấy câu hỏi phỏng vấn SA thì có gì nào? Rồi, bắt đầu thôi anh em! Dạo qua vài ba câu định nghĩa chưa có gì khó. Phần sau sẽ là những câu hỏi khó hơn. 1. Software Architect là gì? Câu hỏi đầu tiên phỏng vấn Software Architect chưa đi ngay vào các khái niệm kiến thức mà đi và [...]
Read more →Trong một công ty hay một dự án phần mềm có rất nhiều vị trí chức danh tương ứng với vai trò khác nhau. Software Manager hay Quản lý phần mềm là một chức danh mà không phải ở công ty nào cũng có, mặc dù công việc và trách nhiệm của họ rất quan trọng và có nhiều điểm giống với một vài vị trí khác. Trong bài viết hôm nay chúng ta cùng tìm hiểu về công việc của một Software Manager cũng như những kỹ năng cần thiết để trở thành quản lý phần mềm nhé. Software Manager là gì? Người quản lý phần mềm là vị trí trong công ty, tổ chức có nhiệm vụ giám sát sự phát triển, việc cài đặt và bảo trì một phần mềm mới và những phiên bản cập nhật mở rộng (upgraded) của nó. Với tư cách là một Software Manager, bạn sẽ phải phối hợp với các thành viê [...]
Read more →Lại là chuỗi bài câu hỏi phỏng vấn và lần này là bộ câu hỏi phỏng vấn Software Developer. Ở chuỗi bài viết này, xin phép anh em được tách ra thành 4 phần. Nguyên nhân là vì Software Developer là vị trí đòi hỏi cực nhiều kiến thức, không chỉ đơn giản 1 phần mà đã nêu ra được hết toàn bộ kiến thức cần có. Ngoài kiến thức về mặt kỹ thuật, vị trí Software Developer còn đòi hỏi một lượng kiến thức khổng lồ về quy trình phát triển phần mềm, kinh nghiệm làm việc thực tế. Vân vân và mây mây. Ở bài viết phần 1 này xin mạn phép viết trước cho anh em về mặt kỹ thuật. Tuy số lượng câu hỏi không nhiều, nhưng với các câu hỏi được nêu, mong rằng anh em sẽ hệ thống lại được kiến thức. Từ câu hỏi được nêu xem lại các phần kiến thức liê [...]
Read more →Trong thời đại công nghệ “bùng nổ” như hiện nay, ngành công nghiệp phần mềm đang trở thành một trong những ngành có tốc độ phát triển nhanh nhất. Trong lĩnh vực này, Software Developer đóng vai trò rất quan trọng trong việc tạo ra các sản phẩm phần mềm với những chức năng mới phục vụ nhu cầu người dùng. Vậy Software Developer là gì? Những cơ hội và thách thức của công việc này như thế nào? Hãy cùng TopDev đi tìm câu trả lời dưới bài viết này nhé! Software Developer là gì? (Kỹ sư phần mềm) Software Developer là hay còn gọi là kỹ sư phần mềm, họ là những người chịu trách nhiệm thiết kế, xây dựng và duy trì các ứng dụng phần mềm. Những ứng dụng họ tạo ra có thể là ứng dụng di động, phần mềm máy tính, hoặc bất kỳ sản phẩm phần mềm nào khác để giải quyết [...]
Read more →Bài viết được sự cho phép của tác giả Edward Thien Hoang Solution Architect hay còn được gọi là Kiến trúc sư Giải pháp là một job title trong các công ty software. Bài viết này nhằm cung cấp cho các bạn đang là software engineer một lộ trình để có thể up skill của mình lên vai trò mới là Solution Architect. Lưu ý bài viết chỉ mang tính chất tham khảo từ kinh nghiệm cá nhân của mình. Trước tiên, định nghĩa về Solution Architect Có rất nhiều role về Architect trong một doanh nghiệp bao gồm: Enterprise architects, Domain architects, Solution architects, Data architects, Technical architects, Security architects, Infrastructure architects, Application architects hoặc thậm chí là Cloud Architect như AWS Architect hoặc Azure architects, … Bài viết này không nhằm mục đích là giải thích từng role architect ở trên, mà tập trung vào Solution architects. Có thể hiểu Solution Architect là người chịu trách nhiệm xây dựng giải pháp cho một bài toán hoặc yêu cầu cụ thể từ phía khách hàng. [...]
Read more →Bài viết được sự cho phép của tác giả Edward Thien Hoang Và điều đầu tiên đề cập đến trong bài viết này tôi gọi là “lược sử (timeline) về kiến trúc phần mềm” nơi tác giả liệt kê các mốc chính về các mô hình lập trình, các kiểu thiết kế nổi bật từ thuở sơ khai đến hiện tại, có thể kể đến như: [irp posts="6630" name="10 Công cụ Go-To Tech dành riêng cho các Software Developer"] [irp posts="19795" name="Biến Git và GitHub trở thành công cụ đắc lực cho Software Engineer"] 1950S Non-structured Programming ~1951 – Assembly 1960S Structured Programming Layering: 1 tier with the UI, Business Logic and Data Storage ~1958 – Algol 1970S Procedural / Functional Programming ~1970 – Pascal ~1972 – C 1979 – Model-View-Controller 1980S Object Oriented Programming (first thoughts were in the late 1960s, though) Layering: 2 tier, the 1st tier with the UI, the 2nd tier with Business Logic and Data Storage ~1980 – C++ CORBA – Common Object Request Broker Architecture (though the first stable version was only out in 1991, the first usages were during the 1980s) ~1986 – Erlang ~1987 – Perl 1987 – PAC aka Hierarchical Model-View-Controller 1988 – LSP (~SOLID) 1990S Layering: 3 tier, the 1st tier with the UI, the 2nd tier Business Logic (and the UI presentation logic in case of a browser as client), the 3rd [...]
Read more →