【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
大部分看我们文章的网友,本身就是搞技术出身的,很少是做生意,或者是做销售的。但是技术本身,它又是为商品服务的,所以作为程序员本身,最好有一定的商业知识,或者有一点商业智慧,这样才能在和别人沟通过程中不吃亏,或者说保护好自己的利益。要知道,每个人的时间都是非常宝贵的。如果别人需要占用我们的时间,或者说需要我们提供一定的服务和劳动,那是肯定要付出一定的成本的,这是我们今天所有讨论内容的前提。
1、时间是最大的财富
很多程序员,经常由于面子问题,答应帮别人做某件事情,付出了很多的时间,又没有回报,最终吃力不讨好。建议大家在这方面可以构建一个标准,比如说这件事情如果花费1-2个小时,那么帮个忙也无所谓;如果是半天,那么就要委婉拒绝或者仅仅提供参考资源而已;如果是1天以上,这个时候就要亲兄弟、明算账了。
2、不要事无巨细地和别人讨论你的专业知识
工作中,很多做技术的朋友都认为自己的专业没有啥,和别人讨论的时候都一五一十地告诉对方。其实这是没有必要的。因为不管是多小的行业,它都有自己的门槛和know how。如果别人没有付费,或者单纯就是想白嫖,这个时候最好的方法就是点到为止即可。没有必要告诉别人,这个软件的架构是怎么样,应该怎么做,中间有哪些坑需要避过去等等。
很多公司都会打着招聘的名义,来挖对手的技术细节,这一方面尤其要注意。
3、出方案的时候就要开始收费
很多客户在落实项目之前,会要求开发公司或者个人出一个基本方案。这个时候,作为软件开发商来说,就有点为难。不出吧,客户的要求似乎也很合理;出的太详细吧,又怕是替他人做嫁衣裳。这个时候,建议根据客户的付费情况,来进行不同的选择。如果存在相关的费用,那么方案可以详细一点,这样就算将来没有拿到项目,至少不吃亏;如果只是口头问询,建议还是简单粗略一点好,一个连咨询费都懒得出的客户,不要指望后期能有良好的合作。
4、技术入股是个坑
还有一些客户,会拿技术入股来吸引你。他们的想法,本质上就是不想付出成本,让你先开发,最后通过你的产品去从客户那获取收益,分不分享给你还是另外一回事。开发出来的东西,如果正好满足客户的要求,那就是空手套白狼;如果不满足客户的要求,那他就会指责你技术太差、质量太低,这样横竖都是技术人员的错。所以,遇到这一类的合作者,建议直接走产品外包的形式,简单说就是拿钱办事,而不是个人去承担更多的风险。因为从个人经验来讲,一个软件产品,从构思到最终部署,中间有太多的关需要去闯,技术只是其中的一个环节而已,很多因素都是不可控的。技术人员相对又比较单纯,很容易被人拿捏和掌控,这个时候还不如退而求其次,直接挣开发的钱就好了,这样更稳妥一点。
5、预付费、验收款和尾款分清楚
软件在真正开发之前,一定要收到部分预付款。有了预付款,才能显示出对方的诚意,也表明双方合作的态度。没有钱的约束,大多数人的信用是经不住考验的。收了预付款之后,在验收这一部分,一般还有验收款,需要注意的是,验收的时候在没有拿到验收款之前,一定一定不要给源代码,因为源代码相当于自己最后的门槛和底线了。当然尾款部分,有的时候客户可能会刁难,这个时候最好是通过技术手段来实现尾款的交付,这样表达其实很委婉了。不过如果软件过程中确实存在着长期解决不了的问题,尾款很多时候也就真的收不到了。
6、上位机的版权保护
很多时候,客户在开发的过程当中,会要求看一下软件的部分效果。这个时候一定要注意软件的版权保护。相关措施包括软件的启动次数、功能约束、mac绑定、usb加密、数据传输加解密、截止日期这些,都可以加上。另外,我们建议上位机开发的时候,最好能够和硬件进行交叉授权。比如说,上位机一定要搭配某个嵌入式设备才能启动,或者是下位机一定要给上位机某一个反馈之后,相关功能才能打开,这些都是可以考虑的选项。另外,在线确认和升级也是防盗版一个很好的办法。
7、嵌入式设备上的软件保护
不光是上位机,嵌入式设备也是很容易被破解和逆向的。这个时候,一般就要寻求加密的mcu来进行保护了。另外,对于soc设备,就不能单纯地用一个可执行文件+动态库的方式去进行部署了。在linux后台,必须要有检测和防止盗版的方法,甚至通过uboot设定、linux kernel安装必要的driver、flash加解密等方法来处理。很多时候,做这些工作也是没有办法的事情,无非就是增加非法破解的难度,最大程度保护自己的权益。