如何通过如何自学成为一名医生安卓软件开发工程师

我30岁自学编程,当上高级工程师,几度精疲力尽想放弃
腾讯创业 | ID:qqchuangye【腾讯创业编者按】布拉德·克里斯平(Brad Crispin)原本是客户服务行业的一名从业人员,在30岁之后才开始学习编程,最后成为在线教育平台 Udacity的高级工程师。他是怎么做到的?近日,克里斯平在社交网站Medium撰文讲述了自己从零开始学习编程到成为软件工程师的经历。作者 / 腾讯创业编译组这是发生在我身上的一个故事:从一个零起点学习编程的小白,到成为Udacity的一名全栈工程师。(Udacity是一家致力于编程在线教育的创业公司)。在找第一份工作之前,几乎每个招聘初级网络工程师的帖子都要求“计算机学位或两年的工作经验”,而我没有人任何工作经验,但我与其他人不同的时,我并没有放弃,虽然异常艰苦,但是我坚持了下来。在探索计算机编程的这条路上,我经历了许多磨难,与亲人之间的关系一度非常紧张,我也耗尽了我的积蓄,曾经一度失去自信,甚至还中途放弃。后来,经过一年的反思,我以一种新的心态再次尝试,并取得了成功。今天,我领导着一个由10名工程师组成的团队,负责多个核心系统的开发,包括入学系统、学生项目代码评审系统和论坛等。成千上万学生在我们的平台上参加免费课程或者参加付费的Nanodegree项目。在付费项目中,如果通过了我们的Nanodegree认证,他们将有机会获得在计算机行业尖端领域的工作机会,包括React、iOS和Android等主流平台的软件工程师职位,以及更前沿的AI、机器学习和自驾驾驶汽车等领域的软件工程师职位。下面是我的故事:我的失败经历我已经厌倦我干了七年的工作,我不能忍受我的余生一直从事这份职业。我想要成为一名软件工程师。但我不知道我为什么想成为一名软件工程师,只是觉得它对我有一种吸引力,我想要创建某种东西。但是,我的数学不好,我也不认识任何一个程序员,我对这个工作缺乏了解,也不知道自己是否会喜欢它。好心的朋友向我提出了两点意见:第一,我的这种想法是疯狂的,第二,我太老了。2014年1月,我参加了General Assembly的一个训练营,学习编程。训练营在当时是一种比较新鲜的事物,其培训系统很不成熟。我们的班级很大,班级成员的学习起点很不相同,课程也在不断变化,培训过程让人感觉很混乱。几个星期过去了,我们开始听到有些从这毕业的学生仍然没有找到工作。一种明显的焦虑感在我们中间出现了:我们放弃了原来的工作,花费一万美元来这里学习新东西,真的能成为一名软件工程师吗?终于,在第二学期开始之前,我还是选择了离开。当然,我也在训练营中学到了很多知识,也认识了一些很好的讲师,我的几名同学也在毕业后成功当上了网络工程师,或者找到了其他好工作。但是,就整体培训效果而言,并不理想。离开培训营后,我花费一个月时间创建了一个前端设计作品集,并开始接一些小型项目,做Javascript开发。这些早期的努力是有成效的,我确实获得了一些兼职工作,我开始变得乐观起来。但是,几个月过去了,我的工作依然很不稳定,我不得不再次怀疑自己。·我发现,我用在寻找工作上的时间和编程的时间一样多。获得的项目断断续续,在编写程序的过程中,也得不到很多技术反馈,同时收入不稳定,给家庭造成压力,而更要命的是,没有人能告诉你,你是否在学习正确的东西。在这些因素的影响下,我没有了安全感。我开始留意怎样才能找到全职工作。我听说硅谷有很多自学成才的程序员,但是,所有招聘启事都都明确要求有相关的学历和资历,为此我感到困惑和沮丧。每个招聘初级网页工程师的帖子似乎都要求具有“计算机专业学位或两年工作经验”。如果需要学位才能获得工作机会,那么没有学位的人又怎能获得两年工作经验?自学的工程师怎样才能得到工作机会?尽管如此,我也开始投简历。我开始研究面试试题,希望能得到一个机会。在此过程中,我也意识到自己对数据结构和算法一无所知,也不知道如何开始学习。突然间,我再次陷入绝望。对于我想要的工作,我不符合它们的要求,我怀疑我即使获得了面试机会也不会通过。这是一段艰难的岁月,六个月来,我的财务状况和家庭关系都十分紧张。我是一个训练营的辍学者,一名兼职Javascript开发者,我不得不面对事实,所以我做了一个很现实的决定——放弃成为一个软件开发者。我告诉朋友和家人,我之前的行为是一时冲动,并且已经为此付出了昂贵的代价,我已经重新找了一份与我以前的职业生涯有关的、更好的工作。我是怎么成功的只有当你放弃的时候,你才是真的失败了,而我已经放弃了。面对我放弃后的生活与工作,我很快就后悔了。时间过得很快,一年过去了,我发现我还是不能释怀。于是,我继续利用空闲时间编程。编程成了我一个烦恼的兴趣,它消耗了我很多时间,而结果往往令人沮丧,我没有获得什么成果。但是,我无法抗拒那种吸引力,我想要创造某种东西,而不仅仅是去欣赏别人的工作成果。同时,我总结了上一次失败的原因:首先,我放弃了;其次,我不知道自己的方向,也无法得到高质量的工作经验或反馈。于是,我制定了一个应对方案:不要中途放弃找一个导师不计报酬,找一个好的实习机会告诉每一个人,我知道自己失败了,但我还要再做一次那么第一步,我需要积累工作经验。但我该怎样获得一个实习机会呢?我想或许可以去寻求朋友的帮助。一年以前,我阅读了Loren Sands-Ramshaw发表在Hacker News上的一篇关于网络安全的文章。我们是曾是大学同学,但当我还在忙着拿学分的时候,他已经去国家安全局(NSA)上班了。读完他的文章后,我立马写信给他,询问我学习编程的可行性,随后,他也给我写了一封经过深思熟虑的、鼓舞人心的回信。一年后,我在LinkedIn上再次看到了他的资料,他创建了一个名为Parlay的移动博彩公司。 我马上给他写信,申请成为他的一名实习生。经过简短的面试,他同意接受我,并愿意给我一点补贴。这件件事完全改变了我的人生轨迹。现在,我终于可以投入真正的工作了。那么我应该如何做好自己的第一份编程工作,成为一名优秀的实习生呢?上一次的工作经验给了我答案。我来自服务行业,我的本能就是把这些经验应用到实习中:迅速反馈信息,尽量在五分钟内获得确认信息。不要轻易拒绝,尽可能回答“yes”。保持积极状态,以充沛的精力投入工作,你的导师将看到你的工作强度。问问题时也要保持思考,在你努力去发现、阅读和理解之前,不要问导师某一行代码有什么用处、如何突出某个特征。就算努力研究后你还是有问题,那也会是更有建设性的问题。你要不计报酬地工作。我发现,如果你沉浸于工作,你将学得很快,沉浸是快速学习的秘诀。根据我的经验,学习一门语言和学习编程一样,关键都在于沉浸。我在俄罗斯的一所大学呆过几个月。面对完全陌生的语言环境,我曾失去对周遭事物的理解能力,简直令人绝望。但在这种环境里沉浸了几个星期后,我的语言能力飞快提升。我试图用相同的方式去学习编程。沉浸,意味着100%集中精神。如果可能的话,不交朋友,不喝酒,不看电视,你的生活只剩下看代码和写代码。如果你花5分钟来阅读新闻,请注意你正在打破沉浸状态。你应该保持专注,保持耐心,你的心灵会适应这种状态,消除所有的分心。你可能会发现,怀疑是最让人分心的,沉浸是成功和失败之间的分水岭。那么,你怎么知道你是否达到了沉浸状态?很简单,如果你不是做梦都在写代码,那么你就还没成功。如何获得第一份正式工作?当我离开实习岗位,开始寻找全职工作岗位时,我开始创建一个新的编程作品集,重点突出React编程和Node编程。很多招聘网页开发人员的帖子都要求具有React和Node编程能力,我很高兴进入这个领域,而且我认为这个领域大有机会在。我在实习期间就是从事Node编程工作,我还在在线教育网站Udemy上学习了React + Redux课程。经过密集的Javascript开发训练后,我发现我比以前更高效,更有信心 。无论是React、Redux还是Graphql,我都能轻松地学习,沉浸原则以及找一个导师,这两种方法奏效了。同时在导师的建议下,我还利用空闲时间学习了强类型语言(Strong-Type Language),于是我报名参加了一个iOS项目,并学习Swift语言。在此我也强烈建议,编程学习者一定要学习一种强类型的语言 。在Swift语言课程接近尾声时,我终于获得了一份全职工作的面试机会。我要面试的是Udacity-Blitz(为Udacity学生介绍外包工作的平台)的React开发工程师。招聘人员称,我有三个月从事Javascript开发的实习经历,加上我的React编程作品集,所以我得到了这次面试机会。我认为,对于一般的编程工作,你的编程作品集会比你为技术面试所做的准备更重要。同时,我也在努力寻找更多的工作机会。六个星期后,我又面试了Udacity的一个全职岗位。我花了两个星期的时间准备,专门研究了Udacity的技术面试培训课程。在精心准备下,我如愿通过了面试。此后,我在工作中学习了数据架构,并在Udacity成长为一名高级工程师。回顾我为成为软件工程师走过的这条路,有很多错误,当然也有很多经验,比如在那失业的一年多时间里,我学会了谦逊、坚持不懈和专注。我很幸运,能够与很棒的同事一起工作,能够为一家我喜欢的公司服务,做我喜欢的工作。而我给大家的建议就是:沉浸,找一个导师,不要回头。我可以很肯定地告诉你,这些都是不容易做到的。(编译/谭思)推广:腾讯创业频道是腾讯旗下专注于创投领域的媒体平台。如果你想被获得千万网友和投资人的关注,即刻微信搜索qqchuangye关注我们,递交你的项目。
正文已结束,您可以按alt+4进行评论
责任编辑:mavisguan
扫一扫,用手机看新闻!
用微信扫描还可以
分享至好友和朋友圈
Copyright & 1998 - 2017 Tencent. All Rights Reserved如何通过自学成为一名安卓软件开发工程师 何通过自学成为一名安卓软件开发工程_微博生活网
你目前正在浏览:& > &
如何通过自学成为一名安卓软件开发工程师
如何通过自学成为一名安卓软件开发工程师
Vector、LinkedList。 3.Jsp和Servlet应用。 4:android UI编程1、文字和背景音乐等资源的使用方法:反射、代理和泛型。 11.多线程原理:如何在程序中创建多线程(Thread,Android开发环境搭建、多Acitivity管理:AndroidManifest.xml文件的作用 Intent的使用方法使用Intent传递数据的方法启动Activity的方法IntentFilter的使用方法Activity Group的使用方法7、自定义控件实现方法:自定义ListView的实现方法可折叠ListView的使用方法自定义Adapter的实现方法自定义View的实现方法动态控件布局的上实现方法第四阶段:android网络编程与数据存储1、基于Android平台的HTTP通讯、ContentProvider使用方法.Http协议解析。 5、Android动画框架简介;4:方向、加速度(重力)、光线;异步任务的基本概念、碰撞检测技术;5、图片,字节和字符的转化流。 5.Java异常处理,Javadoc介绍.Socket网络编程。第二阶段、Map、抽象类、多态带来的好处:Android图形编程技术1、图形处理基础、磁场、距离:android手机硬件管理1、地图及定位技术:GPS简介;LocationManager的使用方法、多表连接查询的应用:SQLite3数据库简介SQL语句回顾SQLite3编程接口介绍SQLite3事务管理SQLite3游标使用方法SQLite3性能分析访问SDCard的方法访问SharedPreferences的方法3、位移动画的实现方法;AsyncTask的使用方法。第五阶段:Dialog的基本概念AlertDialog的使用方法DatePickerDialog的使用方法Menu的使用方法自定义Menu的实现方法5、控件的布局方法:线性布局的使用方法相对布局的使用方法表格布局的使用方法6.Java解析XML文件DOM4J。 2.WebService服务配置应用。第三阶段。 3.面向对象的抽象,封装:Java Web开发1;4。 6.常用的设计模式:Singleton、Template。 8.Java集合介绍;7.Java基本数据类型与表达式,分支循环、SurfaceView的使用方法;3、物理小球技术;3、Iterator、Enumeration等常用集合类API,包装流的概念,以及常用包装类,计算机编码。 10.Java高级特性.JavaAPI介绍;多点触摸技术。第六阶段第一阶段、ContentUris的使用、使用ContentResolver操作ContentProvider、static关键字,第一个Android应用程序,Android应用程序目录结构。2、Android初级控件的使用。 4.对象实例化过程、方法的覆盖、final关键字。第七阶段:Android游戏开发1;2:Collection、Set、List;5:Android游戏开发概述、ArrayList、对话框与菜单的使用:Android介绍.Tomcat服务器的应用配置。 6。 9.Java I&#47,字符流Reader和Writer,以及相应实现类,IO性能分析;在Google Map上添加标记的方法;构造函数、this关键字、方法和方法的参数传递过程、ContentProvider的监听Android当中的异步操作:Handler的使用方法、Android开发环境搭建,线......
Vector、LinkedList。 3.Jsp和Servlet应用。 4:android UI编程1、文字和背景音乐等资源的使用方法:反射、代理和泛型。 11.多线程原理:如何在程序中创建多线程(Thread,Android开发环境搭建、多Acitivity管理:AndroidManifest.xml文件的作用 Intent的使用方法使用Intent传递数据的方法启动Activity的方法IntentFilter的使用方法Activity Group的使用方法7、自定义控件实现方法:自定义ListView的实现方法可折叠ListView的使用方法自定义Adapter的实现方法自定义View的实现方法动态控件布局的上实现方法第四阶段:android网络编程与数据存储1、基于Android平台的HTTP通讯、ContentProvider使用方法.Http协议解析。 5、Android动画框架简介;4:方向、加速度(重力)、光线;异步任务的基本概念、碰撞检测技术;5、图片,字节和字符的转化流。 5.Java异常处理,Javadoc介绍.Socket网络编程。第二阶段、Map、抽象类、多态带来的好处:Android图形编程技术1、图形处理基础、磁场、距离:android手机硬件管理1、地图及定位技术:GPS简介;LocationManager的使用方法、多表连接查询的应用:SQLite3数据库简介SQL语句回顾SQLite3编程接口介绍SQLite3事务管理SQLite3游标使用方法SQLite3性能分析访问SDCard的方法访问SharedPreferences的方法3、位移动画的实现方法;AsyncTask的使用方法。第五阶段:Dialog的基本概念AlertDialog的使用方法DatePickerDialog的使用方法Menu的使用方法自定义Menu的实现方法5、控件的布局方法:线性布局的使用方法相对布局的使用方法表格布局的使用方法6.Java解析XML文件DOM4J。 2.WebService服务配置应用。第三阶段。 3.面向对象的抽象,封装:Java Web开发1;4。 6.常用的设计模式:Singleton、Template。 8.Java集合介绍;7.Java基本数据类型与表达式,分支循环、SurfaceView的使用方法;3、物理小球技术;3、Iterator、Enumeration等常用集合类API,包装流的概念,以及常用包装类,计算机编码。 10.Java高级特性.JavaAPI介绍;多点触摸技术。第六阶段第一阶段、ContentUris的使用、使用ContentResolver操作ContentProvider、static关键字,第一个Android应用程序,Android应用程序目录结构。2、Android初级控件的使用。 4.对象实例化过程、方法的覆盖、final关键字。第七阶段:Android游戏开发1;2:Collection、Set、List;5:Android游戏开发概述、ArrayList、对话框与菜单的使用:Android介绍.Tomcat服务器的应用配置。 6。 9.Java I&#47,字符流Reader和Writer,以及相应实现类,IO性能分析;在Google Map上添加标记的方法;构造函数、this关键字、方法和方法的参数传递过程、ContentProvider的监听Android当中的异步操作:Handler的使用方法、Android开发环境搭建,线......
如何通过自学成为一名安卓软件开发工程师 ……
前提,应该熟悉java这门语言,至少应该了解这门语言的语法,这是后期学习过程中看教程、文档、源码的基...如何通过自学成为一名安卓软件开发工程师 ……
我个人建议的入门途径是这样的: 1.第一阶段:认知上入门买一本纸质的android入门书籍,一定是入...如何通过自学成为一名安卓软件开发工程师 ……
朋友,我可以很负责任的告诉你,自学一定比你想象的难得多。但是万事都有两面性的咯,可能你耐力超然,可能...如何通过自学成为一名安卓软件开发工程师 ……
入门的时候需要静心,可以看一些视频入门,最起码得先把开发平台搭建起来吧。再结合视频做一些小练习,最基...如何通过自学成为一名安卓软件开发工程师 ……
不管什么方向,编程都是基础,主要是靠自学,很多高手都是自学成才的.你要先学C语言,是编程入门的 ,这...如何通过自学成为一名安卓软件开发工程师 ……
建议找一套系统的android教程学习,前期没有什么基础,可以找相关视频教程,中后期配合相关专业数据...如何通过自学成为一名安卓软件开发工程师 ……
哇,那佩服你了,多找些资料多学,不过这样的话很难,这个需要一些实际操作加学习资料加老师注的重点,这样...如何通过自学成为一名安卓软件开发工程师 ……
可以浏览谷歌的网站。安卓是谷歌公司开发的。上面有详细的指南,和api手册。是安卓最权威的资料。你只需...如何通过自学成为一名安卓软件开发工程师 ……
首先要学习Java语言,这是Android开发的基础。 然后就可以安装Android Studio开...
你可能感兴趣的内容?如何自学java成为软件工程师_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何自学java成为软件工程师
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢如何通过自学成为一名安卓软件开发工程师?_知乎精选_传送门
通过自学,如何成为一名安卓软件开发工程师?需要读哪些书?
【高翔的回答(8票)】:绝大部分人说官方文档和范例(App Components)是最好的教程,如果你英语好,且有Java和XML基础,那按照官方的Training一路下来就算入门了。如果英语不好,可以看一些视频入门,如Mars的《Android视频教程》的。最起码得先把开发平台搭建起来吧。再结合视频做一些小练习,最基础的布局先练好,不要急。当然,看视频的话虽然通俗易懂,但是进度可能比较慢(即使我视频调至2倍速看),所以必须结合看书。但是,市面上的书大部分都跟不上Android最新的脚步。不过还是推荐两本:·
李刚的《疯狂Android讲义》,此书大而全。·
《Google Android SDK开发范例大全(第3版)》,此书可以照着练(不要ctrlc+ctrlv)。对了,现在还有更新颖的学习方式,可以在线互动编程学习(Android开发 | ),你可以尝试一下。总体来说,书都比较落后,Android学习主要还是靠网络。入门是最关键的,入门之后相信你自己也会找资源了。然后可以启动以项目为导向的学习方式,用到什么学什么,这样最快。但是,快并不是浮躁,别想一口气吃成胖子。况且,一入IT深似海。。。不扯淡了-_-。其他参考:·
StackOverFlow的AndroidTag(Newest 'android'Questions)·
GitHub搜Android(Search android)·
GoogleCode上的优秀APP源码(Google 代码)·
直接拿来用的Android开源代码(最火的Android开源项目(完结篇))·
Android中文Wiki·
Android设计指南非官方简体中文版(Android Design)·
Android开发者社区(Android开发 - 安卓开发)·
CSDN上的优秀博客和牛人(Android系列开发博客资源汇总),比如这位老罗的Android之旅我现在也在慢慢学习和摸索中,望共同进步。---------------------------------------本文转自「知乎」,更多答案可点击下面的「阅读原文」查看 觉得本文不错,可以分享到朋友圈查看历史文章请在资料中点击「查看历史消息」 微信ID「知乎精选」微信号「zhihujingxuan_weixin」如果你也爱知乎。爱知识。爱分享。请加入知乎社区「」与更大的世界分享你的知识、经验和见解}

我要回帖

更多关于 如何自学成为一名黑客 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信