最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

七步打造一家成功的软件开发公司

  • 2017-09-12
  • 本文字数:3582 字

    阅读完需:约 12 分钟

关键点

  • 团队非常重要,这是公司的支柱。这也是为什么你的面试流程必须非常严格的原因之一。
  • 要有清晰的焦点:不管是技术、服务还是产品,要获得更大的成功,你就要不断地尝试去掌握某一方面。
  • 多建立伙伴关系并重视它们:不管是现在还是将来,更大的关系网都会给你创造更多的机会。
  • 每天不断地向团队讲述你的核心价值观,并下大力气围绕你的核心价值观来打造企业文化。
  • 不断地紧跟时代潮流,寻找新机会,但同时也要密切跟进你的支出和收益。

打造一家成功的软件开发公司,这事从来都没有像现在这么难过。哪怕仅仅是几年前,不错的公司也不过是在办公室提供早餐、为员工提供培训机会来提升他们的技能水平,类似这些而已。可现在世道已经完全变了。为了吸引和留住顶级人才,我们必须去请来专业的教练,并且要把办公室安排在风景优美的海边。

用称职的和激情的 IT 人士组成核心团队

团队永远是最重要的!只要核心团队靠谱,你就已经踏上了成功之路。作为 Dreamix(一家做 Java 和 Angular 开发的软件公司)公司的 CEO,我可以非常有信心地说在任何 IT 公司,CTO 都是最重要的角色。不过,他或她并不一定要做一个可以实现任何你想要的东西的极客。相反,你需要的是一个领袖,需要他去鼓励团队,并且可以将最好的专家吸引到你的公司来。

我们公司的 CTO 叫 Angel(他也的确是我们的天使),他的确是我们的福星。在公司刚刚创立的时候,他还在当地一家大学里教 Java 开发。公司里有一位 IT 业界内的名人,这可是无价之宝。有这么一个人就意味着他会不断地培养出专家来,而不只是招个人进来,然后就让他去做个什么项目。从我们与 Angel 相处的经验来看,大家都非常关注和看重他关心的东西。

而且,你还需要一位强势的经理和软件架构师。这些人都到位之后,你就可以放手开干了。

关注关键技术或业务解决方案

这是一个永远的话题:你到底该关注技术还是业务解决方案?对我们来说,技术为先。我们决定关注 Java 后台和网页解决方案。我们不做.net 或智能手机 App,也不做页面设计。我们甚至花钱请了一家别的公司来帮我们重新做了主页,因为我们真的没有做过任何页面设计相关的项目(的确如你看的那么可笑,一家 IT 公司竟然还要请别人来帮忙做网站)。

“我们公司里随便一个人都可以搞定任何问题”,这样的大话在以前也许还能管点用。但如果现在把你们和业界顶尖的公司放在一起比较的话,没人会相信你们这拿着一把小瑞士军刀的公司,会比别的拿着大砍刀冲过来的公司强。

而且根据我的经验,当你的员工们各自有各自的强项时,大多数人其实是坐在候补席上的,因此你的利润率就更低了。因为你不可能让销售把各种类型的项目都找来做。而且按墨菲定律所说,等你招到了一个 Ruby 开发者之后,你接下来的项目就肯定都是用 Java 或 C#的,但绝对不会有 Ruby 的。

建立严格的面试流程

核心团队建立之后,你就要严把用人关,只让合适的人被录用。要同时做技术面试和“文化适合度”面试(下文会更多地讲到文化)。严格的面试有两方面好处:

  • 这样可以帮你请到很强的专家。你要保证你请到的都是顶尖高手,因为顶尖高手才能打造顶尖的公司;
  • 这样你在业界面的名气就有了。比如你拒掉了一个有十年工作经验的人,原因是他的多线程编程技术达不到你的要求。一下子全城的人都会听说这件事。然后怎么样?有些高手就会非常想来尝试一下,看看你会给他打多少分;

不过即使你请到了技术非常强的员工,你们公司也不一定会发展得非常好,因为大家都知道,开发软件很重要的另一方面是与对方进行沟通。因此我们的面试流程中还有另一部分:“文化适合度”。在面试过程中我们会问,你自己提出过什么点子?在上一家公司工作时你做出了怎样的贡献?你怎么给予你的同事帮助呢?这些问题会帮我们确认我们选中的人将来可以融入我们,并且善于沟通,会成为我们的好队友。

建立伙伴关系和业务开发网络

业务再重要也比不上客户和合作伙伴。作为一家近岸外包软件开发公司,我们的客户来自不同的国家,甚至不同的大陆。这意味着我们必须注意保持与客户近距离接触。因此我们与不同国家的许多软件开发公司都建立了合作伙伴关系,包括英国、瑞士、德国和美国等。有了好的合作伙伴,就能接触到非常不错的客户和项目。如果交付的软件质量又非常高,那很快你就会成为他们的第一候选。不过,你要明白这个过程并不容易,你要做好付出的准备。

根据我的经验,当你一个项目也没完成时,客户一般不会信任你。比如,我们第一次帮一家位于伦敦的咨询公司做项目时,我们派了一位员工去他们公司驻点。我们的专家干得很漂亮,没用多少时间就把项目完成了,成功地证明了他的 Java 和集成技术是多么熟练。之后不久客户就联系我们了,还想再多做一个小项目。尽管项目需要出差到威尔士市郊,我们还是克服了困难,派人去那里干了几个星期。那个项目很难搞,有很多旧程序要重构,根本就算不上“梦想中的项目”,但我们还是花了很大精力,做了很多牺牲,最终成功地超出客户预期完成了它。

做完了这些早期的项目之后,再扩展合作、讨论新的项目机会就容易得多了。所以我才会建议你一定要重视最开始时的小项目,一定要做得非常好。一旦你成功地获得了客户的信任之后,再去争取一些长期的、好的合同就是水到渠成的了。

企业文化以及为什么它很重要

企业文化的意义在于,你相信的价值是什么,为什么你要追寻它,你想了什么主意去支持它。在这里我要感谢我的伙伴 Stoyan,他成功地在 Dreamix 里建立了很好的企业文化——在他的一篇博客“ Dreamix:为什么企业文化这么重要?”里你可以了解到更多内容。

简而言之,你要确保的是:

  • 你们公司的价值:包括内部和外部两方面。内部价值指可以帮助员工们工作得更好的东西,外部价值在于可以吸引和留住客户的东西。
  • 支撑着它们的点子:如果你的价值是要在新兴技术中做得很好,那就定个例会,每两周开一次,在会上每个人都做一下分享,新的框架、技术、甚至新兴公司等都可以。如果你想成为一家成功的咨询公司,那就请一些著名的咨询师来,分享一下他们是怎么成功的。
  • 找些办法去推广你的文化:可以写博客、拍视频,或者组织些活动去展示一下你在这方面取得的成就。

有个良好的企业文化可以让你在很多方面受益。比如根据我的经验,每周举行线下的例会可以让大家有机会在众人面前展示自己并提高受关注度,可以在有问题时及早发现。大家对工作满意时,就会推荐自己的朋友来应聘新职位。我们设立了内部推荐奖,结果在招聘工作上省了一大笔钱,所以我们就更可以专注于把公司做得更好。

跟上新技术的步伐

现在主流的核心技术差不多每五年就会发生一次重大变化,作为这个时代里的一家技术公司,你就要不断地改变自己,适应变化。

十一年前我们公司刚成立时,RIA(Flash)技术已经应用得很广了。现在我们在把 Flex 程序改成 Angular 的。假如当初我们决定固守旧的技术,那现在就只能做做支持旧程序的事,当下一次技术变革到来时,我们就完全无事可做了。与之相反,我们一直在紧跟潮流,现在我们还在筹划着建立一个 AI 部门。

这里还有件趣事。在大家刚开始鼓吹“JavaScript 框架”的时候,我其实并不看好它,可是公司里有些骨干却非常热衷于它。后来,好几个人开始主动地进行尝试,有一个还成了使用 AngularJS 和 Angular 的 JavaScript 前端专家,这些都是发生在 JavaScript 流行推广开之前的事了。

经验更丰富之后,我们就开始在内部举行培训、讲座等活动。等我们成了专家,我们就开始写博客,分享知识。我讲这个故事的关键在于,你要依赖你的技术人员——你是 CEO 并不意味着你就可以搞错技术潮流甚至错失商业机会,要知道别人可能很轻松地就可以看出来。

关注底线

公司的技术实力强,这与成功并没有直接关系。项目做得好却赚不到钱,这样最后也会是死路一条。同时,也很符合常理的是,你提出来的方案必须是对你最划算的。我们在公司里搞了个商业智能白板,用于监控我们的收入、支出和利润。这可以帮助我们:

  • 鉴别出那些赚钱的项目;
  • 关注支出;
  • 了解利润率以保持竞争力;

我们会跟进公司里的所有指标,从而计算出上述内容:工资、社保、租金、销售支出、试错代价、培训、病休、假期等等。另外,我们也可以通过这种办法了解每个部门的预算,比如当我们决心加大销售支出时,我们也可以知道我们到底想要投入多少,从哪里可以压缩些费用出来补贴这边。

上述七点内容来源于我们十一年的实践经验,也是打造一家非常棒的软件开发公司所必须关注的主要方面。当然,我相信你肯定也会有你的独门秘籍,可以让你从众多竞争者中脱颖而出——如果你能写在下面的评论区里,我感激不尽。

关于作者

Todor Gigilev是外包软件开发公司 Dreamix 的 CEO。他有软件工程和架构的背景,曾服务于 BNP Paribas、苏格兰皇家银行和 Vistajet 等公司。现在,他的公司的使命是帮助跨国公司实施他们的关键软件平台,以及成功地完成数字化等。

阅读英文原文 The Seven Steps to Building a Successful Software Development Company

2017-09-12 17:352723
用户头像

发布了 152 篇内容, 共 68.0 次阅读, 收获喜欢 63 次。

关注

评论

发布
暂无评论
发现更多内容

Python代码阅读(第1篇):列表映射后的平均值

Felix

Python 编程 Code Programing 阅读代码

基于ECS快速搭建 Docker 环境

若尘

Docker 服务器 8月日更

Design for failure常见的12种设计思想

架构精进之路

降级 重试 容错 8月日更

重磅 | 用友《数字化中台》震撼上市!数智化转型和商业创新实践的企业级经验!

博文视点Broadview

Druid 从控制台(Druid console)从 SQL 脚本转换为 JSON 格式的方法

HoneyMoose

基于docker的分布式性能测试框架功能验证(二)

FunTester

分布式 性能测试 接口测试 测试框架 测试开发

分布式性能测试框架用例方案设想(二)

FunTester

分布式 性能测试 接口测试 测试框架 测试开发

Druid 从控制台(Druid console)中删除过滤器和运行查询

HoneyMoose

docker入门:postgresql安装及可视化界面portainer使用

小鲍侃java

8月日更

【Flutter 专题】132 图解 PaginatedDataTable 分页表格

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

复杂多变场景下的Groovy脚本引擎实战

vivo互联网技术

敏捷开发 脚本语言

Druid 从控制台(Druid console)中查询字段

HoneyMoose

一文带你搞定AOP切面

华为云开发者联盟

spring aop 切面编程 面向切面编程 切面

深度学习中的分布式训练

安第斯智能云

人工智能 深度学习

原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!

冰河

MySQL 面试 精通MySQL SELECT查询流程 查询缓存

【Maven技术专题】如何使用Assembly插件实现自定义打包

洛神灬殇

maven assembly 8月日更

索信达控股:银行4.0的AI世界——开启算法力的时代

索信达控股

人工智能 金融科技 银行

多语言ASR?没有什么听不懂,15种语言我全都要

华为云开发者联盟

语言 ASR 多语言ASR 单语模型 Conformer

kafka SpringBoot

Rubble

kafka springboot 8月日更

Druid 的几个查询实例

HoneyMoose

synchronized 优化手段之锁膨胀机制!

王磊

Java 并发 8月日更

手撸二叉树之对称二叉树

HelloWorld杰少

算法和数据结构 8月日更

十大排序算法--插入排序

Ayue、

排序算法 8月日更

【设计模式】原型

Andy阿辉

C# 编程 后端 设计模式 8月日更

Python OpenCV 图像区域轮廓标记,可用于框选各种小纸条

梦想橡皮擦

8月日更

Rust从0到1-模式-可反驳性

rust 模式 Patterns Refutability 可反驳性

2021Java大厂高频面试题,原理+实战+视频+源码

Geek_f90455

Java 程序员 后端

架构实战营 - 模块四作业

思梦乐

Druid 通过 dsql 运行的时候提示错误 urllib2

HoneyMoose

netty系列之:netty初探

程序那些事

Java 响应式编程 Netty nio 程序那些事

2021Java开发现状分析,给大家安排上!

Geek_f90455

Java 程序员 后端

七步打造一家成功的软件开发公司_文化 & 方法_Todor Gigilev_InfoQ精选文章