不知不觉中,来博客园写博已经二年了。
经过二年时间的积累,人气提高了许多,或许正因为这个原因,最近一年中经常会收到一些朋友的提问。
在所有的提问中,有些问题被多次问过了,还有部分问题是没有结果的。
对于一些没有结果的问题,Fish Li也表示遗憾。
趁着3月12日这个对于我来说特殊的日子里,我也想谈谈另一个问题:Fish Li 该如何帮助您呢?
下面我将对一些无结果的问题再次给予回答,虽然今天可能还是没有答案,但我要告诉您没有答案的原因。
如何提问?
不管是网上,还是周围的同事,我发现有人喜欢在反馈错误时,只说二个字:报错!
说实话,您也太不专业了!
您想想人家根据“报错”二个字,就能找到报错的原因吗?
还有些人会将异常消息或者异常的截屏发出来,但是,有些异常消息是含糊不清的。
您能不能多提供一些线索?
我相信您确实是遇到程序异常了,但是我不知道您遇到了什么样的异常,尤其是在什么样的情况下发生了异常。
如果您不肯多花点时间描述异常或者不肯多提供一些线索的话,可能任何人都帮不了您。
尤其是有些异常在正常情况下并不会出现,那您就有必要告诉人家重现异常的方法。
如果在别人那里不能重现异常,您叫别人怎么帮您解决?
还有些属于代码的问题,调用同样的某个方法,我没有遇到异常,而您遇到了。
遇到这种情况,如果您提供的线索让我无法解决时,我建议您新建一个项目,并把那段代码复制到新的项目中,保证它们能重现问题,最后将新的项目发给我来分析。
所以,当您给我提问时,希望您能多花点时间来描述问题,不要想偷懒,偷懒解决不了问题。
说实话:您不想花时间,我也不想花时间。
当遇到一些复杂问题时,低效的反馈可能会导致来来回回几封邮件,最后还是没有答案,此时就会问我同样的问题:您QQ号多少?
我不用QQ!
每次当被问到QQ号时,我不知道您是否相信我的回答:我不用QQ!
在新蛋让我养成一个好习惯:不用任何聊天工具。
由于已经是习惯,所以现在我还是不用任何聊天工具,包括QQ。
我不用QQ还有一个原因是:的确没那个空闲时间用QQ。
Fish Li 的工作确实比较忙,确实没有时间聊QQ,所以我也只好不用QQ了。
有些人喜欢用QQ交流技术,但我认为用QQ交流技术,这种沟通效率也太低了吧?
我不太喜欢打字,太慢了。所以,我不会选择这种交流方式。
武汉的朋友如果想找我聊技术,可以来光谷软件园找我。
相反,邮件是一种离线沟通方式,我可以选择在空闲时候回复各类问题,
所以,欢迎大家用邮件找我,我的邮箱:liqifeng0503@163.com
或许有些人会想:QQ的交互比邮件要快,说不清楚的问题,可以马上补充说明。
何必要反复补充呢,如果您能一次性把问题说清楚了,我也只需要回复一次就可以了。
最后我还想奉劝一些喜欢在工作时间聊QQ的人:
当您还有正事情没有做完时,还是别开QQ了,您的进度可能会影响整个团队!
新手如何学习
已经有很多人问过我:您是如何学习的?没有好的学习方法?能不能推荐一些书给我?
每次看到这类问题,我都感觉很难回答:因为很难给您一个满意的答案。
对于这类问题的提问人,我还真分析过,主要有二群:
1. 即将毕业,或者毕业不久的新人。
2. 做了多年技术,但发现自己能力没有明显提高的某些人。
既然是二个不同的群体,我想答案也应该是不同的。
对于新人来说,他或许也认为技术领域范围太大了,希望能找人指点一下方向。其实我很能理解这个想法,然而,您有没有想过:学习是没有捷径的,您不投入,哪里来的收获?
您今天看到我能写出很多您不懂,或者没见过的东西出来,但您有没有想过:我,Fish Li 能写出这些东西又花了多少时间呢?
我不是搞教学研究的,对学习方法没有思考过,因此,我只能给您一些建议:
1. 挑选自己感兴趣的技术领域。既然技术领域太大了,那您就选择一个自己有兴趣的领域吧,选择 .net, C++, java 其实都无所谓。当然了,.net 也太大了,您还要继续细分,选择.net领域的一部分。我博客页面左上角的那句话您看到了吗? 吾生也有涯,而知也无涯。以有涯随无涯,殆已。您一生的精力是有限的,而技术领域不仅多,而且还在不断进步,它根本就是无止尽的,如果您真希望在您的简历上写着:精通.net, 精通C++, 精通java,精通JavaScript, 精通HTML, 精通CSS, 精通SQL SERVER, 精通ORACEL,精通...的话,您肯定会累死的!
2. 要有一颗坚持的心。这其实是一种心态:不要指望能速成。目前好像除了速成鸡之外,好像我还没有听到什么比较成功的速成事物。很多技术并非只有几个命令、函数,或者几个结论,因此,只有不断地去学习和领悟每个技术点,您的整体技能才会得到提高。所以,这也注定了技术学习是一个长期的过程,在这个过程中,兴趣和心态是二个能决定您能不能坚持的关键因素。也正因为这个原因,我才建议您首先要选择一个自己感兴趣的技术领域,或许在这个漫长的阶段,兴趣会一直给您动力,当您遇到困难时,兴趣也会激励您去克服它们。
3. 总结也很重要。新手和老手,一聊就能区分他们。为什么会这样呢?原因在于:从老手的谈吐中我们可以感觉出他们有较多的技术沉淀。这些技术沉淀来源于他们的总结。当然了,总结的形式是多样化的:像我这样写博客可以,自己把一些技术特性写个DEMO或者lab也行,再或者找张白纸把自己理解的东西画一画也行。形式不是目的,目的是帮您把一些混乱的或者还没有清楚理解的东西梳理清楚,对于一些遗漏的东西,也能在梳理过程中暴露出来,这样还可以提醒您还需要学习什么。总结还有二个好处是:增强记忆,以后可参考。
如果是做了多年技术的开发人员又该如何学习呢?
做一个有追求的技术人员
经常听有人在抱怨:公司的代码太烂了!公司技术太老土了,根本学不到什么东西!
在这里,我想问问您:业余时间您都在做什么? 是在玩游戏还是闲聊QQ,还是其它与技术无关的事情?
其实IT男还是比较宅的,绝大多数喜欢呆在家里闲玩,然而却不会想起技术。
因此,当他们面对烂代码时,也只能是抱怨了!
但是抱怨有用吗?当然了,您可以离职,换份工作,面对一份新代码。不过,情况可能还是一样。据我见过的情况,以及身边的同事的说法,几乎可以确定的是:国内的软件公司的代码【大多数】都很烂。所以,即使您换家公司,您还是要面对那样的烂代码。为什么会是这样,我不想在这里分析,因为没有意义,我们改变不了,这是现实!
我还想问问这些人:当您面对那些烂代码时,您有没有想过如何改进它们呢?
注意:我并不是要您去把它们都改过来,我知道那是不现实的,我只问您有没有想过?如果您没有想过这些问题,那您的确是没法进步!
很多烂代码通常有二种成因:
1. 由于代码存在较多重复部分,改起来很费力。
2. 代码结构本身存在较多耦合之后混乱在一起,不知道改哪里。
如果我假设的原因是正确,那您现在的问题就是:
1. 用什么方法可以解决大量的代码重复问题?
2. 如何让代码保持较好的结构?
我还是告诉您的答案吧:
1. 反射,委托都可以用来解决代码重复问题,封装也是一种方法。
2. 设计模式可以解决代码结构混乱问题,《重构》这本书也是值得您学习的。
“学不到新技术”,这个抱怨估计来自于许多做产品的公司,或者需要持续改进的项目。您想想:就算今天让您重做项目,让您全用最新的技术,几年之后,您还会不会有这样的抱怨呢?我承认新的技术或者新的框架,确实可以提高开发效率,但是引入这些新技术框架是不够的。您有没有想过:人家的技术在改进,您写的代码是否也需要改进呢?或者说:您平时有没有关注过您的代码的质量呢?例如:安全性,可维护性,可扩展性,性能。
人家的技术(代码)一直在改进,您为什么就不想想如何改进一下您的代码呢?
很多人不仅没想过如何改进自己的代码,而且还很喜欢复制粘贴。您有没有想过:为什么人家的新框架可以可以减少开发的代码量呢?那是因为人家做了封装。要是您也经常考虑封装呢?那是不是在创造自己的技术呢?在您不断封装过程中,我敢保证您会主动去学习一些新的技术,因为封装也是需要技术的。
所以,对于工作了多年的开发人员,您就别再问我学习方法或者学什么了,想想您有没有技术追求吧。