我的职业开发生涯是作为一个Web开发人员开始的,使用的是PHP。不久后,我切换到.NET生态系统,使用C#和ASP .NET MVC框架来继续搞web开发。我一直以来创建的都是Web应用程序,直到最近……
几个月前,我开始用Android和iOS来开发移动应用程序,然后多亏Xamarin,我依然可以使用C#。我之所以写这篇文章是想分享一下我做了这个改变之后的感受。
为什么下这个决定
你可能会问,为什么我会决定从Web开发转向移动开发。因为我想要做一些新的东西以学习新的技能,虽然在web编程上我仍然有很多需要学习的地方。
我认为,移动app有一个前途光明的未来,虽然已经有很多app存在于网上的商店里。但是,新的移动设备来了,如智能手表,它们是开发人员崭新的机遇。这是一个学习如何为移动设备创建应用程序的很好契机。
更何况我目前就职的公司恰好有这个机会能够使用我最喜欢的语言(C#)来开发新的Android和iOS应用程序,那么为什么不利用这个机会呢。
新的编程模式
我知道编程的方式是会变的,这从我以前经历过的一个叫做Windows Phone的项目,一同参与开发移动应用程序时就已经得知。但我还没有准备好要做什么,并且也不认为我能做好准备。
不像网站中的应用程序有特定的生命周期,你不能只是用响应来回复请求。几乎所有我从构建Web应用程序中学到的东西都不能帮助我——范式是全新的。
在这个领域中,异步编程是强制性的,因为如果一切都运行在用户界面(UI)线程上的话,应用程序会停止。我一直都想提高自己在这方面的技能,而且也被我找到了一个实现这个目标的好方法。
分离关注点也不同,不再有Model View Controller(MVC),使用的是Model View ViewModel(MVVM)模式。即使我已经用过(在WPF和Windows Phone中),但并不是在同一水平,我仍然有很多东西需要学习。
当然,你还必须使用模拟器来测试应用程序,每次要测试的时候,你都必须建立并部署模拟器,你不能只是刷新页面来看发生的变化。反馈环很长,大多数时候都需要几分钟才行,因此调试会很慢也会很重要。
走出安乐窝
我大概在两个月前,开始工作于应用程序,并且现在仍然有很多东西需要学习。我需要处理两个我完全不曾涉足的生态系统(Android和iOS),两 个我一无所知的框架(Xamarin和MvvmCross)和一些并不容易满足的业务需求。不过,幸运的是,至少我知道如何使用C#。
现在的我每天都在奋斗,我有很多东西需要考虑,主要的就是一些与我新的开发环境相关的“怎么做?”的问题。还有很多“如果…怎么办?”的问题:“如果网络不可用,怎么办”,“如果这个解决方案太慢,怎么办?”,“如何为客户提供***的体验?”……
有时候,我一整天都没有办法产出任何东西,说实话,那个时候我会觉得自己真没用,是个欺世盗名之徒——既然我不能在工作上生产出任何有价值的东西,那么怎么能认为自己是一个专业的软件开发人员呢?
嗯,我觉得这种感觉就像走出自己的安乐窝,正处于学习阶段的一个峰谷中。
有峰谷的学习速率
不放弃
不过我不是唯一一个正在转换的人,我不是一个人在战斗。团队中的所有人都不得不面对相同分量的学习,高级开发人员和初级开发人员皆是如此。
现在回过头去看我这两个月的历程,我认识到,我还存在着各种不足,需要走的路还有很多,但我也学到了很多东西,比如说现在对于异步编程和那些MVVM模式的概念相对而言熟悉多了。
如果我想成为一个专业的移动开发人员,那么我依然需要继续学习,继续完成我的旅程,学习我缺乏的技能,产出符合客户期望的价值。即使我的工作时不时 地让我苦不堪言,但是我不后悔,因为这是一个非常棒的学习机会。不管花多少时间我一定会成功。对了,以后我会分享一些Xamarin的技巧和窍门。
希望下次再见!
译文链接:http://www.codeceo.com/article/from-web-to-mobile-dev.html
英文原文:From web to mobile development