当前位置:C++技术网 > 资讯 > 程序员必须知道的外包公司和自主产品公司的区别

程序员必须知道的外包公司和自主产品公司的区别

更新时间:2015-06-27 01:36:06浏览次数:1+次

    外包公司,以业务和客户为主;自主产品公司,以技术研发为主。业务重逻辑,以解决客户需求为己任,而自主产品以技术为主,以攻克技术难关为己任。
    经过两年的洗礼,从对工作方面一无所知,到现在,也略知一二了。
    很幸运,在这两年里,我分别熟悉了两种典型的公司类型。这个算是应届生程序员必须知道的常识。了解这个,可以根据自己的兴趣来做抉择。所以这里,有必要根据我自身的经历,给大家讲讲两种典型公司的区别和状态。
    说幸运,其实也不完全是。刚毕业选择的公司,也是因为就在学校城市里,作为职业生涯的第一站。所以,就这么干了一年。然后,自主选择了第二家公司。正是因为工作中了解到了一些,然后厌倦了第一家公司的类型,所以才选择了第二种。到现在为止,也修满了第二种公司的一年的经验了。
    下面跟大家介绍一下这两类公司。因为对于程序员来说,无非就是这两种公司,或者是两种的混合,仅此而已。了解这个对于自己的定位很有帮助。借以辞职期间,给大家分享一下。
    IT公司,大致分就两种,第一种就是外包公司,第二种就是做自己产品的公司。这两种,我都经历过了,哈哈。一年一个,有意思。
    外包公司,指的是,公司为其他公司提供IT服务,是一个服务性的科技公司。和普通的社会服务公司差不多,只是它提供的是IT方面的服务罢了。而提供的服务,一般都是软件开发、网站开发或者解决方案之类的。对于程序来说,也就是指软件开发,承接其他公司的软件开发业务。
    因为一些非IT公司,没有自己的IT开发部门,或者IT开发部门技术不强,导致一些专业性的技术没法解决,因此也就寻求软件开发公司的合作,即将技术外包给IT公司来做。
    我的第一家公司,就是这样的一家公司。承接的有C++的项目,有C#的项目,有Java的项目,但是全部都是做外包的业务,纯粹的外包公司。正是外包公司,也就意味着,你所做的项目都是客户公司的项目。所以,你需要经常和客户交流,以客户的需求为准。为了保证开发进度,客户公司的负责人,会不停的监督你的项目进度。因为外包公司和客户公司,有时候会隔得很远,客户不会到你的公司来,所以,你就必须到客户公司去上班。这就是出差的原因的一种。这是开发中的出差。我所接触到的项目的公司,是东北的一家公司。客户要保证进度,不停的询问这询问那,没有点耐心,你还真搞不定。
    为了解决进度问题,让客户看得到进度,作为刚进入职场的我,负责了写进度和文档的事情,技术次之。所以,在技术上的进步,可想而知。客户每天跟你交流,询问进度之类的,确保开发顺利完成。因为经理很没有耐心,与客户沟通不畅,客户就要求我们去出差。也就是让我们开发组去客户公司上班,在他们公司做这个项目。经理很不情愿,我们也不乐意。因为经常出差很累了,真心不想出差。所以想到一个方法,那就是每天一个工作进度报告。这个事情就是我做的。每天提交一个报告,那还不逼死人。一个空闲都没有。每天的工作报告还就是此时接触到。最后毕竟是客户大,开发组要去出差,但是那是我不懂事,硬是拒绝出差,最后也导致签了三年合同还是工作一年被辞退了。这次是硬伤,给公司留下了致命的坏影响。不过,不管怎么样,我有我的选择,所以拒绝,我不后悔。所以在找工作是都特地留意是否需要出差。
    不过现在看来,我明白了。出差是外包公司不可避免的。不出差那就不是外包公司了。外包公司的出差概率大95%及以上。相对来说,开发自主产品的公司,出差几率几乎为零。这是很典型的。所以,如果你对于出差很介意的话,看清楚公司的类型,就能够确定了。一个外包公司,不让你出差,似乎不太可能。个例当然有的,就怕你不幸运,被选中出差了。
    旅途奔波对于程序员来说,是极其不好的。程序员需要稳定的工作环境,利于学习。当然,看个人了。出差不要想着是旅游,这是一个极大的误解。当然,在出差的过程中,确实可以借机四处看看,不过如果情况紧急,你也没得心情看吧。
    也正是因为不想出差,也就是我主动选择了第二家公司,也就是现在即将离职的公司。公司有自己的产品,对于以前来说,还是感觉挺不错的。事实上,也达到了自己心中的大致要求。
    有自己产品,对于程序员来说,那么开发维护自己的产品就是第一要务。这里就是重在技术了。相对于外包公司来说,所承接的项目,重在业务逻辑的处理,所以对于外包公司来说,业务和客户的需求永远高于技术的要求。只要客户认可,再没有技术含量,也是可以的。客户不认可,再牛逼的技术用上去,也是枉然。然而开发自主的产品的公司,也不是那么轻松的事情。
    外包公司,重在业务逻辑。而对于业务逻辑,在技术上要求相对较低。而自主产品的公司,为了开发产品,属于研发性质。对于一些功能,能不能实现,都是问题。需要大量的研究,技术攻关,才能最终实现需要的功能。所以这是非常考验技术的。同时,对于产品,之前版本遗留的问题,千奇百怪,你得不停的去修复。甚至,有时候就一直在修复问题,直到需要将软件的结构重构。我在现在的公司一年,几乎都在不停的修复问题。公司的基础库变了,要对自己负责的部分配合修改。偶尔加了一些功能,大大小小。但是整体来看,主要是修修补补。所以,调试解决Bug的技术,也是软件开发的一部分。
    外包公司的软件开发,属于软件制作的过程。自主产品公司的软件开发,属于软件研发过程。两者是完全两码事,对于技术要求来说,后者更高。
    当然,自主产品公司,要面对的还不只这一点。你负责的功能,与你的工作表现息息相关。自主的产品也是开发给客户使用的,我们有主动权,但是,最终还是要由市场决定软件的走向,其实就是客户的评价。客户评价好,软件就发展的好,如果评价差,那就要没落了。所以,客户的评价,也是对程序员的一种评价,老板也会看到这一点。如果你开发出来的功能没有任何问题,深受客户青睐,老板自然是会肯定你的能力。
    不过需要注意的一点,跟着一个开明有远见的老板也是非常重要的。对于开发维护产品来讲,很可能大部分时间都在维护之前的功能,修修补补,但是老板只以你开发的功能来评断你的工作,那你就没有希望了。当Bug出现时,老板说你负责的部分老是出问题,要你解决。然而,在评断工作时,又看你开发的功能数量和质量,这不就扯淡了。如果老板看不到这点,那就没有前途了。老板不肯定你的工作,你就无望了。
    虽然自主产品公司要看客户的评价,但是总的来说,主动权还是在公司,就像微软。有自己的产品开发,这种性质也就不需要我们去哪出差,在家把软件做好就行了。
    所以,最后总结一下,如果你喜欢出差,可以选择外包公司,否则选择自主产品公司。如果想更多的锻炼技术,那么优先选择自主产品公司。当然,外包公司也是有技术含量的,只是偏重点不一样罢了。以上也说了前因后果,读者自己分析自己的情况。分享给大家,只是给大家多一点指引和帮助,以此共勉。