我不我不知道这个术语是什么时候出现的软件架构师浮现在脑海里,但一直很迷茫,总觉得和软件的组长有些纠结。但是,从我的角度来看,软件架构师除了没有行政责任之外,和团队领导没什么区别,也就是软件团队的核心设计者和决策者。作为一个软件团队的领导者,架构师应该具备哪些能力、素质和经验?
我可以把一个软件开发人员的工作经历大致分为三个阶段。
第一阶段是新手阶段。
这一阶段的典型特征是容易被新技术的华丽外表所迷惑。当你在网上看到一个新技术的介绍或体验时,你立刻产生大量的肾上腺素分泌,你想用它来做任何事情。如果有人跟他说你这个时候用这个工作不合适,你不耐烦的话,很可能会直接开始骂你妈。如果你是慢性子,会想尽办法劝你用这个新东西。如果你没有选择,你可以不吃不睡,想找个地方用。
新手时期的程序员对需求和应用环境的控制能力不强,但他们往往对自己的代码有多优雅和高效感到自信。当问题出现时,大多数人的反应是,怎么会呢!在我的机器上运行良好!"不管你读了多少书,学了多高效的算法,实际工作中的要求和环境总是在变化的。事实上,我不I don’我不明白为什么那么多的技术书籍往往或多或少都含有炒作的成分,往往夸大某一方面的优点,却往往对缺点一笔带过。同时,相对于讲解思路和算法、介绍技术的书籍,针对具体项目研发实例进行技术选择的书籍真的很少。或许这也从侧面反映出,作家很多,但真正做研究的人很少。
新手程序员的不成熟也体现在团队表现上。当一个问题提交给一个新手时,当跟踪其他人时的代码段,他们经常会扔掉手,自信地说,我在这里没有问题。"你一点都不知道问题还没查出来,但是你怎么知道不是你的问题呢?在团队研发中。d、我一直坚持在切入点解决问题的原则。只要问题的切入点在你,就要全程跟进到底。发现问题后,将通知相关人员进行程序修改。虽然团队中程序员的分工不同,但每个人都必须对其他人有清晰的认识程序和算法,因为每个人都在相同的环境下工作。虽然代码有分工,但他们操作的是同样的设备和资源。独立是团队发展中最重要的理念。
第二阶段是中级程序员阶段。
这个阶段的程序员在选择技术和工具时非常小心。他们可以根据具体需求选择需要采用的技术,可以撰写详细的需求调查报告,提出设计方案。利弊分析清楚。在应用层面,我也有很强的全局理解能力,在团队中也有相当的合作能力,所以我有很强的解决问题的能力。
中期程序员虽然在应用层面上相当严谨,但在系统层面上并不强。应用系统也不能幸免,它与网络环境、使用方法、硬件环境、操作系统、地点、时间等诸多因素有着千丝万缕的联系。在中部和底部R & ampd对少数用户来说,如越来越多的信息管理系统呈几何级数增长,系统控制并不是一种必要的能力。但在一个高端高并发的软件产品中,广泛应用于不同环境,系统控制是不可或缺的能力。我觉得这种能力大部分取决于知识。工作越多,经验越多,对不同应用环境的感受和判断就会越灵敏。
大部分中期程序员局限于行业,还是很依赖语言。例如,那些从事信息系统和单片机,网络,路由器和交换机,由于不同的系统水平,他们的专业和理解
第三阶段是高级程序员/分析师/架构师阶段。
进入这个阶段的前提是多年的工作经验,广博的知识面,对系统从下到上的全面了解,已经让它进入了没有语言,没有工具的层次。即你可以清晰地感知每种编程语言的优缺点、适用范围和编码禁忌,你可以对一个大型项目有最全面的了解。你赢了在选择语言和确定技术方案时,不要被你对语言或技术工具的偏好所影响(或者根本没有偏好)。你真的明白,事实上,它并没有不管是神马语言还是神马技术。归根结底,我们的对象不是CPU,内存,硬盘,网络,什么都要做,所谓。即使是同一种语言,不同操作系统之间的差异,比如Visual C和Unix C、AIX XLC、GNU G等等,以及不同版本之间的差异都是众所周知的。很难达到这个阶段,因为对操作系统层面的认识很清楚。我相信一个初级程序员的大部分工作都是在团队领导的指导下完成的,每个人都要做好自己的工作。虽然应用层面必须顾全大局,但系统层面的问题相对难以接触。如果你不没有强烈的技术欲望和一定的综合能力,系统级的工作经验将很难与你产生关系。它这就像是外科医生。其实操作并没有很多人想的那么难。一般看几次就差不多了。如果得到实际操作的机会,不仅可以积累大量的经验,还可以获得不可估量的自信。但是,运营责任重大,不是每个人都有机会的。技术工人其实很幸福。毕竟获得工作经验比当医生容易多了。
高级阶段必须有团队开发和管理经验。一个软件团队就像一个乐队,每个人对曲目的理解都不一样。虽然管的乐器不一样,但是没有一个指挥会很乱。软件团队每个人对语言、业务、能力的理解都不一样,沟通方式也不一样。同时,他们操作相同的系统和资源。如果团队领导不如果计划不好,后果可想而知。丰富的经验和敏锐的触觉足以判断团队成员的编码风格和技术偏好,并能以足够的经验和理由说服他们放弃情感偏好,从而很好地完成工作。这种能力有点类似于行政管理,但实际上是明显不同的。这种管理是基于丰富的实践经验和充分的理由。绝对禁止在行政管理中引入排队的概念。如果两个人意见不一致,他们必须争论。如果他们能不要再争了,回家想想原因再争,甚至直到时间证明一切。它可以不要说你这次听我的,下次我会听你的。技术活是绝对的,最好的,最好的。
高级程序员是一个经常说不符合要求。他对行业的深入了解,对系统和应用大局的把握能力,使他有能力真正引导用户,规范用户的工作和思想,把计算机作为工具,真正引领行业。资深架构师能够深刻理解管理与技术的关系,管理中的问题必须在管理中解决。工作经验不多的用户或程序员往往把管理上的问题丢给软件系统,导致系统越来越复杂,维护成本快速增加,而管理问题依然存在。但是,目前有一种情况,用户请求通常直接发给负责程序的程序员。小公司大概直接联系程序员,大一点的由一个所谓的客户经理谁实际上没有不要太懂技术,而要征得设计师和建筑师的同意,因为他们可能已经在开发其他项目了。所以无论用户的需求是合理的或者符合最初设计的初衷,往往初级程序员不我不知道或者有不同的理解和偏好。这虽然受限于实际情况,很难做得更好,但也造成了很多系统的可持续发展性低,很多用户处于信息不对等的弱势地位,只好算了。
最后,技术和社会紧密相连。社会的发展决定了技术的需求和发展。一个对技术发展有敏锐感觉的架构师,必须对社会有深刻的理解。一个好的团队必须要有新老交替才能不断进步,老的要愿意带新人。"让一部分人先富起来,先富起来后富起来,最后达到共同富裕。"这是我们在学校时学到的,但如果那些先富起来的人试图向前看而不去做不关注那些后富起来的人,那么团队和社会就不会有太大的可持续发展动力。实际上,我认为仍然有很多真正的百万富翁知道人民的痛苦。上层和基层还是能理解屁民的生活的。他们没有什么我不知道是中产阶级。他们生活在繁荣和富裕的温床上。他们经常提到一些雄心勃勃和不切实际的想法,他们对底层人民受益的事情嗤之以鼻,甚至讽刺为用先进的技术做蠢事,只是为了哗众取宠。
那现在就这样吧。实际上,我我努力成为一名真正的建筑师。它这是不可避免的,在一个家庭的话会有一些偏差,但再次,我们你总是在努力工作。
标签:技术团队工作