app应用程序开发都需要哪些方面的知识和技能?

app应用程序开发都需要哪些方面的知识和技能?,第1张

App开发,目前也主要是两大方向,苹果和安卓,小程序一类的暂时先不说。

刚好我就是一名iOS开发者,就以我自己的经验聊一聊吧,安卓应该也类似。

前提:

我暂且理解为你已经是一名程序员,目前想转做app开发。就以这个为前提吧,如果你是其他行业转的或者还未毕业的同学,那就在这个前提下,再找补一下计算机基础的专业知识了解下吧。

本人经历:

我在做iOS开发之前学过Java、C语言相关的开发语言,并且在公司做过一些项目,都是服务的的项目,后来因为自己接触了苹果产品,成为了“果粉”,对iOS开发也产生了兴趣,所以就从服务端的开发转到了“前端”的app开发,做了iOS开发者,目前也做了多年了。

Ps:以下内容涉及的会比较多,针对不同的定位(团队协作还是独立开发者),所需要的也不同。另外不同的app类型,所需的知识也不同。比如游戏类的和工具类的就不同。一些专业型的和非专业型的也不同,我下面整理的也不是很全,是比较泛的。

根据我自己的理解和经历,粗略的总结了一部分:

一、了解苹果硬件、软件的知识

1、比如苹果电脑的 *** 作使用;

2、iPhone的硬件信息(例如屏幕分辨率、内存等硬件信息)。

3、macOS和iOS的软件信息(UI组件、特性等)。

4、AppStore的审核机制,这些都是需要知道的。从开发到提交手伍上架,这些都是会涉及到的。

二、开发语言

Objective-c和swift语言的基础知识;虽然现在苹果也在推广swift,包括很多公司的项目已经使用swift开发,但是老的项目依然是OC语言开发的,还是需要掌握OC的。

三、开发工具

1、Xcode是苹果应该开发的基础工具,包括iOS、macOS、watchOS、tvOS都需要使用,也有第三方的工具可以coding,但怎么都离不开Xcode。除了开发工具,还有性能调试工具instruments也是需要使用和了解的。

2、除了上面的基本开发工具外,还有很多第三方的工具,例如命令行工具、文本编辑、图片压缩卜薯桐、设计稿查看、icon及市场截图生成工具;协作共享工具(例如有道、印象笔记等等);

四、App开发技能

1、常用UI组件特性;

2、项目的架构/框架设计、SDK设计开发;

3、性能调优;

4、Bug排查、调试工具及方法;

5、app提交流出、审核被拒处理如何处理等等;

五、其他工具

1、团队协作的工具;

2、提高效率的工具;

3、原型设计工具;

4、代码提交工具;

5、其他很多工具

六、协作能力

这个是针对公司团队的,常见的协作工具,提高协作的方式等,也是需要知道的。这个也是可以边做边学的,不同的团队,协作工具也不一样。但基本都是差不多的。

例如:设计师设计好的原型图或者UI设计稿如何给到开发?

切图的命名规则怎么做才能让开发更高效?和测试同学如何协作能保证效率,同时也能保证质量?

例如:开发可以在开发阶段集成测试功能的代码,方便自己开发调试,也可以在提交测试后,测试同学也能方便的使用和反馈问题给开发。

例如:通过持续集成高效的开发和测试,等等。这些也可以算到协作能力里面。

七、产品需求能力

如果是独立开发者这项也是必须的。

即便是一个很简单的app,也算是一个产品,只是可以简单到不用冗余的需求文档而已。但如果是在公司团队协作,

作为一名开发人员,也是要有分析需求,并且给予合理建议的。

八、设计能力(交互设计)

1、独立开发者:这项是必须的。能够通过原型工具进行交互设计。当然可以很简单或者这个原型是在你脑海里的,然后用代码实现。

2、团队:一般会有专门的设计师进行app的交互、体验、UI设计,然后给到开发人员进行开发。提交审核也可能有专门的人员负责。但如果是作为app的独立开发者进行开发,这些也是需要掌握的。

常见的设计工具也可以了解一些。

Ps:关于设计,苹果官方有《人机交互指南》文档,这个一定要看一遍,无论是独立开发还是团队协作,都是有好处的。

还有一点比较重要,就是提高“审美”。无论是代码还是UI,都需要更“美”(代码简洁易懂、易扩展;UI符合苹果或者安卓的设计原则,同时有“设计感”)。

九、问题排查的能力

1、开发过程中:开发中的问题,要善于使用Xcode的bug调试工具及常见的调试命令;

2、线上事故:当线上出现严重或者疑难问题时,需要快速响应、止损、排查和修复问题,除了常用的开发、调试工具以外,还需要有一定的抗压能力和除代码层面以外的解决问题能力。例如通过分析崩溃日志,定位问题。当出型坦现不能复现的问题时,需要多维度分析用户数据,便于定位问题。

十、运营能力

这个也是独立开发者应该具备的。因为无论是什么软件,都是需要“运营”的。

公司一般有运营团队去做,而个人开发者也要掌握这方面的知识,例如常用的第三方运营工具/网站,知道UV、IP、PV这些都代表什么意思,如何去推广自己的app等等。

以上也是自己临时想的,比较多比较杂,欢迎taol和交流。??

网上搜一下,很多的,别太懒,比你等快得多;\x0d\x0a程序员、软件开发人员应具备基本技能\x0d\x0a1、项目实践\x0d\x0a• 软件工程理论\x0d\x0a• 质量体系:ISO9001和CMM体系\x0d\x0a• UML基本理论\x0d\x0a• 测试理论和测试工具使用\x0d\x0a• 加密理论和加密方法\x0d\x0a• 源代码控制工具使用\x0d\x0a• 说明书编写\x0d\x0a• 程序的安装和部署\x0d\x0a2、专业技能\x0d\x0a3、程序员基本素质\x0d\x0a• 团队精神和协作能力(• 木桶理论、• 学习性组织)\x0d\x0a• 文档习惯(• 注释、• 开发过程文档:良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。)\x0d\x0a• 规范化,标准化的代码编写习惯(作为一些外国知名软件公司的规矩,代码的变量命名,代好尺码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。• 代码编写规范• 界面设计规范)这里邵老师强调了标准未必要固定,但在一个项目组中间要有统一的标准。\x0d\x0a• 复用性,模块化思维能力(• 用户控件 • 组件技术)\x0d\x0a• 测试习惯(• 单元测试 • 集成测试 • 系统测试 • 稳定性测试 • 软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。)\x0d\x0a• 学习和总结的能力(• 学习:程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。• 总结:善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况\x0d\x0a和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。)\x0d\x0a4、职业素质\x0d\x0a• 交际能力\x0d\x0a• 表达能力\x0d\x0a• 职业素养\x0d\x0a5、个人素质\x0d\x0a• 信心和恒心\x0d\x0a• 良好的个人品质\x0d\x0a• 良好的个人习惯烂袜局\x0d\x0a\x0d\x0a• 关于质量控制和开发模板\x0d\x0a• 项目组建设\x0d\x0a\x0d\x0a高级程序员的基本素质:\x0d\x0a1. 需求分析能力\x0d\x0a对于程序员而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢?\x0d\x0a2. 项目设计方法和流程处理能力\x0d\x0a程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方法,比如快速原型法等等),并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的整体设计。设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。\x0d\x0a3. 复用设计和模块化分解能力\x0d\x0a一个成熟的软件行业,在一些相关项目和系统中,不同的部件是可以随意换装的,比如微软的许多桌面软件,在很多 *** 作模块(如打开文件,保存文件等等)都是复用的同一套功能模块,而这些接口又通过一些类饥让库提供给了桌面应用程序开发者方便挂接,这就是复用化的模块设计明显的一个佐证。\x0d\x0a4. 整体项目评估能力\x0d\x0a作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评估项目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需要大量的经验积累,换言之,这是一种不断总结的累计才\x0d\x0a能达到的境界\x0d\x0a5. 团队组织管理能力\x0d\x0a首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。\x0d\x0a其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小组有主程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项目研发的需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥组队的效率.

首先,程序员岗位的工作压力大,一个重要的原因就是开发任务比较多,而程序开发任务多的原因有三点,其一是当前信息化程度不断提升,各行各业对于软件的依赖程度比较高,所以软件开发的任务也会比较多。处在传统软件开发乱烂磨企业的程序员通常需要面对各个行业的软件需求,而且由于软件产品需要不断根据企业的运营要求和技术发展进行升级,这部分的工作量也是非常大的。

其二是随着互联网、大数据和云计算的发展,目前软件产品的迭代速度越来越快,尤其是面向大众的互联网软件产品更是如此,虽然不少互联网企业不断壮大自身的研发团队,历铅但是软件开发的任务需求量似乎有更快的发展速度,当前软件产品的迭代已经从传统的瀑布式迭代转向了并发迭代,这同样需要大量的程序员。简单的说,在互联网企业永远有开发不完的需求,这一点与传统软件公司还是有一定的区别,所以互联网企业对于程序员的能力要求往往也更高一些。

其三是产业互联网打开了新的软件需求大门,未来产业互联网阶段,软件开发将全面深入到各个产业领域,全面为传统企业的生产运营赋能,这自然也需要大量的程序员。当然,在产业互联网阶段,企业对于程序员的能力要求也在不断提升,程序员需要掌握大数据、云计算、物联网以及人工智能等一系列技术,所以当前的程序员,要想在产业互联网阶段获得更强的岗位竞争力,需要紧跟技术发展趋势。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!

作为相关从业者,我来回答下。

首先回答问题,每天没那么多新软件开发的。

软件开发并不是你想的那样一来就搞新软件,比如开发个APP,或者做个新网站。

要知道,很多旧软件遗留了很多问题的,程序员们做的事主要包括: 改老代码的bug 、 更新软件版本 、 添加新功能 、 开发新软件业务 等等。题主你所理解的软件开发只是开发新软件而已,改bug、软件版本更新都是工作量特别巨大的工作。

这些任务都是没有尽头的,公司会根据市场需求,制定新的产品功能,比如开发新英雄什么的,需求是无止尽的, 任务也是无止尽 的,所以需要大哗斗量程序员前赴后继参与软件开发。

很高兴回答你的问题。

1、程序员每天确实是在敲代码,但不是每天都有新软件开发。

2、新软件开发的迭代周期没有快到一天就搞定了。凡事都是有个过程,需要从需求调用、需求立项、需求评审、开发工时评估、进入开发、完成开发内测、线上公测、推广产品等环节。这里仅仅说的是新软件开发,迭代版本的周期会稍微有区别。

3、程序员除了开发新产品,还需要对旧项目进行版本迭代、老的项目维护等重要工作。

4、以上说的都是开发程序员,这里需要强调移动,很多公司的研发团队、架构师等职位虽然也是程序员,但是他们的工作基本是底层、架构、框架开发或者开源框架的二次封装等。基本不能称之为新软件开发。

如果没有新的软件要开发,就维护老的软件;

软件系统不是一天就能建成的,从开始到稳定,需要一个过程,不是编完代码就完事了,还有完善、维护、升级;

程序员的工作并非只是开发新软件,有时候还要培训用户,了解用户需求;

另外看你所处的行业,如果是外包公司,那确实会不停有新的软件需要开发,因为这些公司本来就是靠开发新软件盈利的。

不用管这些,好好学好技术才是真的。

新软件并没有那么多。软件周期一般是立项,调研,需求分析,设计,开发,测试,上线,试运行,维护。这个周日可能很长,一般是数月甚至是数年,需要反复修改和矫正。每一个岗位都需要对应的人员,所以需要的员工比较多。

在者,一个软件分为前台,后台,Android ,苹果,微信等平台,几乎每个平台都需要特定的技术人员才能完成,所以岗位人数较多。

另外就是你看不到的很多功能,数据分析,统计,报表等后台功能,作为软件运行人员,需要知道软件的运行状态,比如收入,活跃用户等等指标,这也需要开发者完成。

除了上面的这些因素,才是你说的新软件多少的问题,各行各业都确实需要软件来提高效率,降低人力成本。没有哪一个行业不需要软件的。想想你的手机里有多少软件?再想想一个美团外卖可是数百台服务器,上千人的技术团队来运行和维护。

这些因素加起来,差不多可以解答你的疑惑了。

他们都在解决bug


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12557674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存