这个工作这一干就是二年,每个月有二千多的收入。真的是靠双手吃饭,手指都敲出了茧子。家里人看我这么卖力气,都不再埋怨我无所事事了。但一到介绍对象,我就犯怵,因为工作不稳定,职业难以启齿。在这段时间里,我唯一长进的就是我的打字速度,自信已经到了专业打字员级别。后来我想想,正是这段时间,打下了日后写书一天可以写 5 万字的基础。
第二年,有一次老板给我分配了一个写电子邮件的活,就是一封一封给一个一个的电邮地址发 Email,要求标题不能重复、内容要有差别,要刻意避免被垃圾邮件过滤系统毙掉。
我打了十天,终于坐不住了。为什么不写个程序,自动生成新鲜的标题和新鲜的内容呢?为什么要重复做这些傻瓜一样的工作呢?我和老板说了我的想法。
老板说,不是不想用程序实现,只是请程序员太贵了。目前这种邮件营销单子还不知道多不多,万一花几万块搞了这么一个程序,结果没有生意了怎么办?老板是实诚人,什么顾虑一五一十都说了,这也是我一直跟着他干的原因。工资是低了点,但是说实话抛去房租和人员工资,他也没有挣多少。企业营销市场竞争大,利润很单薄,拼的都是苦力。我当过服务装的店长,理解他的顾虑。
当时我一听有几万块,心里咕咚咕咚不得了,够我打二年字了。同样是打字的,为什么程序员打出的字就值钱,我打的字就不值钱?为什么我不能学习写代码?
以上,就是我的程序员思想的萌芽过程。好了,我该去上班了,1000 平的大办公室得抓紧去,不然晚了就没有座位了。
后来的故事就简单多了,我的朋友都知道,我当时花了 6000 块找了位老师,他是位计算机前辈大牛,出过书,具有十年以上的软件开发经验,如今已退隐江湖,拿着股票移民海外了。当时我加了他 QQ,他在网上教我编程,是他带我上的道,他还帮助我完成了人生第一个自动群发邮件的程序。我用这个程序帮老板接了 5 万块钱的单子,这个单子几乎不用人力就完成了任务。
因着这个程序,老板给了我 3 万块,这是我做为一名程序员,赚的第一笔外快。正是用这 3 万钱,我买了一生第一个 Macbook Pro,从此开始了我在咖啡店一天一杯咖啡一个电脑一个人写代码的日子,我也是从那个时候,走上了程序员这条路。
回想一下当初,为什么我选择做程序员,又一直喜欢做程序员?是因为程序员工资高吗?还是因为写软件外包既神秘又赚钱?还是因为作为一名程序员总给人一种聪明、老实的印象吸引漂亮女生的眼球,找女朋友更容易一些呢?
以上原因或许都有吧,我心里认为最重要的,是因为电脑就是一个傻瓜,它从来不会撒谎,电脑一就是一,二就是二,你给他输入什么,它就老老实实按程式输出什么。没有无缘无故的 Bug,所有 Bug 都是有原因的。不像人,人心隔肚皮,表面上你听懂了对方在说什么,但你永远不知道对方心里在算计什么。比之于人,电脑诚实多了。
经验分享
有两种能力都是在平时工作中慢慢锻炼起来的,需要长期的坚持和打磨。做为一个刚入行的程序员,要想把事情做好,获得更多的机会,也有几个方面的技能需要注意:
1.编程能力, 这个毋庸置疑,做为一名程序员,能写代码、写高质量的代码,可以说是基本功,离开了这个,就像无根之木,无源之水,谈再多也没用。这个可以和公司内的高手学,私下利用业余时间丰富理论知识,多看一些开源代码,从模仿到动手尝试、再创新。
2.沟通能力, 听说读写都很重要,对新手来说听和说尤其值得注意。听是说一个任务下来,要听清楚问题是什么,需求是什么,有什么条件,听清楚了再动手。说是要表达有条理,说的清楚来龙去脉,说的清楚解决问题的思路。我见过很多程序员,包括工作过好几年的也有,连一个复杂点的问题是怎么回事,都说不清楚,东一下西一下,一点逻辑结构都没有,很明显他的思路就是混乱的。
这里还要补充提两点, 一个是问,不清楚的一定要问,不要装,其实你进公司做三天事,你大概是个什么水平,什么样的思维模式,你的领导就一清二楚了,装也没用。另一个是反馈,一件事领导交待给你,你要在关键结点给他反馈,告诉他做的怎么样了,有什么困难,下一步准备怎么做,需要什么支持等等。不要等到领导来问,才告诉他你有什么问题搞不定,我不知道别人怎么样,反正我对这种情况是深恶痛绝的,这样搞两次以后,我基本上就不会把很关键的任务交给这个人了。
3.良好的工作态度, 不同的公司有不同的文化氛围,有比较看重的价值观,就不一一列举了。窃以为对于程序员来说,最重要的一个态度,就是不能凑合。一般的程序员在发现问题以后,东试试西试试,能解决问题就行了,但是优秀的程序员觉得不会妥协,一定会试图去分析产生问题的原因,根本的解决方法,甚至要去看Linux内核代码也毫不妥协。
4.通用工作技能的掌握, 包括时间管理、项目管理及个人管理等,介绍这方面的书籍比较多,就不再详叙了,有兴趣可以找到很多信息。
需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。
如果不方便查看,我已经整理成了一份PDF包含Android入门,基础—高级的全部系列知识点,还有新技术学习笔记。
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
知识要点:
1、设计思想与代码质量优化
2、程序性能优化
- 启动速度与执行效率优化
- 布局检测与优化
- 内存优化
- 耗电优化
- 网络传输与数据储存优化
- APK大小优化
3、开发效率优化- 分布式版本控制系统Git
- 自动化构建系统Gradle
4、项目实战- 启动速度
- 流畅度
- 抖音在APK包大小资源优化的实践
- 优酷响应式布局技术全解析
- 网络优化
- 手机淘宝双十一性能优化项目揭秘
- 高德APP全链路源码依赖分析
- 彻底干掉OOM的实战经验分享
- 微信Android终端内存优化实践
Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。
Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。
知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析**
在Android中,NDkeK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门**
……
本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。
如果不方便查看,我已经整理成了一份PDF包含Android入门,基础—高级的全部系列知识点,还有新技术学习笔记。
无论什么技术,热不热门,学习都是不可间断的,乘着年轻磨砺技术才是王道,不然在程序员这个后浪一波比一波汹涌的职业里混,你想吃青春饭都吃不了几年。不过,想提升是一回事,如何有效提升就是另一回事了。经常真的很努力在学,加班加点工作卖力,但也就是差点火候,还是方法不对。
什么是方法,方法就是跟着身边大佬走,多问多学,如果身边没有大佬也可以加入我们学习资源交流群,全国的小伙伴天南地北,可以一起聊天学习,更加了解这个行业情况,趋势与走向!