在你决定从事iOS开发前需要清楚的几个问题
作者:David McGraw 翻译:丁丁(jackiehoo)
原文:http://www.xmcgraw.com/what-you-need-to-know-to-start-learning-how-to-code/
译者注:这篇文章是我在一个月前看到的,文章的内容基本表达我转行从事iOS开发时候的思考。觉得这篇文章会对那些想做iOS开发和刚开始做的朋友有一些帮助,因此翻译出来并分享给大家,对我而言则温故知新。不忘初心,方得始终,新的一年再次出发。
每个人的都有独特的经历,因此会有特别的事情会让ta感到快乐,并享受做自己喜欢的事情。写程序也不例外,我在很年轻的时候就明白这点,它成为我开始创业的无形资产。写程序的渴望来自我想完整独立做一件事情的渴望,做移动开发,可以让我不依赖任何人就能学会完成一个完整的App需要的所有能力。
为什么我当初会学习现在使用的Objective-C和Swift编程语言?因为我喜欢和用户直接交互,而移动开发满足了我这点。这股激情让我在学习iOS开发时能保持110%的热情。
我刚才分享了我想从事移动开发的动力,并且认为这是做iOS开发需要思考的问题。你可以给下面两个问题提供自己的答案:
1.你为什么想要编程?
2.你能在大脑里勾画出你写代码的景像吗,描绘一下这个场景?
如果您已经决定从事这条道路,下面我提供一些建议,希望能够帮助你打开通往移动开发的这扇门。
明确你的激情
你已经有了一定的热情,像我当初一样,你还需要更加清楚自己的热爱的具体是什么。好奇心很重要,它会指引你到一个具体的方向,找到一个移动开发中最感兴趣的方向,然后交给命运来安排吧。
你在大脑勾画出的景像是什么?喜欢科学和数学的朋友可能希望为NASA写代码;或者有些朋友擅长社交或者运动竞技,那他可以开发健康类的产品来衡量活动量;你也可能喜欢视频游戏。清楚自己在生活中喜欢什么,并让它成为你的灯塔指引你开发项目。当然这也有可能会改变,我开始是写游戏,但是我现在写了更多的社交,教育和效率类的产品。
你可能开始使用swift语言然后发现它不适合你。例如:你可能希望通过SpriteKit和Swift为iPad写游戏,后来你尝试Unity3D写游戏,并且喜欢上它。如果你还没有确定自己的喜欢的平台和语言,那就保持热诚和开放态度去探索吧。
当然如果你没有这从事移动开发的热情,那您需要停下来,重新评估下自己的道路。坚持一段时间如果在显示器面前还是表现的恐惧,那这可能不是你想要的生活,换一个吧,生命短暂,应该享受生命。
开始行动
网上有很多视频教程可以学习,不过我衷心地建议读几本书,因为书籍更加专注,方便浏览,并且没有很多干扰。只有你,书籍还有代码编辑器。
补充一些关于学习平台的书或者视频教程挺好。但是一页一页的读几本书会帮助你极大的提高,一旦你确定自己想要学习的语言,你可以买两本书:
1.买一本仅仅介绍该编程语言的书。
2.买一本教你在特定编程环境中使用该语言的教程书籍。
记住:在我或者你朋友有效的学习方式不一定适合你。我们的学习方式不同,你需要一些独立意识以便让自己保持在正确的学习轨道上。如果你还没有这种独立判断意识,那读书是一个安全可靠的选择。
假设你决定用swift为iOS设备写程序,那你就买一本swift语言的书籍而不是Objective-C语言的书籍,认真读完,然后再买一本教你如何使用swift语言开发一个App的书籍。
语言+开发平台的书籍可以帮助你保持专注而尽可能少地分心。你可能感觉还是很困难,但通常会好过你通过网上教程来学习。
放下书籍动手写自己的项目
我敢保证你遇到的最大的挑战不会在你学习一本书籍并完成里面的示例的时候,而是当你读完书籍之后开始开发自己的项目的时候。你学习一本书籍并完成里面的示例只是为了让你写程序的挑战相对小一点,因为你掌握了一定的基础,但仅仅是基础。
1.找到简单的点子(idea),要非常小的点子,第一个app只要完成2-3件事情就可以,这样你就不必花去大量的时间来构思app的实现和架构,而只需要动手开始开发就可以。
2.不要完全一个人扛着——找一些方式获取帮助。如果尝试了很多方法失败后,你可以向 Stack Overflow等技术问答网站求救。
3.必要时候可以调整你的点子。如果你开发项目时感觉压力太大,开发太难,你可以换一个更容易的开始。比如开发游戏就相对要难很多,换一个更容易的游戏开发。(比如2D游戏代替3D游戏)
然后你就需要不断重复前面个学习内容,查找书籍,阅读网上教程,看看视频教程等。解决实际问题需要不少的时间和大量的练习。
加入一个团队
培养良好的编程习惯和学习新的方法的最好方式之一就是把自己放到一个团队环境里。团队环境能够把你带到你以前不清楚的方向。你会遇到很多编程老手,这些人对你学习编程非常有价值。不要认为你需要一些很牛的作品才能加入这些团队,很多团队也希望找到有热情的初学者。跟着他们做一些项目吧。
如果你很难加入一个团队,那可以找一个朋友或者老师来向他学习。
击退自我怀疑
你需要的只是热情。如果你渴望开发苹果app,就不要让大脑有什么杂念。我保证随着你学习的深入肯定会有自我怀疑出现在大脑里的时候,如果你喜欢写代码、喜欢呆在电脑前,就不要让这些杂念击败你。
诚实地对待自己。你可能喜欢底层的开发技术,那你在成长路上会经历很多有趣地挑战。如果你喜欢写代码并设计程序,那太棒了,我认识很多开发者擅长前端开发。如果你喜欢写代码以及商务,你未来会成为优秀的领导者,成为一个多面手不是什么坏事。码农的发展方向上有很多选择的,我打赌肯定会有适合你这款得方向。
如果你确实不喜欢写代码。给自己6个月的时间尝试后还是没有兴趣。不要强迫自己,生命短暂。你应该选择更喜欢的道路。不要被周围和自己束缚——这是你的生活。
写代码、写代码、继续开发
当我开始编程的时候,我花了2到3周,每天12小时,完全集中在学习如何使用Mac,如何写写Obective-C代码以及如何使用iOS系统的SDK。
选一些自己喜欢的书籍然后致力于学习。安安静静坐下来读书,当你完成书上的内容后之后就可以写代码,一定要带着大脑去写。如果你喜欢写代码的话,这些对你来说就很容易,如果你给自己设立了目标,比如要在6个月内发布一款app,你也能很容易坚持下来。
你最终希望开始探索自己不熟悉的领域。你不需要给自己太大压力,不要一次给自己喂太多。在自己熟悉的领域加入一点点新技术就好,增加一点新鲜感就够了。总之不要太着急,保持专注。
起航
每个人都是不同的,没有人能给你完美的答案。这篇文章描述我所经历以及所观察后总结的,如果让我从新开始学我会这么做。我当时应该更早地加入一个团队,更早些寻找一位导师。即使现在我也希望能有个导师教我如何处理商务上的事情。
想好了就闷头扎进去学习吧,你肯定可以做到的,只要你心里有股做好移动开发的欲火在燃烧。
在你决定从事iOS开发前需要清楚的几个问题的更多相关文章
- 那些在学习iOS开发前就应该知道的事(part 2)
英文原文:Things I wish I had known before starting iOS development—Part 2 http://www.cocoachina.com/ios/ ...
- 那些在学习iOS开发前就应该知道的事(part 1)
英文原文:Things I wish I had known before starting iOS development—Part 1 http://www.cocoachina.com/ios/ ...
- 李洪强iOS开发之-环信01_iOS SDK 前的准备工作
李洪强iOS开发之-环信01_iOS SDK 前的准备工作 1.1_注册环信开发者账号并创建后台应用 详细步骤: 注册并创建应用 注册环信开发者账号 第 1 步:在环信官网上点击“即时通讯云”,并点 ...
- iOS开发系列--打造自己的“美图秀秀”
--绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...
- iOS开发之再探多线程编程:Grand Central Dispatch详解
Swift3.0相关代码已在github上更新.之前关于iOS开发多线程的内容发布过一篇博客,其中介绍了NSThread.操作队列以及GCD,介绍的不够深入.今天就以GCD为主题来全面的总结一下GCD ...
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- iOS开发系列--通知与消息机制
概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...
- iOS开发系列--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...
随机推荐
- asp.net 之 购物车
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 添加一个DataSet
/// <summary> /// 返回状态数据 /// </summary> /// <param name="values"></pa ...
- Android动画Drawable Animation
Drawable Animation是逐帧动画,那么使用它之前必须先定义好各个帧.我们可以通过代码定义,也可以使用xml文件定义,一般使用后者.如下: <?xml version="1 ...
- 从yum源下载安装包及依赖包
局域网内所有linux都用yum从外网源安装软件有点浪费,尤其遇到下载慢的情况: 所以考虑下载后传到其他机器安装,还可以保证版本一致(创建一个本地仓库更好,这个后面研究了再记录): 首先安装yum工具 ...
- JAVA线程锁-读写锁
JAVA线程锁,除Lock的传统锁,又有两种特殊锁,叫读写锁ReadWriteLock 其中多个读锁不互斥,读锁和写锁互斥,写锁和写锁互斥 例子: /** * java线程锁分为读写锁 ReadWri ...
- UseFul Collection
....... 啦啦啦,test... http://bbs.csdn.net/topics/380175613 http://zhidao.baidu.com/question/580940892. ...
- mysql show status
在LAMP架构的网站开发过程中,有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL ...
- 【转】稍改进过的ListView,很好用哈
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using ...
- JavaScript的引擎机制
var x=1; var y=0; var z=0; function add(n){n=n+1;return n;} y=add(x); function add(n){n=n+3;return n ...
- DataGridView单元格美化
#region 重绘Column.Row int _RowHeadWidth = 41; /// /// 重绘Column.Row ...