劝学
今天去听技术大牛分享经验,发现自己有很多不足
横向扩展方面:自己的技术储备显然不足,项目经验仍然很缺乏,技术大牛说的很多技术自己听都没有听说过。像:多线程技术方面,多线程下的无锁并发控制。
纵向扩展方面:自己研究技术研究的不够深入,这么多年一直还处在“怎么写代码”的状态。至于为什么这么写,这么写有什么好处,可不可以换另一种写法。自己从来没有深入研究过。
的确,我们从毕业到现在一直都是处于一种固定的模式中,就是这段代码怎么按照需求写出来,而从不去研究:这需求感觉不如改一下,这么实现比较好。
一位技术大牛曾今对我说过:你动手能力的确很强,但是理论知识也要跟上。只知道这么写,而不去思考为什么这么写,等时间长了,你写代码越来越吃力的
也许你会和他争辩:我就是来写代码的,不是来背概念的。
软件技术这方面包含的东西很广,要是背概念,你估计一辈子也背不完。我们的需求是:在写代码的过程中慢慢体会整个流程是怎么走的,比如:一个请求从开始到结束,客户端和服务器端到底都干了些什么
你会写代码这很可以,但是工作三年的程序员毕竟和工作五年的程序员不一样,薪酬也不一样。如果你工作了三年或者五年,只是为了写代码而写代码,不去弄明白里面的原理,不去深入了解里面的底层知识,那三年和五年又有什么不同呢???
这就好比社会中的交际:三年前你从一个人身边经过,打个招呼,做个介绍。你知道了对方一些基本的情况。这三年中你不断的从对方身边经过,只是偶尔的寒暄几句,而不是去深入的了解这是个什么样的人。这个人有什么优点,有什么缺点。
那么三年后你们只是过客而已。算不上真正的朋友。
所以深入了解自己使用东西的底层很有必要
另外说一点:虽然我们是搞C#的,但是不必微软的东西所有都接受,一个软件,一种技术的崛起都有它的优势,我们需要根据自己实际的需求,去选择使用合适的软件,技术。我们需要考虑到我们系统的输入能力和运算能力
比方说现在流行的微服务框架Spring Cloud就是基于Java编写的,我们可以使用它作为分发服务器。另外一些东西我们可以根据Java的代码写一套同样的C#代码出来使用,把Java平台的东西迁移到Net平台。