快捷导航

解析:小荷才露尖尖角(3)——软件开发入门的套路2024/1/23

[复制链接]
查看: 1|回复: 0
发表于 2024-1-23 16:13:18 | 显示全部楼层 |阅读模式
真的挺后悔自己高中没好好学习,自己曾是湖北八校之一的学生,毕业之后看着自己的同学不是985就是211,也许当时可能觉得没啥差距,但是真就一本管学习,二本管纪律,三本管卫生,985大学的教学模式和方法以及教育资源,真的不是二本,三本可以比的,希望大家都可以好好学习,我个大学生看个这个,快感动死了。

  前端:

  前端主要是UI设计,以及根据UI设计图转换为Android、iOS上能够实际跑起来的app,当然这时候没有任何的业务流程业务逻辑,最多是简单的点了个按钮从这个界面跳到那个界面。若羽电脑百科http://dwzs0769.com.cn的相关问题可以到网站了解下,我们是业内领域专业的平台,您如果有需要可以咨询,相信可以帮到您,值得您的信赖!

  后端:

  后端可以理解为一个app的保障或者数据支撑。给前端展示提供实际的数据。开发语言很多,php,java,nodejs,.NET等等都可以,一般app的后端会提供RESTFUL接口供前端调用

  前端后端结合:

  以上都可以理解为独立的工作,前端做前端的工作,后端做后端的工作,到了结合这一步上边就要有很多的交流和沟通了。举个栗子,比如新闻类app:

  前端首先需要通过http方式调用后端的接口,拿到我需要展现的新闻列表数据,然后显示出来。

  当我点击某个新闻想查看详细的时候,同样需要调用后端提供的接口,拿到新闻详细的数据。

  当然有时候前端需要传递一些数据给后端保存,不如用户注册,前端吧用户输入的用户名密码等信息通过接口给后端,后端处理用户注册逻辑完成注册,下次用户用这个账号登录同样传用户名密码给后端,后端通过传来的数据进行判断逻辑,吧结果返回给前端,然后前端根据结果提现是用户。

  简单的说前端是一个外衣,是跟用户最直接直观的交互和展示,后端是处理前端应该展示什么样的数据给用户,或则给前端提供展示什么的一个依据。

  我来答点Android相关的吧,虽然可能不大切题。

  Material Design是一套非常适合开发者掌握的设计语言。它对各类元素都有非常详尽,以至于一些设计师视之为桎梏的规范。

  做一个设计上60分的Android App,你只需要2个东西:

  google.com/design/spec

  和Android Studio。Sketch、PhotoShop等设计工具暂时还用不到,一开始就花精力在上面只会徒增你的学习曲线。

  想做一个界面,然而并没有思路的话,请直接新建Activity,使用默认的模板。默认模板至少能给你提供一个不会太丑或者失控的骨架。

  新建完后挑选主题色,请到

  http://www.google.com/design/spec/style/color.html#color-color-palette

  里挑(除了蓝色)。挑自己喜欢的就行,不用打开调色板慢慢斟酌,因为你要做的是一个60分的应用,不是90分的。

  程序内的各项动作图标,请千万别从网上下载各种细线体的iOS风格图标,不仅和Android格格不入,还很可能出现重心不一、意义不明的情况。请直接使用Material Design图标库,方法是在Android Studio里右键-New-Vector Asset。

  程序内的各项元素,请尽量使用design-support所提供的组件。比如fab、snack bar等等,通常情况下工程师自己草草设计并自定义的view是很难像官方控件一样考虑到各种复杂的情景,并保持优秀的性能的。

  当你不知道文字该用什么字号时,同样请看

  http://www.google.com/design/spec/style/typography.html#typography-styles

  ,注意20sp以下中文比英文多1即可。

  当你不知道如何设计动效时,android:animateLayoutChanges="true"一句足够了——RecyclerView内除外。

  当你需要为App设计一个图标而完全没有美术功底时,直接

  Android Asset Studio

  生成一个也算能用。请不要自作主张加上圆角矩形底,在Android上,我找不出圆角矩形底的任何正面意义。

  Elevation是Material Design的精髓,请务必参照

  http://www.google.com/design/spec/what-is-material/elevation-shadows.html

  ,为合适的元素选择合适的高度,虽然4.x的兼容会花你一点时间,但请相信,那是值得的。

  最后,

  不要使用底Tab。

  不要使用底Tab。

  不要使用底Tab。

  底Tab到如今,已经不止是一个设计问题,更是升华为宗教问题了。如果你使用了底Tab,那么不管你其他方面做得多么优秀,至少和用户口碑中的「优秀设计」无缘了。

  利益相关:刚上手半年的独立开发者 -

  https://play.google.com/store/apps/dev?id=4678881964570346633

  1:设备。自从入了imac 27 retina之后,感觉做的设计比以前高大上了许多许多。

  2:借鉴。程序员做设计,很重要的一部分是借鉴,切勿自己乱画,多看一些优秀的app,从中借鉴自己可用的部分。

  3:简洁风。切勿搞的花里胡哨,你又hold不住,我们就走简洁风,能少则少,扁平化。

  4:素材。收集素材啊,icon一定用现成的包啊,素材网站多搜搜啊。

  5:切勿不搞设计稿直接就开始用代码绘制啊。很重要,例如前端,千万别用代码调整来看效果,先把设计稿做好再,别急,用代码绘制界面调整,一点设计的感觉都没有,给自己多点时间思考一些代码之外的事情。

  过100赞,把最近设计的两个app晒出来。

  (iPad答题,请容忍糟糕排版>_<)

  这个问题其实有两个思路,你是现在就想做个美美哒app,还是像先变成设计师再做美美哒app,如果是后者,请参考其他答案~

  职业之间的信息不对称啊,你以为设计师都是一个像素一个像素从头搭的吗,不不不,我们也是有偷懒的诀窍的。。。读完此篇,只要你有ps或者sketch,知道图层的概念,可以把元素导出为所需格式,app的活儿你就能一个人干了。

  你的设计难度会从 ---

  变成 ---

  --- 提纲 ---

  1. 做app需要图标,我又不会画,怎么办?搜到一些现成的,但质量又不高,怎么办?图标不成套怎么办?

  2. 没有审美怎么办?

  3. 心里有个app想法,但是线框图画不出来怎么办?

  4. iOS那么多尺寸,Android尺寸更吓人,全都要记住吗,导出@1x@2x@3x点九图什么的是不是很麻烦?

  5. 说了这么多,还是要我从空白画布上画吗?!没有美术基础啊!当然不是啦~

  6. 还有什么问题可以提问哈。

  --- 正文 ---

  1. 图标苦手怎么办

  就算是设计师,一个一个画图标也是很累的。

  这时候,如果有钱,请到选项到A;如果没钱或者不想花钱,请到选项B。

  A 如果非常有钱,请直接把钱给我,我把图标给你哈哈哈。如果有一点钱,可以去

  http://www.shutterstock.com/

  或者

  http://www.pixeden.com/

  买,图标站还有很多,先列这两个,反正你们更想看免费的对不对。

  B

  http://www.flaticon.com

  是你的好朋友,最好的朋友之一。虽然最近突然改版,变得有点难用,但海量,成套,免费,你还图啥?缺点可能是风格比较单一,想要fancy一点的怎么办?smashing magazine帮助你,

  https://www.smashingmagazine.com/

  只要搜索freebie即可,最早几年的icon质量不太行,也过时了,越是新帖质量越好。

  举个栗子,随便点开一个。

  可以调大小,可以改颜色,可以调线条粗细,用上这些,是不是b格噌得就上天了!这些都是顶级设计师放出来的免费资源,你花钱雇的设计师未必画得出来。。。

  2. 没有审美怎么办?

  这个就没有特效药了。据我的观察,没有审美天赋的人,可以判断好看和不好看,但无法判断好看和更好看,这时候如果你有个设计师朋友,请付费或者请吃饭,向他咨询咨询吧。

  疗程缓慢的办法有:多看dribbble(eye candy多,但可以了解趋势和审美取向),多用好评和获奖的app,“最美应用”你下载了吗?“豌豆荚设计奖”你看了吗?(

  @马力

  请点赞~)每年app store 的盘点你都关注了吗?

  3. 构思不好app流程怎么办?

  $1 prototype大法,来自一本同名书,我刚看完个开头,所以以下是我根据它的目录和我的经验编的。。。具体就是“场景” - “过程” - “界面”。

  先想象用户在什么情况下用,涉及几个用户,他们在干什么。比如,yelp,是用户需要找地方吃饭,所以一般只有一个用户(相对于uber两方用户,群聊n方用户),输入是一些查询条件,输出是在哪儿有饭吃。

  现在细化过程,用户从打开app到达到目标,有哪些步骤。还是yelp,一般情况就是打开app,输入查询条件,看到结果,筛选,满意的话查看商家详情,不满意的话可能重新搜索可能更改筛选条件。这是主线剧情,还有些支线剧情,比如看到一个用户的评价很好,查看用户的其他评价,follow用户;还有自己身在餐馆,拍了菜单拍了菜,上传到yelp。把所有的剧情,都在流程图上画出来。

  期间可能会遇到一些细节。用户先输入什么呢,是餐厅类型,还是只要能吃就可以?距离这个信息是gps给还是用户自己输,或者其实距离无所谓,反正用户有车呢?价格是什么时候出现?是搜索的时候就限定价格,还是结果出来以后再筛选?这些都不怕,反正也是要改的。。。而且一般自己想做的app也没有这么复杂。

  你有一个流程图了,界面就简单了。把元素往界面上摆一摆,推荐用手机大小的便利贴,拿铅笔画上去,有很多东西玩app多了都有经验,搜索结果是啥,不就map view和list view么,怎么筛选,放一个漏斗icon在标题栏里呗,酱酱酿酿就好了。接下来就是把亲朋好友拉过来,让他们玩一下这个paper prototype,发现不对的地方再改。

  有两个软件推荐,一个

  https://popapp.in

  好久不用,希望它还是免费的。一个

  https://marvelapp.com

  免费无限量project,真良心,我一直期待它被adobe收购,结果adobe既没有收它,也没有invision,而是准备自己做一个comet。。。真傲娇。

  4. 尺寸记不住怎么办?

  就不要用ps了,sketch做为生产力工具,真的不贵,都不是按月按年subscribe的,一次买一生,有什么舍不得的,买吧。以后用它直接新建画板,就不用记住那么多尺寸了,导出图片也特别方便,ps切图再见。

  5. 面对空白画布下不去手怎么办?

  前面提到了invision,这家公司的marketing很牛,设计也很牛,市场部为了宣传他们的产品,让设计师做了很多的高质量免费模版给其他设计师下载。

  举个栗子。

  再举一个。

  这些全是一整套,一整套啊,意味着登陆界面,dashboard,阅读文章的界面,购物车,天气,聊天对话各种界面都很可能有。格式一般都有ps,sketch两种,有时有ai,和设计师打包给你的成品差距不大,你可能需要一个切图仔,或者自己来。

  这些不够怎么办?

  http://graphicburger.com

  http://freebiesbug.com/psd-freebies/ui-kits/

  https://ui8.net/categories/freebies

  这样总行了吧。

  6. 其他问题。

  应该没有其他问题了吧。有的话评论区留言吧~

  谢谢大家阅读。

  看了您这个问题,主要看你的功能需求来定你这款APP的价格,如果您是常规的功能需求的话,不需要定制一些功能之类的东西的话,一般价格在5-20万之间,如果需要复杂的功能,以及定制项目的话,价格一般在10-100万,甚至更多,所以如果您需要评估一下APP的价格的话,可以来广州红匣子科技免费提供项目需求分析,价格分析,欢迎大家前来测试,咨询(好的企业从来不担心考验!)欢迎大家前来测试、咨询。

  红匣子科技从事软件开发行业到今年也有7个年头了,听过无数遍来着客户的问“电商APP开发多少钱,社交APP开发多少钱,教育APP开发多少钱等等什么什么APP开发多少钱”,这些不是我司不行问答,而是根本就没办法回答,开发一款APP,在没有完整详细的需求方案或者说需求文档的分析下,报出来的价格都是耍流氓,都是不正确的,就如我上面的那些价格也都是我司从事怎么多年来总结出来的,但依旧是需要看您的需求的定价格的

  下面还是和大家分析一下我们开发公司报价的组成方案:

  人员成本(一般都是占最多的)

  那么人员组成基本配置

  人员组成基本配置:安卓(Android工程师) + 苹果(Apple工程师) + 后台(也就是java或者PHP) + 产品(设计流程,制作原型) + 页面设计师 + 测试技术员

  那么上面人员配置 +场地以及水电费等等其他费用+合理利润+税点=最终APP的价格

  下面也说一下开发公司人员配置的工资情况

  安卓开发人员:一般在一万~一万五左右

  苹果开发人员:一般在一万~一万五左右

  后台(也就是JAVA或者PHP):小项目的话一般在八千~一万五左右(如果的大型的项目的话需要架构师那基本上月薪就在5万-15万之间)。

  产品经理:一般在八千~一万五左右。

  UI设计师:一般六千~一万二左右

  测试人员:主要参与时间是项目开发完成后进行测试,写出测试报告、测试文档、硬测试书,然后开发修改,重新测试修改...直到没有BUG。费用在四千~八千之间。

  对于场地+水电费等等费用的话一般在1万左右。

  加上一款APP合理利润:一般在15%-20%之间。

  那么一个产品要从无到有都需要哪些工作呢

  1、产品的官网,就是你这个产品的官网网站要吧,这也是客户能够快速了解您这个产品的重要所在。

  2、用户协议,这个不用我多说,大家在接触每一个APP都是有的

  3、第一批用户,这个时候您就要想如何获得第一批用户,如何留住这批用户,如果流失了这批用户,我们的产品哪些地方需要改进的,产品的问题在哪里等等问题都需要总结调整。

  4、数据的统计,以及规划,大家都知道用户是一款产品的关键,那么用数据的统计是至关重要的,这些数据可以用来优化产品,思考你的产品方向。

  5、UI设计与交互,大家都知道,用户看的都是前台展示的界面,那么如果您这款产品,的界面足够惊艳,足够吸引用户,那么您就成功了一大半了

  6、后台管理系统:管理系统可以帮你更好的统计数据和内容的管理,有效提高对用户数据分析。

  如果以上都顺利的话,在您固定的时间内,您的第一代APP的雏形就出来了

  那么接下来就测试、和对APP的打磨阶段了

  这个等到20个赞,我在跟大家细说。

  广州红匣子信息技术有限公司经历6年多的技术沉淀,公司70%的人员为高级技术人才,核心技术更是来着BAT公司,具有丰富的行业开发经验和专业技能,与国内外多家知名企业建立了合作关系。经过多年的持续研发与技术积累,已经拥有一套针对不同行业领域的移动互联网解决方案,为客户以及客户的客户提供架构设计、需求分析、设计策划、程序开发、部署运维全程外包服务。除了提供技术支持以外,还能提供关于项目的商业模式诊断优化、运营思路搭建、推广渠道资源的共享等支持让每个互联网项目都能解决初始精准流量的头疼问题。(因为红匣子科技已经帮助过许多客户运营过APP了,其中就有社交APP,更有成功案例,也有专业的运营小组,除了开发优势,更是具有运营资源优势)

  下面也展示一下我司开发过的社交APP案例

  随着互联网技术的发展,开发一款APP软件究竟需要多少钱?已经是很多人都想问的这个问题,尤其是大部分APP开发公司都会被问到这个问题,并且客户非常期待能给他们一个具体数字。试想,如果你是4S店老板,有人问你买一台车多少钱?你会怎么去回答?

  不同的品牌,奔驰和奇瑞,同样的品牌,车型号也不同,就是型号相同,低配和高配的价格会差别很大,所以想要得到一个具化的答案,就有提供更多的需求描述。

  APP定制价格没有统一的标准,因为按照不同的开发模式、功能需求,费用自然不同,这里就来分析一下影响APP开发价格的因素,那么,上线一款APP需要多少钱?

  有网友发出了一份APP开发价格:

  所以,与其花更高昂的经费组建APP开发团队,高昂的管理成本和时间成本,不如选择专业也靠谱APP开发软件外包公司。

  现在APP软件开发技术已经非常成熟了,可以很好的为客户量身定制的手机APP制作软件,专业的APP软件外包公司有很多。比如北京恰维科技APP软件外包公司,就是国内口碑非常好的专业外包公司,持续稳定为客户提供服务。

  在软件外包中整个项目开发流程中,关键客户都能在线看到进度,可以很好的把控项目。让你短时间内就可以拥有一款APP软件,不管是手机商城APP、资讯类APP还是同城APP,功能都可以一并满足。

  一、APP开发费用与制作方式不同有关

  1、选择专业外包公司恰维科技软件APP制作进行开发:采用这种方式制作费用很低,周期短。因为专业的软件外包公司开发技术成熟,项目把控质量高,并且有很多相似案例的相似功能点都复用。很大程度节省了开发成本。仅需要把需求告诉他们,就可以逐步沟通、开发实现了,并且源代码交付,是真正属于自己的APP软件。

  2、个人制作APP。指的是自己拥有APP开发的技术人员,仅需要一台电脑就可以自己制作。大型的APP就需要组建团队。

  3、APP在线制作。这样现在制作的APP不仅功能的上没有办法真正做的服务客户,用户体验非常差,并且后期没有办法维护,用户数据都泄露在对方平台上,后期安全隐患问题较多。

  4、纯原生开发价格高,周期长。优点是源代码交付属于自己的软件资产,后期易维护和扩展,随意增扩功能等,重点是定制化的开发模式对业务发展更贴合,用户体验更好。

  二、APP开发费用和运行系统有关

  App的价格与运行的系统密切相关,比如安卓、苹果IOS或者WP手机系统不同,开发的费用自然不同,但往往需要安卓、苹果IOS双系统都支持。

  选择外包公司,可以从功能梳理、界面设计、代码编写等各个环节进行把控,提前预留好双系统开发规划,所以成本自然会低很多。

  三、APP开发费用与APP的大小有关

  1、APP制作的需求高,开发的功能多,所需要的花费的精力多,费用自然贵。选择专业的APP软件开发公司,可以降低这样的预算。

  2、如果是大型企业,APP承载人数、流量会有很高的要求,那么其价格自然贵。

  以下是我在从业中发现了有软件开发需求客户犯的常见错误:

  ◆以为做个APP/网站很简单,不说清楚需求,就给个参考;

  ◆急着想要报价,却对自己的每个需求都不清楚;

  ◆不知道想要什么,把APP说成网站;

  ◆网站分不清PC端和移动端;

  ◆以为所有软件都有模板,而且模板都很便宜;

  ◆缺乏耐心,不明白也从未想过自己要做的东西有多复杂;

  ◆选择价格极低的技术外包商,最后收到一堆无用的代码;

  ◆自己不知道要做的东西的具体功能,要靠开发商来猜。而且还这时候就要报价。事实告诉我们,这些问题一定会导致以下结果:

  项目做出来跟自己想的完全不一样。

  不知道你们在做项目时会出现什么样的问题?可以留言评论

  说起计算机专业,编程就像一座高山,让很多人望而却步。但请务必相信我,事实上这个东西真得不难,计算机领域的知识确实庞大且在不断更新,但只要入门了,后面只需要慢慢积累,根据需要点亮一个个技能树就可以了。

  计算机的0、1世界与人类现实世界的规则不一样,软件工程师的工作就是把人类现实世界翻译成计算机语言。只要这个套路熟悉了,具体是做移动App开发、H5开发、小程序开发、Java开发,都没有什么区别。这也是为什么熟悉了一门编程语言之后再学习其它语言就很快,因为那时的我们已经掌握了计算机世界的规则。

  无论如何,开始第一门编程语言的学习对大部分人来说是比较难的。但我相信换到任何领域这个问题都会存在,主要原因在于,我们要进入一种跟以往完全不同的领域去学习,就像初次学习英文、化学、几何、线性代数、微积分一样,进入一个未知的全新世界。所以,我一直认为并不是因为这个东西相比其它领域复杂。

  从大学时由于学校老师拉跨,我的专业课几乎全是自学的,其中让我印象最深的就是大一时接触的数据结构和Java编程语言,至今还记得我们班那几个学霸愁眉苦脸的样子。自从攻破了这两门课,再后面的计算机网络、操作系统、多媒体、数据库、网页设计等课程对我来说完全没有难度,因为那两门课就让我掌握了计算机世界的本质。当你懂得了计算机领域最底层的原理,再看基于底层原理搭建的那些不同风格的软件,就毫无挑战了。

  好了,聊到这里,我们就把问计算机领域的学习聚焦到编程语言和数据结构上面了。这两个东西形影不离伴随着你,直到哪天你不再写代码,他们还会影响着你看待这个世界的思维模式。即使只有这两门课程,在入门学习时还是有先后顺序的,我建议大家从编程语言开始学习。在学习一本编程语言教材的同时,会不知不觉用到数据结构,那时再去学习数据结构理论,就会惊喜地发现:原来是这样!而如果反过来,那抽象的链表、数组会让你欲仙欲死,过目即忘。没办法,无论进入哪个领域学习,如果你在对具体的应用场景没有任何概念时去尝试理解、记忆前人抽离出的通用规则,那感觉不要太酸爽。

  这下我们的问题再一次聚焦了,找一本教材,跟着它从头到尾学习一门编程语言,开启软件开发的精彩之旅。以下我将软件开发入门分为几个不同阶段,讲述每一阶段所做的事、看的书,还可以保证每一阶段都能拿到正反馈。这些是我十几年软件开发,加上多年的面试经验总结出来的套路,相信我,按照这个思路坚持下去,你会比所有走得更快更稳!

  第一阶段,熟悉环境和语法。

  一本经典的编程语言教材,无论是《21天从入门到精通》还是《深入浅出XXX》,都会从变量、常量、类、方法、if、for、while、switch这些概念讲起,每一章还会配备一些练习题:写一个循环加法、打印一个简单的变量等。可能一开始理解起来很费劲,不要着急,找台电脑安装上开发环境,把书中提到的所有代码一个字符一个字符地敲到电脑中,编译、运行。很多书都有配套的电子资料,里面有源代码,但不要用,全部自己手打进去。如果有错误就去解决它,在解决错误的过程中,一点点地积累,慢慢就会知道每种错误提示一般都是什么原因。如果没错误,就自己改一改、试一试不同思路,再编译、再运行,比如,把加法改成乘法,把循环100次改成用变量来表示等等。

  我一直认为编程这件事在工作的前三年都是个熟练工种,只要代码写得多,自然就能上手得更快。当一本编程教材学完时,你确保把书里面提到的所有代码、练习题都做完了,你就掌握了基本的语法,对开发环境有了基本的了解,同时也能掌握排查基础问题的思路了。

  至此,最难的第一阶段就成功完成。这个阶段最关键就是,静下心来,把书中提到的所有例子全部尝试一遍。

  第二阶段,熟悉编程语言的API。

  所谓软件工程,其实就是计算机的硬件能力被操作系统封装起来,以编程语言API的形式提供给软件开发工程师,用这些API来搭建起软件工程,做出一个个的软件产品。

  每种编程语言都有一个API索引,里面提供的API多种多样,画图、播放音视频、访问网络、数据处理、读写文件等。现在进入了第二阶段,我们的任务就是将编程语言提供的各种类型的API使用一遍。

  这个阶段会很有意思,你可以尝试用两行代码画出一个三角形来,也可以用一行代码循环播放一段音乐,还可以自己通过调用网络API,用几十行的代码把一个文件从网络中下载到你的机器中。虽然简单几行代码实现的软件能力还很粗糙,但带来的成就感远比平时使用别人的软件产品强的多。

  当你把经典的API,比如,字符串处理、打印文本、画图、组装界面、使用多媒体资源、网络等常用API都玩过一遍之后,你就会猛然发现自己已经知道平时用到的这些软件,微信、手机淘宝、支付宝、抖音、QQ音乐等大概是怎么实现的了。所有软件都是在借助编程语言来调用操作系统提供的API,只是他们做的功能更全面、更强大,而你的代码比较简单而已。

  另外,在这个阶段可以开始看一些深入讲解语言的书,比如,经典的《Java编程思想》,深入剖析了Java语言的各种基础特性,让你对语言的理解更深刻。

  当然,你的编码能力、对开发环境的了解、Debug能力在这个阶段也再次得到了加强。

  至此,第二阶段的任务也顺利完成。你的收获应该就是电脑中的一个个的小demo,每个demo都用了系统的API实现了一个有意思的功能。

  第三阶段,研究优秀代码。

  当代码很少,比如,几十行、几百行的时候,你用一个工程,甚至一个文件就能驾驭。但当代码到达几千、几万、甚至几十万的时候,就要学习怎么把他们组织起来了。

  如果这时扔给你一本讲软件工程理论的书,会瞬间把你打击的从此之后不想再碰编程。所以先不要着急学理论,还是从动手开始。我一直认为,软件工程这种理论与实践紧密结合的领域,入门时一定要从实践开始,先建立一个比较全面的体感,再去学习理论就会有“哇,原来是这样!”的悟道感,超级棒!想办法持续拿到正反馈,才是学习一门复杂知识的聪明方法。

  到这个阶段,我们的切入点是开始研究别人写出来的好代码。方法很简单,就去github上面找一些你感兴趣的开源项目。一定要找那种Star比较多,而且代码量不大的,最好是几百、几千行这种级别,功能也不要太复杂,小而美最好:一个简单的图片缓存、文件处理工具、网络访问库、本地文件读写工具类等等都可以。clone下来之后先花上几天把它看明白,如果代码中有你没有用过的API,或者有你不熟悉的语法,务必要通过查资料全部搞明白。又是一个疯狂吸收新知识的时刻。

  等你觉得自己完全读懂了,就把它复制到自己的工程中,边改边编译、运行,出现问题就去研究原因,把bug纠出来改掉,再编译、运行。等过上几天把一个小项目彻底玩透了,就再寻找下一个。当你玩透了几个不同功能的开源小项目,就会在不知不觉中完成了我们这个阶段的学习计划:如何组织多个代码文件来完成一个比较复杂的小功能;常见的设计模式,如,单例、工厂等;一些编程语言高级特性的使用,如,多线程等。

  看到这里,你一定明白在github上找Star多的项目的原因了,看优秀的人写的优秀代码,自己才会吸引到好营养。

  另外,这个阶段就要同时看一些数据结构方面的书了,优秀代码都会有对数据结构的巧妙使用,书上的理论与优秀项目中的代码互相对照,学习起来高效更高。

  当然,你对编程语言、开发环境、Debug技巧的掌握在持续增强。

  第四个阶段,小项目练习。

  现在你已经熟悉了一门编程语言的语法,知道了都有些什么样的API,通过学习优秀的开源项目也有了朴素的工程理念,就可以给自己出个题来验收一下成果了。

  我当时第一个练手的小项目是做一个移动版的网页浏览器,用API拼出一个页面,上面加个地址输入框、开始/停止/刷新等按钮,然后嵌套一个WebView。你可以选一个自己感兴趣的,音乐播放器、视频播放器、文件管理器等等都可以,然后把你平时用到的类似软件中的核心功能一个个往上叠加。

  这个过程中,你会更深入地了解那些API的特性,还会不由自主地思索、实践如何管理大量的代码文件,如何让代码摆放的更合理,公共的方法如何抽成工具以避免重复写相同的代码,多线程的使用等。

  当你完成几个这样的小项目,并且将代码风格、工程结构划分、数据结构的应用等向你前面玩过的优秀开源项目看齐的时候,会再一次收获满满的成就感,为后面继续折腾自己积累能量。

  现在你就可以看一些代码规范、设计模式相关的书籍了。代码规范方面比较经典的有《重构:改善既有代码的设计》,设计模式相关的,随便找一本,然后在看书的同时,在网上找代码例子放到开发环境中跑一跑,切身体验一下。软件开发入门阶段,务必记得勤动手。

  一边看书学习,一边用学到的知识不断地重构自己写过的项目,慢慢地,你的代码文件定义越来越合理、工程划分越来越有层次、设计模式也用得驾轻就熟。当然,语法、API、开发环境、Debug能力也会持续得到加强。

  做到这一步,已经算是完成软件开发入门了,根据每天的投入时间量,长则1年,短则半年。如果你的目标是找一份软件开发工程师工作的话,此时的你已经可以顺利进入大部分中小型的IT公司了。

  当然,前提是你掌握的语言应用比较广,比如,Java。如果比较偏门的,比如,go,那就有点难受。因为大部分的中、小型公司招人就是想着进来之后可以快速干活创造价值的,没有资源和意愿培养新人,所以一般都只招聘语言匹配的人。

  但如果你的目标是拿到大厂offer,毕业即年薪几十万,那还要埋头继续孤独的旅行。之所以说孤独,是因为这个阶段大部分是一个在电脑前静静地写代码、调试、改bug,经历多少次代码跑不起来的失败,就会有多少次解决问题之后运行成功的喜悦。

  第五个阶段,更宽更深。

  走到这一步,你已经完成软件开发入门,可以做一些简单的项目,但离大厂的要求还比较远。还需要在理论基础、项目实践两个方面进行更深入的学习。

  理论基础方面,现在你只掌握了最基础的编程语言、数据结构、常见设计,其它的像操作系统、网络、多媒体技术原理、复杂算法等还没有涉猎。但是不要担心,由于你已经学会了一门计算机语言,理解了计算机的思维方式,纵然这些理论通常都是枯燥的理论讲解,对你来说却一点也不难。

  这个时候就可以不用讲究先后顺序了,把所有的书拿过来一本本地看就可以了,当然还是要动手加深对理论的理解。比如,学操作系统的分时调度时,你可以写几个线程的Demo模拟一下;学习网络七层协议时,可以用socket实现一下http协议;学习音视频格式时,可以玩一玩开源项目FFmeg;学习算法时,可以自己用代码对理论做个实现,比如,写一个背包算法等。

  理论学习永无止境,即使我工作这么年了,有时还会拿出DDD的出温习一下。

  项目实践方面,要给自己设计一个比较大的项目,然后盯着目标去有目的地查资料、解决问题,然后去实现它。当然,如果有志同道合的人组队一起,那最好了,不孤独,进步也更快。

  最好是需要花上几个月,甚至半年到一年才能完成的项目,比如,一个接近商业化的搜索引擎、一个有一定复杂度的游戏、一个有实际功能价值的App等。我上学时,学校有一年一度的软件设计大赛,我就拿这个当目标,准备了几个月,写了一个在手机上借助蓝牙通信进行象棋对战的小游戏,还创造性地加入了观战模式。后来软件设计大赛中获奖固然开心,自己的技术也晚进一步了。

  还有个考量,这种大项目会成为你参加校招应聘时简历上的一个亮点。像我当初找工作,简历没有做任何加工,就把自己做过的项目、得过的奖写了上去,没有多长时间就顺利地拿到了几个offer。这点尤其对学校、学历上面有硬伤的同学有用,丰富的项目实践经验足够抵消掉你在学校、学历上的弱势,让你逃过被HR筛掉的命运。
作为一个24岁还在读大三的老阿姨,给大家一个忠告,一定一定要努力学习,考上好大学。你只有真正经历过了,才知道没有学历,你甚至连一个机会都得不到。我现在专升本上了大学,在我专科实习的时候,我有一个同学特别优秀,基础很扎实,带他的老师也很喜欢他,但就因为他是专科毕业,最终没能留在那里。而且考研,有很多学校是明确专硕不收专升本学生的(就我的专业来说),只能考学硕。没有一个本科学历真的很难,尤其是在我们都是普通人的情况下。即使你现在很迷茫,但你也必须努力学习,考上好大学,这样后来你希望改变,也比由专科挣扎轻松得多。大家现在都还很年轻,珍惜你们现在无尽的可能性,我已经因为自己的选择,失去了很多机会。以我为鉴,与君共勉。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

精彩推荐

让学习更简单

  • 反馈建议:麻烦到学习网管理处反馈
  • 我的电话:这个不能给
  • 工作时间:周一到周五

关于我们

云服务支持

精彩文章,快速检索

关注我们

Copyright 学习网  Powered by©  技术支持:飛     ( 闽ICP备2021007264号-3 )