Showing posts with label SA. Show all posts
Showing posts with label SA. Show all posts

Certificates in Software Architecture

Let’s continue investigating Software Architecture. In this article we will consider the certification of architects. We will analyze issues related to the types of certificates and methods of obtaining them. Also we will become aware of the need for certificates for a Software Architect.

Why does Software Architect need certificates

Certificates are an official and documented way to show your skills. According to Microsoft, 86% of recruiters track the existence of certificates from the candidate. 64% of HR managers indicate that existence of certificates affects career in IT. Certificates confirm skills and help the candidate find work easier. If the recruiter sees two identical summaries, then his choice will fall on the candidate, who has a certificate confirming her/his skills.
If certificates really influenced the career of the architect, they could be considered as a silver bullet. However, there are moments that devalue certificates:
  • The uniqueness of the architect. A certificate for an average developer means much more. This is because when searching for a developer in companies such as Google or Facebook, the recruiter accumulates hundreds of resumes for one position. One of the options to highlight your resume among the rest may be the availability of a certificate that formally proves the candidate’s skills. For a software architect, such a scheme is not suitable, because there are very few architects on the market, and usually they have great visibility.
  • Software Architecture is a practice. Each certificate implies passing of the theoretical part. But for the architect nothing can replace practical experience. In theoretical preparation there is no answer to the question of what to do if the cost of a solution error costs millions of dollars, and the consequences can be understood six months later. Or how to connect non-functional requirements for a project on which 30 stakeholders with the same degree of responsibility. In theory, there are several approaches to solving this problem, but in practice they may not work. Therefore, the loss of an architect for a company rises in an insane amount of money, just like the growth of a new one inside the company. Nothing can replace practical experience.
  • A certificate is a formality. Many certificates can be obtained by spending a month preparing and not understanding the topic before. All questions take place within a month, then the memorized correct answers are displayed in the exam. A month after the successful completion, the candidate no longer remembers a single answer, but the certificate is received. There are special guides and manuals how to pass on the required certificate and what you need to learn for this.
At the beginning, we specifically considered the minuses of certification, so as not to get the impression that it is a must-have for the architect. Now let’s look at the existing certification systems and find out what pluses certificates give for the architect’s career.

Certificates for Solution Architect

Let’s consider the basic universally recognized certificates for Solution Architects (see who’s Solution, Enterprise and Domain Architects in the previous article):
  • Certified Software Architect by Carnegie Mellon University. One of the most formal options. It consists of three courses. Almost like Master Degree in Software Architecture! The certificate is free, but there is a nuance — you will have to pay all three courses of study :)
  • CITA-P: Certified IT Architect. It costs US$ 300. Held by IASA (an Association of All IT Architects). It looks like a classic certification system with online / offline courses, own book and the opportunity to become a part of this association.
  • Certified SOA Architect. Provide a separate school for architects. The school consists of 23 lessons and is the most complete of the entire list of this article. One of the most interesting options for learning and becoming a software architect.
  • Private certifications SA. Large companies have their own certification systems for architects. For example, EPAM Systems has Solution Architect University, which consists of three levels. Each level implies 4 months of training and contains a large amount of theoretical and practical work. The biggest plus of such certification is that they are more directed to practice than others. The biggest minus is availability only to the company’s employees.

Certificates for Enterprise Architect

  • ITIL Master (Axelos). The cost depends on the place of passing. ITIL (Information Technology Infrastructure Library) is a global provider of certification and quality assessment systems in a wide range of software development areas. And also, one of the most popular certification systems in the world (more than 2M certified specialists in the world, but not all of them are architects). There are 5 levels of the exam, the architect needs to get the last fifth level — ITIL Master Certificate — IT Service Management.
  • TOGAF 9 (The Open Group). There are two levels. It costs US$ 320 per level or US$ 496 for both. It is the recognized leader among certification systems for enterprise architects. In fact, it represents a framework for the organization of development and architecture in more than 80% of companies in the world. There is documentation for this framework, consisting of ± 500 pages, which should be used when preparing for the exam.
  • CTA (Salesforce). The cost is US$ 6,000. It is carried out by Salesforce. A distinctive feature is the requirements that must be met for the exam. Namely, 5 years of proven practical experience in the full development cycle, or 3 years of proven practical experience in the role of architect.
  • Zachman Certified — Enterprise Architect (Zachman). To obtain this certificate, it is necessary to pass a 4-day workshop priced at US$ 3,499. It is a recognized ontology of enterprise architecture. Created by John Zachman. Like a TOGAF it is a framework. Its distinctive feature is the presence of four levels of the certificate: from associate (level I) to educator (level 4).
  • RHCA (Red Hat). Costs are from US$ 2000 for level I to US$ 2,400 for level II. It is held by Red Hat. It has a wide set of requirements for passing the certificate exam. In particular, you need to get 5 basic certificates. To pass the exam, you must use the company’s paid resources, including the possibility to hire an instructor offline or online.

Certificates for Domain architect

For Domain architects, there are also certificates. There are much more of them than for Solution and Enterprise architects. Most of the large companies provide certificates both for individual directions, like JavaEE from Oracle, and for certain technologies, for example, Amazon Web Services. Let’s consider a special case of such certificates related to cloud computing:
  • AWS Architect certification. From US$150 for the Associate level to US$300 for Professional. Requirements for passing: a year of experience with AWS for the Associate level, and you need to have the Associate certificate to apply for Professional. A distinctive feature is that the exam itself is updated every six months.
  • AZURE Architect certification. From US$100. Microsoft has a large number of certificates that are recognized throughout the world of development and affect the developer’s career. Like Amazon, Microsoft actively updates all certification systems.
Certificates for Domain architects have some distinctive features to be differed from Enterprise certificate & Solution Architect certificate:
  • Knowledge, like certificates, is becoming obsolete quickly. Yesterday you passed the exam for one version of technology, today another one has come out and the knowledge has become invalid. Count on the “lifetime” service time certificate is not worth it. In domain areas everything changes often and knowledge becomes obsolete every day.
  • Domain certificates are most of all. It is necessary to competently approach the choice, so as not to waist money and time.
  • Narrowly specialized. As a rule, they confirm highly specialized knowledge. It is worth remembering that the higher the architect is on the career ladder, the more abstract the way of her/his thinking is. Therefore, these certificates are rather suitable for developers of specific platforms.

Why does Software Architect need certificates

This question was repeated twice in the article. And the certification systems mentioned above exist for a number of reasons. Perhaps, one of those reasons will be a key for you, and that will encourage you to receive one of the certificates:
  • Customer’s requirement. The customer can require certified employees only. This is one of the key points, why you might need certification. For non-technical persons, certificates are one of the few ways to understand that an expert has the skills to perform a particular job.
  • If you work on the global market. If you have not been heard about in the country of relocation, even if you are a good and well-known specialist on your market, the certificates will allow you to prove your skills.
  • If you want to change your job. The more tags in the resume, the easier it is to change job. But developers know that the more experience they have, the more often the work is looking for them, and not vice versa. For an architect, as for an extremely unique resource on the human resources market, this phrase is even more reasonable.
It is your own decision whether you need a certificate with confirmation of your skills or not. Usually this situational decision is based on current needs. I believe that certificates for an architect are not needed and you do not need to pass exams for them, if this is not required by the reasons outlined above. Practice and constant independent theoretical preparation have much greater importance for the career of an architect.
In the next article, we will consider the list of literature for a Software Architect.

@medium

Định Nghĩa Software Solution Architect?

  Software Solution Architect (thường gọi tắt là Solution Architect hay SA) là một Job trong ngành phần mềm. Với sự bùng nổ của ngành phần mềm những năm gần đây thì Solution Architect là đang là một hướng đi rất đáng để theo đuổi dành cho các bạn đam mê nghề lập trình. Vậy Solution Architect là công việc như thế nào, đóng vai trò gì trong dự án, đòi hỏi những kỹ năng gì, tất cả sẽ được đề cập trong bài viết này.

Vai trò của Solution Architect

Vai trò của một Solution Architect là đưa ra kiến trúc để xây dựng phần mềm đáp ứng được các yêu cầu về functional và non-functional của phần mềm đó. Và điều chớ trêu là thường các yêu cầu về non-functional như performance, security, scalability…mới là những thứ khó đạt được. Vậy thì kiến trúc ở đây bao gồm những gì ? Kiến trúc ở đây nó bao gồm rất nhiều thứ, từ cách phân chia các module như thế nào, mỗi module chịu trách nhiệm xử lý cái gì, phương thức communication giữa chúng ra làm sao, sử dụng platform gì, lựa chọn framework nào, third-party nào… Ngoài việc đưa ra kiến trúc thì Solution Architect cần phải coding prototype để chứng minh tính khả thi của solution, implement những xử lý core, xử lý phức tạp, tạo sẵn khung cho hệ thống để các anh em developer dễ dàng code theo. Ngoài ra, trong nhiều dự án thì Solution Architect cũng phải tham gia vào cả giai đoạn phân tích nghiệp vụ cùng với Business Analyst (BA). Chúng ta có thể hệ thống lại một cách rõ ràng hơn về các công việc mà một Solution Architect cần phải làm như sau:
  • Tham gia phân tích nghiệp vụ để định hướng sớm về Solution hoặc đưa ra các đề xuất điều chỉnh nghiệp vụ để tăng tính khả thi của phần mềm.
  • Đưa ra các giải pháp kiến trúc để đáp ứng được các yêu cầu về functional và non-functional
  • Phân tích, đánh giá các giải pháp và chọn ra giải pháp phù hợp nhất.
  • Code prototype, implement những xử lý core, xử lý phức tạp
  • Transfer lại cho Team về giải pháp, kiến trúc hệ thống.
  • Support team xử lý những vấn đề khó phát sinh trong quá trình implement.

Những tiêu chí nào dùng để đánh giá một Solution có tốt hay không ?

Một Solution tốt thì đương nhiên là phải đáp ứng được các yêu cầu về functional và non-functional, ngoài ra cần phải thỏa mãn các tiêu chí sau:
  • Maintainability: Đáp ứng với việc thay đổi một cách nhanh chóng, tốn ít công sức và mức độ ảnh hưởng thấp.
  • Scalability: Có khả năng mở rộng, xây dựng thêm các tính năng mới mà ít ảnh hưởng đến các tính năng sẵn có. Tốn ít thời gian và công sức
  • Reusability: Phải thiết kế làm sao để các module có thể được sử dụng lại ở các hệ thống khác mà không cần phải chỉnh sửa hoặc chỉnh sửa rất ít.
  • Reliability: Hệ thống xây dựng theo solution đó phải có độ tin cậy cao, chạy ổn định, đảm bảo toàn vẹn dữ liệu.
  • Testability: Có thể dễ dàng test được hệ thống sử dụng các test framework sẵn có
  • Security: Hệ thống xây dựng theo solution đó phải đảm bảo an toàn thông tin (chống tấn công mạng, chống revert source code,… ). Thường thì các hệ thống chạy trên nền tảng web, mobile sẽ đòi hỏi về security cao hơn các hệ thống khác.
  • Feasibility: Đây là một tiêu chí quan trọng nhất nhưng được nói đến cuối cùng vì nó ảnh hưởng đến tất cả các tiêu chí kể trên.  Một Solution đưa ra thì ngoài việc phải khả thi về phương diện kỹ thuật thì còn phải khả thi về phương diện nguồn lực con người, phải khả thi về mặt thời gian. Chính vì vậy đôi lúc, để đảm bảo Feasibility thì chúng ta phải hy sinh một số các tiêu chí đã đề cập ở trên.
Khi nghiên cứu để đưa ra solution cho một yêu cầu nào đó thì Solution Architect cần phải bám vào các tiêu chí này để đưa ra solution sao cho phù hợp nhất.

Những kiến thức và kỹ năng cần có ở một Solution Architect giỏi

  • Self Study: Solution Architect phải có khả năng tự học, tự tổng hợp và chọn lọc lượng kiến thức khổng lồ từ internet một cách nhanh chóng để phục vụ cho công việc của mình.
  • Coding: Solution Architect phải là người có kỹ năng coding đỉnh của đỉnh. Vì khi làm solution thì phải code thử để xem solution có khả thi hay không, sau đó còn phải code prototype, implement các xử lý chính. Tất cả những việc đó cần phải hoàn thành trong thời gian ngắn nên nếu không có kỹ năng coding cao thủ thì khó có thể làm được.
  • Programming Language: Solution Architect cần phải hiểu rất sâu ít nhất một ngôn ngữ lập trình. Nếu giỏi nhiều ngôn ngữ lập trình thì sẽ tốt hơn vì sẽ biết nhiều framework hơn, có nhiều lựa chọn cho các solution hơn.
  • Framework: Hiểu biết nhiều framework, biết cách áp dụng các framework đó để giải quyết các bài toán cụ thể.
  • Architecture Pattern: Cần có tư duy thiết kế theo Pattern, áp dụng các Pattern sẵn có vào solution để tăng chất lượng và độ tin cậy.
  • New Technology: Luôn luôn nghiên cứu và học hỏi các công nghệ mới, xu thế mới trong lĩnh vực của mình, đưa các công nghệ đó áp dụng vào các solution của mình.
  • Domain Knowledge: Nên trang bị các kiến thức về lĩnh vực mà mình đang làm, điều này sẽ rất có lợi cho Solution Architect khi phân tích requirements.
  • Documentation: Nếu bạn có kiến thức uyên thâm, design hệ thống tốt nhưng lại không viết thành tài liệu để người khác hiểu được thì cũng vô nghĩa. Vì vậy kỹ năng viết tài liệu một cách khoa học, logic, rõ ràng và dễ hiểu là cực kỳ quan trọng đối với một Solution Architect.
  • Presentation & Communication: Solution Architect không làm việc độc lập, sau khi đưa ra được solution để giải quyết yêu cầu thì Solution Architect cần phải trình bày và bảo vệ solution của mình với đội ngũ phát triển (development team), với khách hàng. Solution Architect cũng cần transfer solution của mình cho development team và support họ bất cứ lúc nào. Vì vậy, kỹ năng Presentation & Communication là cực kỳ quan trọng.

Cần làm gì để trở thành một Solution Architect ?

  • Xác định rõ lĩnh vực phần mềm mà bạn muốn làm. Ví dụ: Enterprise application, Automotive, Cloud, Big Data, Mobile Application, IoT…
  • Hãy xem bạn còn thiếu kỹ năng, kiến thức gì thì cố gắng bổ sung và tích lũy liên tục trong quá trình làm dự án. Khi làm các dự án hãy quan tâm đến Architectural Design của hệ thống, các Technology, Framework, Platform được sử dụng trong các dự án đó. Cố gắng hiểu những thứ đó, và nếu có thể hãy copy các tài liệu liên quan để tham khảo về sau. Ngoài việc học từ dự án hãy học các khóa online về các công nghệ mà bạn quan tâm. (Các trang nên học mình sẽ recommend ở một bài khác)
  • Luôn phấn đấu, thể hiện vai trò, tầm quan trọng và ảnh hưởng của bạn trong các dự án mà bạn tham gia. Khi bạn có tầm ảnh hưởng lớn thì các sếp sẽ để ý bạn, bạn sẽ được đưa lên các vị trí cao hơn, từ dev sẽ lên team lead, technical leader.
  • Trong các dự án phần mềm không phải lúc nào cũng có sự tham gia của Solution Architect. Những dự án vừa và nhỏ, hoặc không phức tạp về kỹ thuật thì thường không có Solution Architect, và khi đó Technical Leader của dự án sẽ kiêm luôn một số công việc của Solution Architect. Nếu bạn đang là Technical Leader, hãy nắm bắt lấy cơ hội để luyện tập và trải nghiệm công việc của Solution Architect.
  • Hãy đăng ký tham gia các khóa học về Solution Architect mà công ty ban tổ chức, hoặc các khóa online chất lượng khác về Solution Architect. Điều đó sẽ giúp bạn hệ thống lại các kiến thức của mình một cách bài bản hơn, có cái nhìn toàn diện hơn về nghề Solution Architect.
  • Nếu có điều kiện (thời gian, tiền bạc) thì hãy cố gắng thi các chứng chỉ quốc tề về Solution Architect.

Một số chứng chỉ Solution Architect quốc tế cho anh em tham khảo

Con đường đến ngày vinh quang còn dài phía trước, chúc các bạn, các anh em may mắn và thành công !

The Ultimate XP Project

  (Bài chia sẻ của tác giả  Ryo Amano ) Trong  bài viết  số này, tôi muốn viết về dự án phát triển phần mềm có áp dụng nguyên tắc phát triển...