Software Architect là gì? Sai lầm nguy hiểm của Software Architect?

Bởi tuhocmoithu
Software Architect là người nghiên cứu và phân tích nhu yếu của người mua ( bên trong hoặc bên ngoài công ty ) rồi đưa ra phong cách thiết kế mạng lưới hệ thống và theo dõi sát đội Developer để bảo vệ họ làm theo đúng phong cách thiết kế .
Software Architect phải theo sát đội Developer khi thiết kế xây dựng và quản lý và vận hành mạng lưới hệ thống, cũng như khi duy trì và lan rộng ra mạng lưới hệ thống .

Đọc bài phỏng vấn của ITviec với anh Phạm Tuấn Dũng, Technical Project Manager của M_Service (MoMo), người có hơn 3 năm kinh nghiệm làm Software Architect, để biết:

  • Software Architect là gì? Công việc cụ thể của họ?
  • Sai lầm “nhớ đời” của anh Dũng khi làm Software Architect và bài học rút ra
  • Lời khuyên dành cho các bạn trẻ muốn trở thành Software Architect

Xem thêm việc làm Software Architect trên ITviec

Chào anh Dũng! Công việc đầu tiên của anh sau khi ra trường là gì?

Sau khi tốt nghiệp ngành Information System của Đại học Ngoại ngữ – Tin học TP. Hồ Chí Minh ( HUFLIT ) vào năm 2006, anh đầu quân cho GHP Solutions ( nay là Swiss Post Solutions ), một công ty outsourcing của Thụy Sĩ .
Anh chọn công ty này vì khi đến phỏng vấn, anh thấy môi trường tự nhiên ở đây chuyên nghiệp. Hơn nữa, hai người phỏng vấn anh – chị Project Manager và anh Team Leader nice quá. 🙂
Ban đầu, anh làm việc làm QC ( Quality Control ). Ba tháng sau, khi biết Team Developer thiếu người, anh xin sếp chuyển qua team này, vì việc làm của một Developer gần với ngành học của anh hơn .
Tuy nhiên, lúc đó anh chưa có khuynh hướng gì về con đường sự nghiệp của mình cả. May mắn là anh gặp được một chị sếp rất tốt. Đó là Project Manager, sếp trực tiếp của anh. Chị ấy đã giúp anh thiết kế xây dựng career path rất rõ ràng : sau 3 năm trở thành Senior Developer, làm ở vị trí này 2 năm sẽ tham gia một kỳ thi để trở thành Principal Developer ( gần giống như Team Leader ) .
Chị ấy cũng giao những “ tasks ” đơn cử để anh học hỏi và rèn luyện những kỹ năng và kiến thức thiết yếu trên con đường tăng trưởng sự nghiệp .

Là những “tasks” gì vậy anh?

Anh vẫn còn nhớ “ task ” tiên phong là anh phải vẽ được quy mô giải quyết và xử lý của những màn hình hiển thị chị ấy giao cho .
Mục tiêu tiếp đó của anh là học về tiến trình tăng trưởng ứng dụng và điều tra và nghiên cứu về Unified Modeling Language ( UML ) .
Và “ task ” sau cuối anh hoàn thành xong ở GHP là tự phong cách thiết kế và coding một module dùng để tự lọc data từ những bản scan văn bản viết tay .
Một điều mê hoặc nữa trong thời hạn anh thao tác ở GHP là anh gặp một bác Senior Developer người Đức ở công ty đối tác chiến lược. Bác ấy nói chỉ tập trung chuyên sâu vào coding thôi thì chán lắm, rồi khuyên anh nên tìm một môn thẩm mỹ và nghệ thuật nào đó, ví dụ điển hình như chụp ảnh, để cân đối đời sống và code tốt hơn. Sau đó anh nhận ra là bác ấy nói đúng ! 🙂

Những trải nghiệm của anh ở GHP thật đặc biệt. Vậy tại sao anh lại rời công ty này?

Anh muốn học một cái gì đó mới lạ. Anh muốn thử sức ở nghành mobile application. Vì vậy, sau 2 năm làm ở GHP, anh chuyển qua BlueClub, một công ty start-up về những giải pháp mobile .

Các công việc của anh sau đó? Hành trình đến vị trí Software Architect của anh như thế nào?

Anh ở BlueClub được 2 năm thì chuyển sang ME Corp, làm Senior Developer cho mảng game mobile của công ty. Một năm sau, anh mở màn việc làm của một Software Architect : tham gia phong cách thiết kế mạng lưới hệ thống game server, phong cách thiết kế database, system .
Một thời hạn sau thì anh chuyển qua đầu quân cho VNG. Anh gắn bó với VNG 4 năm, làm ở vị trí Team Leader và những việc làm giống như Software Architect, ví dụ như tham gia phong cách thiết kế những framework và mạng lưới hệ thống game server. Một điều mê hoặc là kinh nghiệm tay nghề anh học được trong thời hạn làm ở VNG gần như gấp đôi 6 năm trước đó .
Năm năm nay, anh gia nhập ngành e-commerce, thao tác tại HOTDEAL với vị trí Technical Advisor. Công việc này cũng gần giống với Software Architect .
Đầu năm 2017, anh chuyển đến M_Service ( MoMo ) và thao tác ở vị trí Technical Project Manager cho đến nay. Công việc này cũng khá giống với nghĩa vụ và trách nhiệm của Software Architect. Anh chịu nghĩa vụ và trách nhiệm quản trị những nhóm dự án Bất Động Sản và tham gia tương hỗ những development team về những yếu tố kỹ thuật như kiến trúc mạng lưới hệ thống và điều tra và nghiên cứu công nghệ tiên tiến .

Vậy công việc của một Software Architect là gì?

Khá nhiều người nghĩ Software Architect là người chỉ phong cách thiết kế kiến trúc mạng lưới hệ thống lúc đầu là xong việc, như kiểu vẽ bản vẽ để người ta xây nhà rồi đi mất. Thực chất việc làm của Software Architect liên tục và gắn liền với dự án Bất Động Sản từ khi khởi đầu đến lúc kết thúc .
Software Architect không chỉ nghiên cứu và phân tích nhu yếu của người mua ( bên trong hoặc bên ngoài công ty ) rồi đưa ra phong cách thiết kế mạng lưới hệ thống mà phải theo dõi sát đội Developer để bảo vệ họ làm theo đúng phong cách thiết kế. Software Architect phải theo sát đội Developer khi kiến thiết xây dựng mạng lưới hệ thống, khi quản lý và vận hành mạng lưới hệ thống, cũng như khi duy trì và lan rộng ra mạng lưới hệ thống .

Thường một ngày làm việc của anh sẽ như thế nào?

Mỗi sáng, anh sẽ họp với những bạn Developer, review những nhu yếu của người mua ( người mua ở đây gồm có cả người mua ở ngoài lẫn những phòng ban khác trong công ty ). Anh sẽ cùng những bạn Developer nghiên cứu và phân tích những nhu yếu mà hoàn toàn có thể tác động ảnh hưởng đến performance mạng lưới hệ thống và lựa chọn những giải pháp tương thích nhất .
Ví dụ, anh nhận được nhu yếu phong cách thiết kế một framework server cung ứng được tính không thay đổi và năng lực lan rộng ra. Trong team, có một bạn Senior Developer muốn chọn ngôn từ C + + và kiến trúc server khá phức tạp. Tuy nhiên, những thành viên khác trong team lại không có ai biết nhiều về C + +, mọi người thiên về Java hơn .
Vì vậy, anh phải cố gắng nỗ lực thuyết phục bạn Senior Developer đó chọn hướng làm theo ngôn từ Java và kiến trúc framework Netty để cân đối điểm mạnh và yếu giữa những thành viên với nhau, để cả team hoàn toàn có thể cùng nhau làm framework server tốt hơn .
Sau buổi họp, anh sẽ review mạng lưới hệ thống, xem nó có chạy không thay đổi không, có phát sinh lỗi gì không .
Thông thường mỗi tuần anh sẽ có 2-3 buổi họp với những development team. Anh sẽ tranh luận với những Technical Leader của những team này về những dự tính của họ, ví dụ điển hình như lan rộng ra mạng lưới hệ thống hay liên kết với đối tác chiến lược mới. Anh sẽ nghiên cứu và phân tích và tư vấn cho những Technical Leader về những kế hoạch này .

Anh có tham gia code không?

Công việc của anh không nhu yếu anh phải code. Tuy nhiên, anh vẫn liên tục code bằng ngôn từ Java and C + + khi phong cách thiết kế mạng lưới hệ thống để duy trì kiến thức và kỹ năng kỹ thuật của mình .

software-architect-la-gi

software-architect-la-gi
Anh Dũng ( đứng thứ 3, từ phải sang ) chụp ảnh cùng team Developer nhân ngày kỷ niệm 10 năm xây dựng Công ty M_Service ( MoMo ) năm 2017

Sai lầm lớn anh từng mắc phải trong công việc Software Architect là gì?

Chuyện này xảy ra ở công ty cũ, lúc anh vừa được “ promote ” lên làm việc làm Software Architect. Anh thấy rất háo hức và tin là mình sẽ làm tốt vai trò này .
Lần đó anh được sếp giao cho một dự án Bất Động Sản lớn : phong cách thiết kế framework cho hàng loạt game server của công ty .
Cứ mỗi khi anh phong cách thiết kế xong một module, ví dụ như về tính năng hay cách hoạt động giải trí, anh gửi email báo cáo giải trình sếp. Sếp anh vấn đáp lại : “ OK em ”, “ OK em ”. Anh nghĩ sếp OK tức là duyệt rồi, nên sau đó chia việc cho 2 anh Senior Developer trong team làm .
6 tháng sau, khi team tăng trưởng xong framework, anh trình sếp. Và ảnh làm anh bị sốc .
“ Cái framework này không được rồi em ơi ! Em design kiến trúc sai rồi. Cái này mà nếu apply, khi có nhiều user connect vào là treo luôn sever đó ! ”
“ Design database cũng có yếu tố luôn, có chỗ bị deadlock khi caching nè, ” sếp anh nói tiếp .
Anh thật sự sốc. Lúc đó anh mới nhận ra là sếp anh không thực sự hiểu những yêu cầu của anh mặc dầu ảnh vấn đáp “ OK ” .
Anh mở màn thấy sợ. Anh nghĩ trong đầu : “ Thôi chết rồi, cú này chắc khó sống rồi. Dự án này mất nhiều thời hạn quá. Mọi người đang rất kỳ vọng vào nó, mà mình làm nó fail mất rồi. ”
Anh cũng cảm thấy khó tha thứ cho bản thân mình. Vì cái lỗi này ngớ ngẩn quá. Chỉ cần anh vẽ mọi thứ ra rồi đưa sếp xem là không xảy ra rắc rối rồi .
Anh nghĩ chắc mình sẽ bị đuổi việc nên anh đã sẵn sàng chuẩn bị sẵn tờ đơn xin nghỉ việc để trong hộc bàn. Anh định sẽ gửi cho sếp rồi nghỉ .
Nhưng sếp làm anh giật mình. Ảnh nói với anh : “ Dự án lần này chú làm fail rồi. Nhưng thôi không sao, nó thuộc khối R&D ( Research và Development ), sẽ Giao hàng lâu dài hơn cho công ty. Nên anh đồng ý delay, coi như là bài học kinh nghiệm cho chú trưởng thành. ”
Thế là anh và 2 anh Senior Developer trong team sửa lại framework. Khoảng 3 tuần sau thì tụi anh hoàn thành xong .
Sau sự cố này, anh rút ra được bài học kinh nghiệm : phải tăng cường tiếp xúc, tiếp xúc là mấu chốt khi làm bất kể dự án Bất Động Sản nào. Anh mắc lỗi vì đã cho rằng sếp hiểu những yêu cầu của anh nên mới duyệt .
Từ đó về sau, mỗi khi thao tác gì, anh đều bảo vệ là ngoài việc gửi email, hai bên phải cùng hiểu và cùng chấp thuận đồng ý trên một quy mô đơn cử, document đơn cử. Đến giờ, anh không còn mắc phải những lỗi về tiếp xúc như vậy nữa .

3 lời khuyên anh muốn gửi tới các bạn muốn trở thành Software Architect là gì?

Dựa trên kinh nghiệm của bản thân mình, anh có vài lời khuyên cho các bạn trẻ.

1. Tìm hiểu thật kỹ và sâu về kỹ thuật, không chỉ đơn thuần về công nghệ mà còn về những thứ xung quanh công nghệ. Ví dụ, bên game có công nghệ mới là Unity. Bên cạnh Unity, bạn cũng nên tìm hiểu những thứ xung quanh nó như design, hiệu ứng, và plug-in.

2. Trung thành với con đường mà mình chọn. Khá nhiều bạn vạch ra con đường sự nghiệp và đích đến. Tuy nhiên sau vài năm code, một số bạn lại quyết định rẽ hướng, chuyển sang một công việc khác ngoài kỹ thuật.

Kết quả là những bạn phải đương đầu với nhiều khó khăn vất vả và rủi ro đáng tiếc khi thử sức ở một nghành trọn vẹn mới. Bạn cũng phải từ bỏ những kinh nghiệm tay nghề quý báu tích luỹ được ở nghành mình đã làm .
Các bạn đổi nghề vì nghĩ rằng : Ngoài 30 tuổi là nên nghỉ code. Nhưng quan điểm này là sai. Anh từng thao tác với những đồng nghiệp người Thụy Sỹ và Đức, họ làm Senior Developer đến khi về hưu. Họ thích tập trung chuyên sâu nghiên cứu và điều tra kỹ thuật chứ không muốn chuyển sang hướng khác .

3. Khi đã chọn làm việc trong một lĩnh vực nào đó, bạn nên tìm hiểu thật kỹ về nó.

Ví dụ, nếu bạn chọn làm trong ngành fintech, thì ngoài code ra, bạn phải biết những thứ xung quanh fintech. Chẳng hạn như bạn phải biết ngân hàng nhà nước hoạt động giải trí thế nào, dòng tiền cân đối trong một mạng lưới hệ thống ngân hàng nhà nước như thế nào .

Bạn càng biết nhiều về nghành bạn tham gia thì bạn càng hoàn toàn có thể phong cách thiết kế mạng lưới hệ thống chi tiết cụ thể và cung ứng nhiều lựa chọn tương hỗ hơn cho team và đối tác chiến lược .
Giá trị của một Software Architect không phải ở chỗ họ giỏi về kỹ thuật, mà là tầm nhìn của họ về nghành họ đang làm. Khi mạng lưới hệ thống họ design cung ứng càng nhiều mặt trong nghành họ đang làm, mạng lưới hệ thống đó càng có giá trị .

Từ vị trí Developer, cần phải trải qua những vị trí nào để trở thành Software Architect?

Nếu bạn thích trở thành Software Architect, con đường nghề nghiệp của bạn thường sẽ như thế này : Junior Developer -> Developer -> Senior Developer -> Team Leader -> Software Architect .

Theo anh, những kỹ năng và tố chất cần thiết để làm Software Architect là gì?

Anh nghĩ có 4 kỹ năng và kiến thức và năng lực quan trọng nhất :

1. Siêng năng, thường xuyên cập nhật kiến thức kỹ thuật

Nhiều người bên ngoài nghĩ Software Architect là việc làm thư thả, chỉ “ vẽ đường cho hươu chạy ”. Thực tế không phải vậy, mình phải liên tục update kỹ năng và kiến thức, vì làm về kỹ thuật thì kỹ năng và kiến thức biến hóa từng ngày, những công nghệ tiên tiến mới ra liên tục, thậm chí còn ngôn từ mới cũng sinh ra liên tục, yên cầu phải tự nghiên cứu và điều tra rất nhiều .
Khi mình biết thêm một kỹ thuật mới và vận dụng nó vào mạng lưới hệ thống của mình, nó sẽ mang lại giá trị cho bản thân mình, cho tập thể mình đang góp sức, và cho những người xung quanh .
Ví dụ, nếu như mình chỉ biết mỗi C + + thì sẽ rất khó khăn vất vả nếu mình nhận được nhu yếu tăng trưởng những ứng dụng dựa trên ngôn từ khác như Java ví dụ điển hình .
Hơn nữa, khi mình biết nhiều công nghệ tiên tiến, mình sẽ hoàn toàn có thể đề xuất kiến nghị nhiều lựa chọn hơn cho người mua .

2. Kỹ năng giao tiếp, truyền đạt

Khi design một framework nào đó, việc tiên phong của Software Architect là phải nói cho những bạn Developer hiểu cái mình đang làm .
Chẳng hạn, thay vì ép buộc những bạn Developer làm theo hướng của mình, thì cần phải chịu khó lý giải cho những bạn hiểu nguyên do vì sao mình lại chọn công nghệ tiên tiến hoặc ngôn từ đó, hoàn toàn có thể là vì trong team mọi người quen thuộc hơn, hoặc vì năng lực lan rộng ra hay do được hội đồng tương hỗ nhiều hơn .

3. Kỹ năng quan sát, phân tích vấn đề

Đôi khi Software Architect mắc sai lầm đáng tiếc, design mạng lưới hệ thống rất hoành tráng, trong khi nhu yếu của người mua chỉ là một phần hoặc một công dụng trong đó thôi. Điều này dẫn đến tác dụng là mất thời hạn và sức lực lao động của cả team .
Ví dụ như nhu yếu của người mua chỉ là một website tọa lạc hàng đơn thuần, mình lại cố gắng nỗ lực phong cách thiết kế cả một website e-commerce với những tính năng hoàng tráng như tích hợp những phương pháp thanh toán giao dịch, phân quyền truy vấn .

4. Khả năng dự đoán

Khi mình design, mình phải Dự kiến được mạng lưới hệ thống :

  • có khả năng mở rộng hay không
  • khi có vấn đề thì phương án backup là gì
  • các bạn Developer có dễ dàng code trên hệ thống mình design hay không.

Chẳng hạn, mặc dầu bạn được nhu yếu design một website tọa lạc hàng đơn thuần như nêu ở trên, bạn vẫn nên nghĩ về năng lực nó được nhu yếu tăng cấp lên thành một website e-commerce trong tương lai .

Nếu có một điều mà anh ước rằng anh biết trước khi bắt đầu đi làm, thì đó là điều gì?

Anh ước mình biết là mentor rất quan trọng. Một người mentor tốt ( một người có tầm nhìn và có tâm ) sẽ tác động ảnh hưởng rất lớn đến tâm lý, khuynh hướng nghề nghiệp và cuộc sống của mình .
Anh như mong muốn gặp được 2 người mentor rất tốt .
Người tiên phong là chị sếp trong công ty tiên phong của anh. Chị ấy giúp anh vẽ career path rất chi tiết cụ thể như anh đã kể. Chị ấy cũng dắt anh đi gặp anh Software Architect và anh Team Leader trong công ty để tìm hiểu thêm thêm kiến thức và kỹ năng .
Những gì chị ấy giúp anh thật sự rất ý nghĩa vì lúc đó anh chưa có xu thế sự nghiệp gì trong đầu cả. Thời đó, ngành IT còn khá mới ở Nước Ta. Nhiều sinh viên IT lúc đó, trong đó có anh, không biết đúng mực mình sẽ làm gì sau khi tốt nghiệp. Anh chọn học ngành này vì anh thích máy tính từ nhỏ .
Người thứ hai là một giảng viên dạy về quản trị dự án Bất Động Sản ở Viện FMIT tại Quận 3. Thầy đã giúp anh hiểu được tiếp xúc hoàn toàn có thể xử lý mọi yếu tố trong việc làm .
Một câu thầy từng nói :

Công việc của một Project Manager 90 % là tiếp xúc, liên kết những thành viên trong team lại với nhau .

Thầy dạy anh cách để tìm sự đồng thuận của đối tác chiến lược và đồng nghiệp khi tranh luận một yếu tố .
Các bạn sinh viên giờ đây có điều kiện kèm theo hơn tụi anh khi xưa. Anh nghĩ những bạn nên tìm mentor cho mình từ khi còn ngồi trên ghế nhà trường, để giúp những bạn có thêm thông tin về ngành nghề và khuynh hướng sự nghiệp .
Người mentor không cần ở đâu quá lạ lẫm. Họ hoàn toàn có thể là những anh chị khóa trước hay những giảng viên trong trường .

Những resource anh muốn đề xuất cho các bạn muốn trở thành Software Architect là gì?

1. System Analysis and Design của Howard Gould : Cuốn sách này cho anh thấy toàn cảnh của việc nghiên cứu và phân tích và phong cách thiết kế một mạng lưới hệ thống, những bước cần phải làm là gì, và những chú ý quan tâm trong quy trình phong cách thiết kế và quản lý và vận hành mạng lưới hệ thống .
2. Developing Information Systems của 6 tác giả và do James Cadle chỉnh sửa và biên tập. Một cuốn sách khá hay về mô hình hoá mạng lưới hệ thống .
3. Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development của Craig Larman. Đây là cuốn sách gối đầu giường của anh từ thời sinh viên, gồm có tổng thể những kiến thức và kỹ năng cơ bản về lập trình .
Cảm ơn anh Dũng vì những san sẻ về hành trình dài nghề nghiệp đầy mê hoặc và có ích. Chúc anh luôn thành công xuất sắc trong việc làm !

Cảm ơn ITviec!

Robby2

Robby2

Nếu bạn nghĩ những chia sẻ này có thể giúp ích cho bạn bè hoặc đồng nghiệp, đừng quên nhấn nút Share bên dưới nhé!

Và đừng quên tham khảo việc làm Software Architect tại ITviec!

You may also like

Để lại bình luận