
互联网行业专业性较强,外行找不到抓手,想要调研没有头绪。关于互联网产品的开发难度,没有个对外的量化标准,今天给大家一套外行也看得懂的判断法则---更新时间:2023.9.15
◆难度量化标准:从业人员的收入
互联网行业从业人员的薪资动辄大几万、年入百万、千万也并不是凤毛菱角,甚至在一些老程序员身上,是一个大概率、大基数的普遍情况。
上表是国内各大行业的收入排名,互联网、金融常年霸榜。
从业人员的高薪资,从这个角度可以看出App开发的难度。
◆难度量化标准:工作量
一个完整的App由安卓、苹果、后台构成,代码量大概需要几十万行。
一个成熟的程序员根据职能不同,每天的代码产出量大概是几百到1000行(这个不绝对)
截图是安卓代码,20多万行,苹果和后台大概差不多的代码量。
完成同一个功能所用的代码行数越少的程序员能力越强。
行数不是绝对的,但可以作为一个量化的标准,来感受开发一个App的难度。
◆难度标准:逻辑性
一个完整的App就像一台零件精密的仪器,由各个部门、函数、逻辑判断组合构成,任意一点连接不紧密就会造成大家理解的bug。
举个例子形容程序员思维:
业外人士把一头大象装进冰箱:打开门、把大象装进去、关门需要三个步骤
程序员把一个大象装进冰箱:需要考虑是否可以把大象拆解成正方体,这样可以更好的利用空间、打开如此大体积的冰箱开门需要多少牛的力?开门的过程中门把手断了如何解决?门把手用什么材质承重力更强?门把手的摩擦力问题,哪中材质用更少的力就能打开门.......
等等,所以功能的实现,在用户看来都是一句话
程序员的视角看,每一个功能都需要考虑到各种情况,做各种逻辑判断才能保证任何情况下,系统都能正常运行。
◆难度标准:更新迭代、适配
App需要不断的适配新出的框架,程序员的一生堪比考公,新的框架层出不穷、新的开发工具、新的技术、新的开发模式....永远在学习的路上
安卓是一款开源的系统,国内所有的手机厂商oppo、华为(套壳安卓)、vivo、包括国外的三星等都是安卓系统,但是不同厂商又对系统进行了不同程度的自定义修改,一个App需要适配各种品牌的手机,还有各种屏幕分辨率的显示器,适配难度非常大。
梳理需求---设计流程---设计原型(理解为简易的用户界面,只是包含了一些字段。没有做排版和美化)---设计UI(用户界面)---编写代码---测试---上架(上传应用市场”应用宝“”appstory“等等)
补一些图:方便大家理解
需求文档:
流程图:
原型图:
UI设计图:
◆需求的梳理和确定
需求就是App的图纸,方向、细节、交互、逻辑都在需求文档里,作为一个App的总纲要,当然重要,需要在项目启动最初就确定
◆高并发
多用户产品需要解决的棘手问题,让多达数十万、百万的用户同时使用App也不至于超过符合,出现在App运营情况良好,用户数量暴增当前情况
◆用户界面交互
举例很多人用过「美图秀秀 」,我们都知道他的功能很强大,复杂的图像处理,复杂的页面交互,需要技术大量的自定义控件,对众多的系统组件的组合套用。
◆优化
做一个App产品可能几个月,大型App的一版本一年左右也就开发完了,但是优化一个App是没有尽头的,是无数细节的打磨、体验的优化、兼容性的优化
◆App定价的几个前提
一上来就要个笼统的价格的话只能说起步价,大几万是个App开发的起始标准。
◆时间
定制类型的软件,开发到交付要用至少1个月以上
一线城市比二线城市报价高,30%-40都是合理的,因为人工成本和办公成本差异
附一张图,有技术公司的城市,基本是上述那些。
一线城市:北上广深
除了上述四个,都属于二线报价
定制比SaaS报价高
SaaS是工具、租用。
SaaS突出工具性、生产快、价格低,没有长期规划,希望有个线上工具来解决问题,就选SaaS
定制是产品,有归属权,能拿软著、专利,可以走资本。
有长远产品化规划的选定制
以下的描述会比较偏技术性,非技术看到本篇文章可以跳过直接看结论,内容我也修改了一些,不对各项技术做好坏评价,也不做引导性论述,只说现状,看了一些评论,确实有点怕了哈哈,有些言论会动摇部分人的饭碗或者说触碰部分人从业信念,对于自己从事的行业大家都听不得不好。具体如何选择,大家根据情况自己选择。
▲概述
原生:官方系统生态环境下sdk制作的APP,体验最好,不具备跨平台能力,需要安卓、苹果分开开发。项目时间不会同比变长,因为可以并行开发,但是人日会增加一个端的工作量。
目前安卓主流开发语言:Java、Kotlin
苹果主流开发语言:OC、Swift
flutter:总上图,搜索指数是三种类原生开发模式最高的,体验不及原生,拥有自己的图形绘制引擎,相对于Rn把图形绘制抛给原生来说,效率更高。开发时间会略小于原生开发,具备跨平台能力,即一次开发可以同时编译到安卓和苹果两个系统上运行,能节约人日。图形库和图形组建不及原生,所以会限制一定的开发场景,比如像美图秀秀以及地图类的高体验、多交互、高复杂的应用不适合用flutter。原生硬件调用,需要分开编辑,对开发者要求会高一些,很多纯web前端的开发人员突然转入flutter适应度没有那么快。
uniapp:组件属于原生小程序的子集,体验不及原生,组建复杂度不及小程序,和原生的APP就更没法比了,社区状态目前也不太好,编译工具bug较多,每次更新都有新问题。具备跨平台能力
套壳:就是网页开发,具备跨平台能力,审核比较困难,不宜纯web直接套壳,可以部分web页面掺杂使用为宜。
RN:较为早期的跨平台语言,目前性能和市场地位逐渐被后者的flutter和Uni取代,之所以还有一定的搜索热度,取决于发行早,部分来舍不得丢,还在沿用。不多赘述
▲时间成本
原生 =flutter = uni app = 套壳
备注:原生需要分别开发安卓和苹果前端,但是可以并行,所以花费时间跟其它一样。任何一个App都是由前端和后台构成。
小型APP制作周期举例:梳理需求(3-5日) + 原型制作 (3-10日) + UI设计(5-15日中间会结合各种思路修修改改,返工比较多) + 编写(20日) + 测试(5-15) + 上线(1日)
综上,一个完整的定制App整体开发时间不会少于1个半月
▲金钱成本
原生 > uni app =套壳 = flutter (虽然flutter后台和前端都能做,但是所需要的时间总量一样,所以不会节约金钱成本)
人工成本:
篇幅和阅读性问题,我帮大家查了一个,这种招聘信息,各大招聘网站都可以查到,大家可以自行了解。
行业内外包公司的报价也是按照人日来计算的,一线城市基本上是1600-1900人日,大型企业了解过中软的,能报到2200人日,二线城市一般1000-1500人日。
3日需求梳理(产品经理和项目主管参与) + 5日原型设计(产品经理参与) + 5日UI设计(UI设计是参与) + 15日编码(安卓、苹果、后台参与) + 5日测试(安卓、苹果、后台、测试工程师参与)
合计工作日 = 33天
合计人日 = 86人日
合计价格 = 86*1500 = 129000
以一个一个半月为期的小型App为例,外包公司报价129000是个参考值。
如果在一线城市此报价上调一些
二线城市可以下调
编程这个工作是比较讲究功力的,功力怎么看呢?
实现一个功能代码量越少,技术越好。
做一个逻辑判断,if越少,逻辑越清晰
那么用大量代码,和复杂的逻辑判断,也能完成功能需求,可以吗?也行,这种菜鸟写的代码,我们业内多叫「屎山 」,具备以下特质
1.可维护性差
因为代码本身是拼凑来的,这儿复制一点那复制一点,程序员本身也都不知其意,反正看起来差不多。
所以后期如果代码出现问题,基本上没法改....或者逻辑上有调整需要调整部分代码,基本上这个项目也死了....
2.延伸性差
App开发不是一个版本就完事了,需要无数版本的迭代,来迎合市场需求,完善、优化用户体验
有经验的程序员写东西的时候逻辑性比较强,他们的一端代码是可以去推敲的,正着来、反着来都不会出错
初级程序员写的东西,逻辑性肯定没那么强,正着来可以反着来就会出错。我说的在形象点举个例子,比如一个功能1.2.3.4肯定没问题,如果换一种方式点进去,1.4.3.2就会出错这就是新手常犯的错误。
老鸟写东西更注重「 结构」和「 封装」,就是为了以后好修改
更多互联网推广交流或技术问题,可 我私信或主页
可能你也正在找:
如果能看到这里,证明了多少有点获得感,求一个赞、喜欢。感谢
更多互联网推广交流或技术问题,可 我私信或主页
@知乎科技 @知乎
欢迎关注 @非正式码农,私信讨论。你的互利网阅读员
