博客新篇章

其实这是我时隔多日重新开始操刀动手写博客,今天回顾了好多东西,自己写的笔记,自己写的博客,不知道从什么时候开始停下了没有写博客了,也许是最近事情太多了把,总是有这样那样的事情阻止着我,当然主要还是我的惰性。这,不好,我得重新开始写点东西。

先说说看了之前写的博客把,现在看来以前写的东西都是那么有激情,但是感觉总是少了点什么。深度,少了点深度把。

重新看了博客,觉得除了那几篇读书的感想和自己的心路历程之外,很多都只是我iOS路上碰到的各种磕磕绊绊的小问题。当然也不是说这些小问题不能记录,这些是我成长的轨迹,当然也是我以后书写代码的指南,我之前碰到过的问题不希望第二次重新从零开始解决一遍,不能每次都走两遍弯路,所以我需要把我之前遇到的问题解决思路、解决方法都写下来,供以后参考。

其实促使我重新审视我的博客,重新审视我的视角的还有一个原因,就是之前参加腾讯的面试经历。一面都没过,出乎了我的意料。本来想的是HR姐姐应该能见到把。很尴尬,这次经历多方面原因都有。当然,我还是觉得我的一面表现并不足以让我直接淘汰,只是觉得我应该能发挥得更好一点,好到让这个面试官无论怎么样都会把我送去二面,而不是觉得这是一个腾讯可以要可以不要的人,然后让上天来安排我到底能不能去二面。

对,这个发挥的更好的地方就是深度。

我在面试的时候表现出来的就只是一个像我博客上表现出来的样子:我是一个开发者,你让我做什么我就能做什么。这个不是我所需要的状态,也不是面试官所需要的状态,我至少需要表现成这样:我是一个优秀的开发者,你让我做什么,我就能非常完美地把它做出来,没有任何问题。当然,我还痴心妄想更上一层楼的状态:我是一个极客开发者,我做出来的东西,别人无论如何都做不到我这样。呵呵,跟叫兽一样吹了个牛逼,但是我的想法就是这样,能不能实现,我们10年以后再看。

从一个开发者到一个优秀的开发者,其实这中间有很长的路要走。我自认为我可能刚刚达到开发者的状态,或者连开发者都还算不上。我觉得我如果要慢慢向优秀的开发者进发,还有好多道坎要越。

首先是基础。这个基础包括很多,从底层往上说把。
第一是C语言的基础:C语言不仅是ObjC的根基,更是所有编程语言的根基典范,我需要对C语言有更加深入的了解,Yxj同学给我推荐的《C与指针》我觉得有时间是要好好看看。
第二是ObjC的基础:虽然我已经把《Objective-C 基础教程》看了不下3遍了,但是还是有很多东西感觉上并没有那么掌握牢靠,我还需要重新真正好好看一遍这本基础教程。
第三是iOS开发的基础:已经开发了将近一年的iOS,虽然中间有许多的事情各种捣乱,毕竟还是写了好久,但是到现在我也并没有把所有控件都用过来,没有把所有常用的控件给整合清楚明白,没有真正掌握控件的核心,不得不说Xcode的API文档做的非常给力了,但是我还是需要把我经常用的控件(UITableView、UIScrollView、UIViewController)给罗列整理,毕竟这是我日常的工具,当然,我还买了挺多书,比如《iOS开发指南》,关老师写的东西看着还是比较爽的,会根据这些书籍来辅助整理我的控件博客。
前三个是我的代码基础,代码就是我的工具,我不仅要会用,还要用的好,要写出一手漂亮的代码。所以第四个基础就是我的代码规范,最近在看一本书叫做《Effective Objective-C 2.0》,这本书还是非常好的,从写代码的规范到各种经常容易犯的错误都会有,要尽早把这本书给看完,好好使用它。

其次是进阶,进阶的方向有许许多多,由于我知识的触角并没有那么广泛,所以先力所能及写一些,然后再加深其它方面的进阶知识。
第一,设计模式。之前的基础是怎么样能写出一个iOS应用,现在我需要把这个应用写好写漂亮,在我脑海里浮现出来的第一个词就是设计模式。设计模式的本质是什么?有哪些设计模式?在什么状态下应该用什么设计模式?用什么设计模式能达到最好的效果?如果我把这个问题解决了,配合牢固的iOS基础,写出一个好的iOS应用并不是一个难事。之前买了一本《HeadFist设计模式》,虽然五号说这是一本搞笑的书,但是还是挺好看的,先看完这本,起码对当前的各种设计模式心里都有一个底,之后再针对性去读《iOS设计模式解析》。
第二,计算机网络。曾经Yxj跟我说过以后的移动应用都会是网络应用的时代,虽然这个话我到现在都还是不是那么赞同,但是网络的发展趋势的确是势不可挡,TCP、UDP、HTTP,这些计算机网络的基础知识是必不可少的,这个暂时还没找到非常好的书籍让我去了解,慢慢来,总会碰到好书的。
第三,数据结构算法。本来这个应该是基础的,但是对于移动应用来说,数据结构和算法却是排在后面的,因为移动应用的小数据、小处理量,大部分时候都用不到太多高深的算法和数据结构。但是毕竟是编程基础中的基础,同时也是程序思维的非常重要的一环,所以数据结构和算法也是非常重要的。当然,作为科班出身的我们,数据结构和算法会当作专业课来上,所以基础都还是会有一些的,很感谢沈刚教授,之前学过的基础算法数据结构我会一一捡起。
第四,内存管理。事实上,内存管理应该是ObjC的基础,但是我把这个放出来说是因为有太多的实际应用会受到各种内存管理的限制,内存管理算得上是一门比较大的学问,各个条件下如何处理内存的各种经验教训会是我享受不尽的财富,当然,在这之前必须要弄懂iOS的内存管理机制,才能更好地去使用它。
第五,多线程。在我之前开发的应用也有用过多线程,就是简单使用NSThread来进行多线程的操作,但是直到我看到Blocks和GCD之后才知道我的NSThread用的是多么浅显,多线程和内存管理一样,都是涉及到iOS内核但是却需要各个阶段iOS开发人员掌握的技术,有一本叫做《iOS高级编程:多线程与内存管理》的书,总有一天我要拿下它好好品读。
第六,测试开发。虽然我们这个学期有软件质量与测试的课程,但是很遗憾我没有那么用心去学这门课,很惭愧,而且对于iOS的测试开发我完全没有印象,对于程序来说,测试是非常重要的一个环节,当然iOS应用也是如此,所以学习测试开发也是非常必要的,之前有在图书馆借到一本书叫做《测试驱动的iOS开发》,以后可以买来潜心研究下。 

如果还要继续往下探究,那就是iOS的内核技术了,虽然按照我的发展方向下去总有一天会遇到这个问题,但是我还是想等以后再谈,基础为先。

还有要说的,就是开发的周边环境和周边技术了。要感谢Yxj同学,他让我接触到了太多的东西,太多的我没接触到的周边技术,我就我接下来所需要的做一个罗列
工具类:
1.Alfred。之前一直使用的是QuickSilver,虽然觉得超级好用但是总有局限的地方,恰好,Alfred弥补了好大一部分QuickSilver局限的地方,同时还开辟了更多的使用场景,也许会让我以后的生活更加美好。
2.LaTex。直到上次看方正写LaTex的时候才意识到原来真的可以有东西来替代Word来做论文了,编码式的排版,更加符合我们开发者的生活习惯,最重要的是所有格式都在自己的手里掌握着,不会出一丝一毫的差错,这才是我想要的。
3.GoAgentX && 翻墙。越专注开发,越会发现真的百度没有谷歌好用,那些被墙了的网站上有太多的资源,太多的大神,太多的解决办法,翻墙的技术太必须了。
*4.Instrument。Xcode的内存测试工具,通过这个工具可以测试到iOS应用哪条语句发生了内存泄漏等等,学到iOS内存管理的时候应该会有所需要。
技术类:
1.MarkDown && Mou。Yxj一直推荐我用MarkDown写文章,但是我一直都没有那么当回事,直到最近重新开始写博客,才感觉排版是我的博客一大疏漏,但是又不知道怎么整理才好,我是要好好学习写写MarkDown了。
2.Git && GitHub。 虽然一直在用着Git,但是对于Git,我也真的只会Commit、Pull、Push,其它的一概都不懂,作为最重要的版本控制工具,Git我要真正掌握它才行。
3.Zsh && Bash && Terminal Command。以前我一直排斥命令行,认为命令行这种时代淘汰的产物只有在MS-Dos这样的系统才会出现,但是最近对于各种东西的使用来看,我对命令行有了误解,命令行是我们开发者必不可少的一个高效工具。
4.Lua。Yxj曾说脚本语言会让我的生活上升一个档次,但是我对于脚本语言一直都没有一个确切的印象,但是对Lua却有一个非常眼熟的感觉,因为曾经写Cocos2d的时候也有碰到过Lua,而且还有测试驱动的时候需要用Lua写脚本,所以Lua也需要好好学一番。
*5.正则表达式。 网络开发的时候很多时候会用到正则表达式,但是我对这个方向完全没有印象,应该是会要用得到的把~

整个一篇写下来,发现自己真的是还有好长的路要走,各行各业都是一样的把,程序员也不例外,总是会经历一些费脑费力的事,才能达到一个新的高峰,而我现在就在山脚下,开始爬。

原文地址:https://www.cnblogs.com/wisejoker/p/3657575.html