軟件架構師的能力與特質

軟件開發工程師的職業發展無非兩大類:一是做“官”,從事管理工作;二則繼續從事技術工作。對于后者,軟件架構師(software architect)是很多軟件開發工程師追求的理想崗位。在這我想談一談軟件架構師所需的幾大能力和一些特質,以便讀者能更好地規劃自己的職業發展。
?
1)需要很好的邏輯思維能力。對于軟件開發工程師來說,由于大多從事編程工作,所以很容易以為自己的邏輯思維沒有問題,足以滿足軟件架構師一職所需。實則不然!就我的觀察,不少工作近十年的工程師仍存在思維不清的問題。主要表現在和他討論問題時,你問他A,他回你B,且很容易跑題和抓不住重點。軟件架構師在工作中需要“咬文嚼字”地理解文字和溝通,此時清晰的思維就是關鍵。
?
2)需要很強的概念(括)能力。軟件架構師在很多情形下是管理層與工程師之間的橋梁,除了掌握技術細節,還要對技術細節進行一定的抽象概括使管理層理解問題所在,以便管理層恰當地參與決策。此外,軟件架構師在日常工作中也會面臨各種各樣的技術問題,良好的概念能力有助于把握住問題的本質,從而有效率和效果地解決問題。
?
3)需要熟練運用UML(Unified Modeling Language,統一建模語言)的能力。軟件架構師由于需要從事大量文字描述性的技術工作,不可避免地需要借助圖,而UML就是一種較通用和接受程度較高的圖形化建模語言。軟件架構師對于UML的掌握,不能只局限于明白各種圖型的意義,還得能熟練地查閱UML規范,以便精準地了解各種術語和圖型的含義,從而實現對模型的精確表達。記住,“好圖勝過千言萬語”,圖要好就得追求表達的精確性,這就離不開對UML的精準掌握。
?
4)需要很強的業務能力。對于系統架構師(system architect),業務能力可能包括對行業規范的熟悉、對組織結構和客戶關系的清晰了解和研發流程的深刻理解等。對于開發架構師(development architect)業務能力則可能包含對行業規范的理解、對開發環境(編程語言、開發平臺與框架、開發流程等)的熟悉和很強的軟件查錯能力等。
?
5)需要較強的組織能力(含溝通)。軟件架構師在日常工作中需要做不少的協調工作,包括組織技術會議的召開和帶領團隊攻堅,這些都需要一定的組織能力。拿組織會議來說,有些工程師不喜歡在會議之前進行事先準備和與相關人員進行允分溝通,而是喜歡開會時事無巨細地討論,這勢必造成會議低效。面對這樣的會議,軟件架構師需要很好地判斷是終止會議重新安排呢,還是繼續進行。如果繼續進行就得在會議中很好地掌控會議的話題和節奏,并依據自己的概念能力讓與會者更有效地達成共識。
?
6)敢于承擔責任。軟件架構師在不少情形下是技術層面的決策者,他必須敢于“拍板”,這就要求他承擔起相應的責任。當然,責任的承擔不能“人有多大膽,地有多大產”那樣,而應建立在自己的職業素養和能力之上。軟件架構師如果不勇于承擔責任,那就容易造成開發工作開展不下去的局面。
?
7)面對挑戰的勇氣。其實,這一點對于每一個職場人士都很重要,但對于軟件架構師尤為重要。與軟件開發工程師相比,軟件架構師所面臨問題的復雜度更高,既會有技術因素,也會有人為因素。解決這些問題有時是很大的挑戰,也讓人覺得痛苦。有挑戰就意味著其中一定蘊涵著其中存在可收獲的內容,每克服一次我們的能力就獲得了提高。在面對挑戰時,我喜歡對自己說“沒有痛苦就沒有成長”;也會設想自己在面對挑戰的環境中工作了一年、幾年后將會有多大的收獲啊!這種設想會給我們的職業發展帶來更大的想象空間,使得自己面對挑戰時更具耐心、信心和勇氣。
?
如何獲得前面所提及的一些能力相信是讀者比較關心的,我的回答是“需要時間和堅持”。有些能力的獲得不是簡單地掌握技術知識就行了,而是需要一定的人生閱歷,比如概念能力就是這樣的。對于開發軟件架構師,如果要設計出一個好的軟件架構,除了接觸和學習已有的出色設計外,還得需要一定的行業積累和很好的概念能力。對于概念能力,我認為它是依托于生活的,這就需要時間。這種理解也解釋了為什么業內流傳著成為軟件架構師得30歲以后才更可能。
?
至于堅持,它同樣很重要。一個人的能力是有限的,很難做到這個也懂那個也會。某種程度上,所掌握知識的廣度對于我們的職業發展是有益的,但這是基于我們在某一方面很精這一前提的。要精于某一方面,就一定離不開在同一領域的不斷堅持。堅持意味著我們在那個領域會碰到更多的問題和做更多的思考,這是成為領域專家的唯一途徑。
?
或許有讀者會問,在這些能力中為什么沒有談及文檔編寫能力呢?原因不是因為它不重要,相反,這是軟件架構師所需具備的最基本能力之一。其實,文檔編寫能力考驗的是前面提到的邏輯思維、概念和運用UML的能力。一個說話沒有障礙的人,只要具備這三大能力就一定能寫出好的技術文檔。在日常工作中,如果某人不喜歡寫文檔、或認為寫文檔不重要,那是因為這三大能力還不過關的緣故。也正因如此,我建議工程師不要想當然地以為“只要會寫代碼,文檔編寫能力并不重要”。如果這樣想,那么軟件架構師一職也就離我們遠去了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449866.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449866.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449866.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IntelliJ IDEA編碼設置

見:https://www.cnblogs.com/winner-0715/p/6364306.html項目中為了避免亂碼等問題應該使用UTF-8編碼方式,其實把編碼方式設置成UTF-8是創建完項目后就要做的事,按照如圖所示進行設置:這里要將Transparent native-to-ascii conversion選項勾選, 否則項目…

C#實現像微信PC版一樣的掃碼登錄功能

現在好些網站都支持掃碼登錄,感覺上安全了很多,但是本地程序掃碼登錄的不多,就用C#實現了一下,需要作如下準備 在官網上申請一個企業微信,有條件的話做個企業認證吧,我們的是認證過的,所以賬號和本地其他系統的賬號是統一的.在應用中創建一個應用,這個是關鍵,我們掃碼就是和它有…

JVM(一)史上最佳入門指南

2019獨角獸企業重金招聘Python工程師標準>>> 提到Java虛擬機(JVM),可能大部分人的第一印象是“難”,但當讓我們真正走入“JVM世界”的時候,會發現其實問題并不像我們想象中的那么復雜。唯一真正令我們恐懼的…

如何成為一個技術“牛人”

今天給浙江大學過來的幾個還沒有畢業的研究生做面試,這些研究生是想來公司實習的。在面試的過程中,一個學生問我“我們有C/C、JAVA等等多種語言,我如何才能成為某一方面的一個技術牛人呢?這一問題一直困擾著我”,對于這…

python量化數據處理小細節(以后還會不斷補充)

使用tushare數據源獲取數據后處理 以下都是本人在獲得數據后,進行量化回測時,處理數據遇到的各種坑以及解決方案,有些甚至都很幼稚,切勿嘲笑 獲取數據 導包 import tushare as ts import pandas as pd import matplotlib #(ju…

Linux find和grep的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 grep是查找文件中匹配條件的行,find是搜索匹配條件的文件。 1.find:查找文件或目錄語法: find 查找位置 文件名或目錄名如:在…

Mysql 忘記密碼重置教程

https://jingyan.baidu.com/article/454316ab4e9e65f7a7c03ad1.html 百度經驗轉載于:https://www.cnblogs.com/leaf-cq/p/10410694.html

067:【Django數據庫】ORM查詢條件詳解-range

【Django數據庫】ORM查詢條件詳解-range range:判斷某個 field 的值是否在給定的區間中。示例代碼如下: # views.py文件內容:from datetime import datetime from django.utils.timezone import make_awaredef index(request):start_time ma…

貼吧爬蟲

import requests import re#根據url獲取網頁html內容 def getHtmlContent(url):page requests.get(url)return page.texthtml getHtmlContent(https://tieba.baidu.com/p/4840106397)#以html中使用re模塊解析出所有jpg圖片的url #百度貼吧html中jpg圖片的url格式:…

別把自己變成了“二等公民”

上周參加一個代碼審查會,在會上發現了設計上的一個很嚴重的錯誤。于是,我提了好幾個問題,想知道為什么會出現這一錯誤。但是,我的同事告訴我這都是印度團隊做的設計。需要提供的一個背景信息是,這個項目是我所在的研發…

jquery函數加載及生成隨機數

$(document).ready(function () {var code ; //在全局定義驗證碼  1.將函數寫好 function createCode(){code "";var codeLength 4;//驗證碼的長度var checkCode document.getElementById("code");var random new Array(0,1,2,3,4,5,6,7,8,9,A,B,C…

rsync解說

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、簡介1、認識Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間…

關于java中getClass()和getSuperClass()的講解

為了講解這個問題,我們先來看一下下面的代碼: package com.yonyou.test;import java.util.Date;class Test extends Date{private static final long serialVersionUID 1L;public static void main(String[] args) {new Test().print();}public void print(){Syste…

期權回測框架設計思路

期權回測,博主已經研究了很長時間,也接觸了不少平臺,如真格,以及這位博主提供的思路(https://blog.csdn.net/luoqingyong/article/details/107523930),利用backtrader進行期權回測。確實國內做期…

UVA815

這道題主要學到的就是數據結構的組織,一些需要從小到大排列的東西,這些東西還有對應的東西。這個時候使用map可以解決 下面貼出代碼。其中所使用的思想,估計這個東西是沒法學的,這就只能是靈感 //這是什么吉爾題,題意都…

我對應聘者的面試原則

最近參與了幾次單位招聘面試工作,在面試工程師時,我是用我的分層準則指導與候選人的交流內容,以確定他的能力層次是否達到我所期望的。大體上軟件工程師可以分為三大層次,分別是技術知識積累層、掌握設計方法層以及運用開發方法論…

rsync:基本命令和用法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 2.1 說在前面的話 rsync官方網站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以實現增量備份的工具。配合任務計劃&#…

Java常見排序算法之堆排序

在學習算法的過程中,我們難免會接觸很多和排序相關的算法。總而言之,對于任何編程人員來說,基本的排序算法是必須要掌握的。 從今天開始,我們將要進行基本的排序算法的講解。Are you ready?Let‘s go~~~ 1、排序算法的…

python量化數據處理小細節2

處理數據主要使用的是DataFrame格式,偶爾也會有list格式。 首先定位尋找數據:主要為loc,iloc 創建DataFrame: df pd.DataFrame([1,2,3,4,5],index [a,b,c,d,e],columns[aa])或 datapd.DataFrame(np.arange(16).reshape(4,4),i…

python編碼問題

參考:https://blog.csdn.net/qq_33692803/article/details/81321340 注意區分系統默認編碼和本地默認編碼、編碼和解碼的區別轉載于:https://www.cnblogs.com/jianglinliu/p/10418437.html