中小规模软件设计及管理方法 - 程序员 1

来源:互联网 发布:乐高ev3机器人编程 编辑:程序博客网 时间:2024/06/05 16:05

中小规模软件设计及管理方法

 

在你读文章前,我必须严正声明,文章未经许可禁止转载!如果喜欢我的文章,请发邮件Cyberlark920@gmail.com免费订阅!

 

作者简介:本人出生在中国南京,接受完4年本科计算机科学与技术教育,随后去澳洲读了2年计算机科学与技术专业硕士。毕业后顺利在本地找到工作并拿到澳洲永久居民,至今在澳洲生活7年,工作5年,其中包括3年的程序员,和2年的软件设计师职位。5年间就职于同一家年轻的澳洲游戏公司,负责软件项目的开发维护。公司经过6年的运营,从一个小作坊式的3个程序员,发展到一个拥有15人的软件开发团队。

 

文章介绍:本文主要是想写给在大四或刚刚毕业的程序员朋友,从一个软件设计者的角度去重新理解程序员的工作。如果你也是软件设计师,也希望可以得到一些工作上的共鸣,分享成功的案例及解决问题的方法。文章将从我的职业生涯开始说起,并用斜体字说明事件的背景介绍,以及从中吸取的经验教训。我的邮箱是Cyberlark920@gmail.com,如果有任何问题和需要帮助,请联系我。

 

 

(一)初阶:程序员

2009年,我毕业于澳大利亚的卧龙岗大学,计算机科学与技术专业。对于一个外来移民,当年的本地就业形式并不是非常理想,很多同伴同学由于找不到工作带着遗憾回国。虽然对任何结果都有所准备,可是当这一切真真切切来临的时候,还是有一些惊慌失措。求职的过程也是一波三折,再两次失败的求职面试后,终于凭借优异的成绩和对计算机编程的热情夹杂着‘蹩脚的’英语说服了面试官(其中包括我现在的软件部门的经理)并正式加入了公司只有3人的工作团队,并收获一份相当不错的程序员工作。

l       海外求职应聘

这一章节可以写很多,也有很多朋友关心,准备以后再写

l       快速进入专业角色

作为一名刚刚走出校园,没有实际工作经验的程序员,你需要一些时间去适应新的工作环境。这包括熟悉自己的工作环境,人际关系以及工作流程,这些都不属于专业领域范围,这里就不想再阐述。专业方面包括你需要熟悉自己的计算机,要像珍惜自己爱的女人那样维护你的工作电脑。因为我确定在之后的一段时间内,你与这台机器打交道的时间会远远多于自己的女朋友。这些事情包括一个让你舒心的桌面,摆放整齐的各种快捷方式,以及编程IDE中使用的各种快捷键等等。

我是一个对生活条理非常清晰的人,所以对这些自我管理并不是一件难事。国外上学的经历让我提高了独立生活能力。最重要的一点是学会了管理好自己的时间以及金钱。多次参与公司面试其他程序员,这些“专业素质”,会在你求职的时候不经意的表露。

 

l       锻炼及培养自己的职业素养

作为一个合格的程序员需要具备哪些职业素养?这个问题每一个人都会有自己不同的标准,就我而言,当我考察一个合格的程序员,首先要有很好的逻辑思维能力,即因为所以。这一能力将会充分的表现在日常的人际对话中,因为什么AND什么,所以123。当你发现一个人思维是否跳跃时,他的程序一定是跳跃的,并且是混乱的。

在公司的第3个年头,当时还是一个普通程序员的我,被经理叫去一起面试新的程序员。当你从一个面试官的角度去面试新人的时候,心态是不一样的。这个我会在后面的文章中详细叙述如何面试一个程序员。记得曾经面试过一个印度妇女,大约30多岁,简历上有很多经历,有一些经历是我们非常看重的。当我们希望她讲述一段工作经历的时候,她的思维是跳跃的,先说了一个事情然后跳到另外一个事情,反正就是各种GOTO。很不幸的是,由于我们太缺人,她最后还是加入了我的团队,这是职业生涯当中第一个重大失误。在后面的工作中,她充分的说明了自己是一个没有逻辑思维能力的人,她经常喜欢使用FLAG,并且2-3个混用;经常创建一个变量却不初始化就使用;有时候写了函数却没有被任何地方引用;还有对类的继承附属关系的混乱理解。最终我们不仅延误了产品的交付,而且在之后的工作中用大量时间去修改和重写她的代码。

 

除了逻辑思维能力,交流能力也是极其重要的。这一点在团队编程中尤为重要。在大多数的小型企业,需求文档说明并不完善,首先我需要表明这样做是对项目不利,但是在一个相对简单的程序规模,良好的沟通可以降低需求文档的不足。交流能力不仅指的是组织语言的能力,还包括利用各种图表例如UML等阐述设计思路的能力。

我们的公司是一个多元文化的公司,鼓励各种不同文化语言背景的有能力年轻人一起工作,除了当地的澳洲本地人,还曾招过包括伊朗,印度,俄罗斯,韩国,中国等其他英语非母语的程序员。不得不承认作为第一代海外移民,英语在日常工作中仍有一些障碍,这也给我工作上也产生了巨大的压力。在努力提高自己英语说明的前提下,我也努力找到各种方式方法去增加沟通能力。一些清晰的图表是我的秘籍,图表可以把语言无法描述的情况,很直截了当的展现出来,可以用各种形状的图形表示不同的实体,标上不同的颜色,用粗体字表示你需要强调的事项等等。这一点也曾给软件经理留下深刻的印象,并非常值得推荐。

 

l       管理好自己的时间

这一点看上去是一个私人问题,可是我更希望看成是一种专业修养。如何分配时间和调整自己的时间及工作项目是一个刚进入职场程序员需要适应的。对于公司来说,你花在不同项目代码上的时间,直接影响到公司的效率及收益。如果你可以从管理者的角度想,你需要把时间花在最创造效益的工作上,毕竟最后的卖出产品直接关系到你所获得的工资。

公司在刚开始几年的工作相对比较单一,只围绕一个中心进行开发,代码也相对易于维护。随着公司业务的扩大,以及处于控制成本的考虑,程序员人手有限。我们也常常被告知停上手上的工作,去做另外一个项目,原因通常是要么有比较紧急的BUG,要么是客户的投诉,或者是避免项目违约的风险。

 

如何分配项目上的时间是一个项目经理的职责,对于他们的决定,作为程序员,应该给予应有的理解。当然,我非常可以体会那种不快,这是一些程序狂人工作热情的巨大打击。通常遇到这种情况,我建议使用1-2个小时把自己做的项目做一个尽量好的收尾。比如,把你所想的东西用简单的图表明意思,或者用几句话把你的思路写下来,以便在不久的将来重新开始。

随着公司业务的扩大,公司的管理也从之前的松散管理,变的更加正规,公司购买了JIRA系统,去跟踪每一个发现的BUG。公司的文档都用CONFLUENCE系统被共享及管理。有了这些工具,一个好的项目经理可以预测项目所处在的位置,通常情况下,项目时间上的分配将会被评估,由此决定人员的分配选择。这些决定是也需要根据实际情况进行调整,但是通常我们会提早被告知调整项目,这样足以让程序员有足够的时间做一个好的收尾。

 

在某些例外情况下,由于天天接触代码,程序员往往对代码非常了解,他们会有自己的想法,例如有些结构的变化宜早不宜迟,在你有足够理由的条件下,你可以向项目经理说明理由,提出你的建议和要求。这些理由将会被考虑在最终的决定中,甚至对项目是有极大的帮助.一个好的沟通,可以令他们改变决定。这样的事情是非常值得鼓励和肯定的,如果确实有道理,项目经理会对你有积极的评价

由于我们公司的软件是和客户的金钱打交道,在前一天的交易中发现了一个重大BUG,造成了重大经济损失。在此情况下,我被项目经理告之立刻停止手上的工作,去修改这个BUG。当时,我正在做一个软件结构上的改变,而且已经做了一半,而且公司里只有我知道该做什么,因为没有文档支持。如果我停止了工作,其他人接手,那可能会对我的以后的工作造成重大不便。再我阐述原因后,得到了项目经理的认同并让其他同事去修改了BUG。

 

 

今天先说这么多,在以后的日子里,我还会持续的更新,目前想到一些方向:

程序员 – 海外求职应聘

程序员 – 工作压力及情绪控制

程序员 – 技术类:函数库的使用

程序员 – 技术类:结构Struct的使用

程序员 – 技术类:文件的创建保存

软件工程师 – 职业方向的选择

软件工程师 – 技术类:代码统一性的管理

软件工程师 – 技术类:复杂技术的运用与可读性

软件工程师 – 技术类: 接口与模块化设计

软件工程师 – 技术类:设计模式的运用

软件工程师 – 招聘项目新团队

软件工程师 – 团队建设

如果你对某个话题非常有兴趣,我将提前编写相关内容

我的邮箱是Cyberlark920@gmail.com,如果有任何问题和需要帮助,请联系我。

0 0
原创粉丝点击