文章目录
  1. 1. 聊一聊桌面程序和移动端程序的开发思路差异和2020年总结
  2. 2. 前言
  3. 3. 工作上
  4. 4. 工作上的收获
    1. 4.1. 收获之,掌握安全应用的开发基础
  5. 5. 生活上的收获
  6. 6. 2021年目标

聊一聊桌面程序和移动端程序的开发思路差异和2020年总结

前言

2020年马上就要过去了,这个月的博文憋到现在才写,实在是有原因的,倒不是说工作太忙没空写,而是没有心思写。

和去年相比,2020年经历的事情多了,也艰难了。我的年总总结,大概要从5月开始算起。

工作上

工作上,经历了5月份的裁员风波到6月份的入职新公司,再到7月份又接到多个offer,让我从心理层面上是有很多波动的,生活就是在不断经历各种选择,每个人都希望作出各种最优的选择,但是这是不太可能的,大部分情况都是基于当前最需要什么来决定选择什么。

工作是生活的一部分,那就意味着需要做出选择。从6月份拿到的offer看,有纯互联网公司,有金融公司,有安全软件公司,最后选择了安全公司。

当时的想法就是,我需要尽快入职,因为入职后缴纳社保公积金,能保证我的买房计划的实施。这个后面会说到。

另一个想法,就是从毕业到现在,都很少经历加班,工作压力都不大,所以就想着找一家工作压力大的能加班的公司,进一步强化自己,至少以后简历好看一些,进好公司容易一些。

第三个客观原因就是,5月份国内还在爆发疫情,到处弥漫着失业的气息,加上自己简历本身不是很突出,我真的慌呀~

基于上面的想法,最后选择了一家工作强度比较大的安全公司,负责Mac客户端开发。说句实话,如果不是因为上面第一个想法,我应该不会选择安全公司的,理由很简单,就是给我开待遇的时候居然直接忽略了我的诉求,在加班这么厉害的情况下,给我开的待遇还没有我上家公司好!

待遇,是对一个人认可的对直接表示方式,当然也和市场有关系,也和履历有关。实际上我见过很多技术一般但工资很高的开发者,也见过技术很好但待遇很低的开发者。

工作上的收获

进入安全公司工作,有满意的地方,也有不满之处。

不满之处上面说了,待遇不满。特别是当我入职之后,仅仅用了半个多月便熟悉了整个中型规模程序的设计原理和架构(在此之前我没接触过Mac开发,入职时心很虚),并能快速指导主要功能开发的时候,再接触那些技术比我差的,产出比我低的,基础也没有我好的,但是估计待遇比我还好的同事之后,我便有些后悔了,当初我的态度咋那么软那么没底气呢。

但是既然来了,就不能忘记自己来的目的,不能忘记自己想要什么,所以在工作上我还是一如既往认真负责,提供可维护的代码,拒绝垃圾代码,主动弥补自己缺失的技能和短板,建立危机感,希望日后有用武之地呀。

收获之,掌握安全应用的开发基础

毕业以来,我主要是做互联网APP开发,自从接触到Mac安全管控软件开发之后,我能明显感受到自己的眼界是变开阔了,技术深度加深了。这就是我这半年工作上最大的收获

以往做的互联网APP开发,无非就是做UI,然后HTTP协议请求后端拿数据,接着保存,展示到UI上,完了。这种事情,做个一两年可以,做多了,无非就变成了不断开发各种UI罢了,招一个刚毕业的人他也能很好完成,特别是他还可以采用跨平台技术比如Flutter之类的技术,开发效率可以原生iOS要高,成本更低。

这也就是为啥网上那么移动端开发者因为Flutter的诞生而害怕失业的原因,因为,做这类工作实在是太简单了。

而,安全应用所关注的领域则截然不同了,不再只是单独追求UI和业务逻辑,也会开始要求开发者要有较扎实的理论技术,对底层有较多了解,还要求能反汇编,能找到一些没有公开的符号,甚至能对内核进行入侵式开发,实现一些苹果没有提供的功能。

Mac安全应用的开发思路,不再是iOS那样百度一下,查查文档,找找开源demo就能完成的,更多的是需要有硬核技术,毕竟Mac程序不像iOS那么多的限制,开发的思路更加丰富。

举一些例子,我们做安全管控软件,就要求能管控得住用户的网络,数据的流动,磁盘读写,甚至能在用户使用App的时候,hook用户的App进行各种限制操作。

这就要求开发者能熟悉内核开发技术,熟悉汇编,看得懂反编译,能知道Mac的内核提供了那些功能,以及那些隐藏的功能。而掌握进程的本质,就能入侵用户的App,实现一些我们自己的限制功能。

比如限制用户只能把文件保存到指定位置,给用户的UI上新增或者隐藏一些我们的东西。再到普通功能的开发,由于Mac的开发案例极其匮乏,经常一个普通功能都要做调研,反编译其他App学习,这个也对开发者技术功底有很强的要求。

而多进程开发,也是桌面程序的重头戏,多进程开发思路也非常有意思,程序会有多个进程,除了UI主程,还有管控网络的单独进程,处理业务数据的进程,负责升级任务的进程,负责启动UI的进程等等,不同的进程可能完全用不同语言实现。这些开发思路都和iOS移动端开发有很大不同,算是技术面的加深和拓宽吧。

例子还有很多,空谈意义不大,这部分可以参考我过去写的博文,以及以后还要写的。总之一句话,今年下半年的开发,目光不再局限UI和业务开发,从难度上和意义上都远超过过去几年的开发,现在让我再次回到iOS移动端开发,我应该能做得更好。

生活上的收获

2020年,在生活上的收获都超过了以往。10月份结婚领证,11月份达成留在深圳的目标,其中的经历就不多说了,只有过来人,才能明白其中的艰难。目前还在苦苦审批,希望一切顺利,让我能在2021年能够全面发力。

2021年目标

目前初步定下的目标,工作上,能完全成为一名合格的安全工程师:熟悉汇编和反编译,熟悉常用逆向手段,掌握内核开发基础。又或者能成为一名资深iOS移动端工程师,具体走哪条路,还要看明年的机遇。

生活上,希望审批一切顺利,让我能放宽心,再无顾虑勇往直前,从摆酒,蜜月旅行,到备孕,稳步进行。

文章目录
  1. 1. 聊一聊桌面程序和移动端程序的开发思路差异和2020年总结
  2. 2. 前言
  3. 3. 工作上
  4. 4. 工作上的收获
    1. 4.1. 收获之,掌握安全应用的开发基础
  5. 5. 生活上的收获
  6. 6. 2021年目标