细细地回想之前的打怪升级之路,都是主要用时间去堆输出来完成任务。现在看来时间这一属性对于我来说已经逐渐变弱了,要想再给从这方面入手打怪效率会变得很低。
没错,上面提到了效率这个词,**如果效率得到提升的话,那么时间自然就会降下来。**之前一直都没太细想效率怎么提升,毕竟它比堆时间要难多了,可是现在老了,该想想了,下面我自己总结一些方法。来!觉醒时间到了:
提升专注力
做一件事就要暂时把所有的精力投入到这件事情上。
一心二用往往效率上得不到保证,还很容易出问题。最常看到的现象就是程序员们喜欢边边敲代码边用手机看新闻看视频,这样不仅不能提高效率,有可能会导致你的程序出bug,达不到有效的输出。
要提升专注力可以尝试将专注时间由短变长地培养,比如刚开始只能专注一件事情20分钟,然后再定一个更高的目标30分钟,1个小时。慢慢地递增时间来培养自己的专注力。
有效拆解和规划任务
原则上讲一项任务被分得越细,时间的估算就越准确,那么它的规划就会越合理,实行起来的效率就会越高。所以,接到工作任务后应该有意识地对任务进行有效的拆解和规划,然后再对细分任务进行评估。
何为有效拆解和规划呢?就是避免不恰当的情况出现。举个很常见的例子,客户端的程序一般都需要服务端接口来支撑实现某个页面功能,但是往往在计划这个功能的开发时间点时却是安排在接口提供后才开始进行。个人觉得是不恰当的,坦白说没有接口数据难道UI布局和样式不能提前做吗?还是说数据在UI的填充规则不清楚?而这些东西都与接口没有太大关系。所以,一般我自己对任务拆解和规划都采用下面的方法:
-
先总体拆分再局部细分,直到将功能拆解到每个具体代码实现的层面。
-
再从细分的实现中整理出通用或者共用元素,将这些元素从细分实现中剖离并整合。
-
然后再标记有序和无序的细分实现,整理其中的关联关系。
-
最后标记技术难易度以及实现时间,并根据实际情况和先后顺序来规划每项细分工作。
管理好时间
投入地去做一件事情就应该给予它一定的时间。
在这个时间段里就不要想着去做别的事情。这跟上面说的专注力一样,它们都是有以多个持续过程为单元展开,只是这个持续过程个人觉得不宜太长,也不要太短。太长容易使身体和大脑劳累,得不到良性循环;太短则不容易进入状态,或者是刚进入状态就跑去做其他事情了,效率反而更低下。本人一直遵循番茄时间管理法则,一般把大任务都规划在1-2个小时为一个时间单元。
善于总结,累积经验
随着互联网的普及,现在做程序的同学都喜欢用第三方库,喜欢看别人开源项目。一来方便,二来可以降低时间成本提高效率。我也是比较建议使用第三方库,至少在项目初期就应该要用(本人也是从事第三库的开发为开发者服务^_^,有兴趣的同学可以狂戳Mob官网)。
虽说第三方库好用,也不建议大家重复造轮子,但至少要懂得在这个使用过程中总结得到的一些经验,要让别人的东西逐步变成自己的东西,慢慢地把控整个局面。下面是我惯用的伎俩:
-
使用的第三方库不直接暴露给外部模块调用,道理很简单如果出问题能够进行快速切换,降低风险。
-
建立属于自己的代码库,将常用的工具类、框架和服务等放入库中,以备项目需要可以快速调用。
-
每次任务或者学习完成后,将一些重点技术和框架进行抽取和整理。
-
为自己的代码库和知识整理做定期审核,修正过时的做法或者加入新的解决方案。
学习新知识,拓展知识面
作为程序员学习新知识是必要的步骤,几乎每天都要进行。这样才能更好地提升技能,为未来做好铺垫。
我这里说的学习不仅仅是自己所擅长的技术技能,也需要学习其他技术领域内容来将自己的知识面拓展开来,搭配前面说的总结学习经验,这样对解决技术问题是很有帮助的。
但是不要过度追求知识面的拓展而弱化了主线技术方向,否则会从专家变得平庸,顾此失彼,就真的是得不偿失了。所以,应该合理分配学习的比例,我一般都是以6:4的比例来分配时间进行主支线的学习。
下面我展示部分Android需要学习的知识面:(这些是我自己一路学习以来整理的一个学习思路及方向,提供给大家参考下)
总结
首先是感觉自己的基础还是不够吧,大厂好像都喜欢问这些底层原理。
另外一部分原因在于资料也还没有看完,一面时凭借那份资料考前突击恶补个几天居然也能轻松应对(在这里还是要感谢那份资料,真的牛),于是自我感觉良好,资料就没有怎么深究下去了。
之前的准备只涉及了Java、Android、计网、数据结构与算法这些方面,面对面试官对其他基础课程的考察显得捉襟见肘。
下一步还是要查漏补缺,进行针对性复习。
最后的最后,那套资料这次一定要全部看完,是真的太全面了,各个知识点都涵盖了,几乎我面试遇到的所有问题的知识点这里面都有!在这里也免费分享给大家,希望大家不要犯和我一样的错误呀!!!一定要看完!
获取方式:点击我的GitHub