关于编程的一些个人感悟

关于编程的一些个人感悟

参加工作有一段时间了,在不断的工作中对于编程有了新的体会,在这里记录并跟大家分享一下,也希望大家可以留言探讨。

为什么需要编程?

站在公司的角度上,它需要提供一种产品可以满足客户的需求,而编程就是为客户制造产品的一种手段,其终极目的还是为了解决客户的问题。也就是说,编程并不是目的,只是一种手段,如果存在一种更加便捷有效的方式可以解决问题,就没有必要去进行编程。

为什么要强调编程不是目的呢?

因为大多数初入职场的人,尤其是应届毕业生,总是会在做产品时陷入对技术的过度追求。对技术有追求是一件好事,但是更要时刻谨记技术的意义。当前很火爆很牛x的一些开源技术,它们的存在难道单纯是作者为了炫技吗?真正牛x的大佬应当是即具备了技术的深度,又能寻找到商业价值与技术价值的平衡点,过度的滥用技术只能说明其对技术的把控力不足,不能恰当合理的使用技术。

如何进行编程?

编程的目的是完成既定的需求,编程的过程就是一个不断遇到问题、解决问题最终满足需求的过程。这些在完成需求的过程中所遇到的问题被称之为风险,一名程序员如果可以提前识别风险,并会在真正开始编码之前解决掉风险,他就算是迈入了架构师的门槛。

解决复杂问题的一个重要途径是对问题进行拆解,将其转换为简单问题或已知问题,并逐一解决。

人类目前所有的知识体系,都是建立在人类对这个世界的认知中,计算机的整个知识体系也不例外。这也就意味着在编程中所遇到的问题,基本上都是在我们认知范围内可以解决的,甚至可以借鉴一些特别朴素的生活经验,来帮助你寻找解决问题的方向。

以性能优化为例,怎么做才可以加快网络中数据的传输速度呢?

这个问题可以转换为,在生活中如果我们想快速的运输一批货物到异地,应该怎么做才好?

依据经验,想要更快的运输速度,首先肯定选择更高速的运输设备,毕竟飞机快于高铁,高铁快于火车。

进一步的,我们可以多租几架飞机,同时进行货物的运输,也能加快货物运输的速度。

再进一步的,每次运输的货物体量有限,我们要想尽办法利用运输工具的每一分空间运送货物,在不损坏货物的前提下使劲挤压货物,向有限的空间内塞进去更多的货物。

回到问题本身,如何加快网络数据的传输速度?我们可以得到一些答案:

  1. 使用更高速的传输介质,光纤的传输速度总是好于五类线。

  2. 对数据进行并行传输。

  3. 先对数据进行压缩,再进行数据传输。

这种思路甚至可以推而广之,譬如如何对数据库性能进行优化?

  1. 使用更高速的设备。

SSD比普通的机械盘肯定是要快的。

大内存,数据库可以尽量的将数据缓存在内存中。

更高运算频率的CPU,每秒运算更多的指令。

  1. 并行处理

配置开启更多的工作线程。

集群多节点部署,将读或者写分散到多个节点上,并行处理。

  1. 数据压缩

此处的数据压缩,不仅仅是单纯意义上的压缩数据。

数据的本质是什么?是信息!我们存储数据,处理数据都是为了能够按需从数据中提取需要的信息。

在存储数据时,对数据进行筛选、处理,尽可能的只存储所需数据,减少数据冗余,是数据压缩的一种形式。在读取数据时,只读取特定范围满足特定条件的有效数据,减少对数据的检索范围,也是一种数据压缩的特殊形式。合理的使用索引,对数据进行分库分表,或者类似ES的集群形式,数据被分散到多个节点的多个分片内,每个节点只存储部分数据,这些都是数据压缩,可以让你在较小的数据集范围内get到自己想要的所有信息。

怎样学习编程?

解决问题的思路离不开丰富的知识储备,以及对知识的归纳与演绎,无论是提升知识的广度还是深度其实都是殊途同归。

有些人比较具备钻研精神,对技术的深度有狂热的追求,在学习的过程中遇到了什么技术问题一定要抠的明明白白。首先,我要对这种做事方式进行肯定,好的技术离不开钻研精神,但是从我个人角度来讲我不建议大家在学习编程时这么做。计算机软件是一个非常宽泛的学科,它的知识栈囊括了各类操作系统,网络,以及各种各样的编程语言。并且,这些知识栈并非都是完全独立的个体,它们所使用的技术,解决问题的思路有好多都是大同小异。

我建议在初学编程时,应当尽量多的去接触各类技术,将学到的知识互相印证理解,最大可能的开拓自己的视野。这么做的好处在于,第一不会因为某个极其困难的点而丧失掉对学习编程的兴趣,第二视野的开拓可以学习到更多解决问题的思路,让你了解到同一种技术原来存在这么多的可利用方式,对以后的工作生活有所启发。

如何学习的一些建议:

我个人对于编程的学习经历了几个阶段:

  1. 视频学习

现在视频教学网站很多,我当时主要是在淘宝购买相关的视频教程。

视频教学比较适合完全什么都不懂的小白阶段,不好的地方就是学习进度太慢,自己思考的会比较少,现在我个人已经完全放弃了这种学习方式。

  1. 看书

对于新人来讲,有些技术书籍还是值得一看的。有很多国外的经典著作,都可以一览。目前国内的技术书基本上是鱼龙混杂,我目前也很少会去看技术书籍了,因为我发现书里的内容手册中基本上都可以找到,手册里有的内容,往往因为篇幅的原因书籍中却无法全量的覆盖。

另外,目前技术的更迭速度还是很快的,书籍里的内容往往都是一些技术几个版本之前的老东西了,即便学习了很多时候也无法完全适用于新版本,还可能会给你带来一些困扰。

  1. 官方文档+google+stackoverflow

这是本人目前获取知识的主要途径。在学习一种新技术时,鉴于本人的英语水平不是很高(目前好很多了),多数情况下会首先使用搜索引擎阅读一些博客对新技术的一些概念进行快速入门。之后,再进行文档阅读(了解了一些概念,在进行翻译时才能更准确的理解原文的意思)。

对于一门技术的学习,最好的途径是使用它,如果当前没有环境去使用它,那么就去了解别人是怎么使用它的!《开发者头条》是一个挺不错的技术站点,我经常可以在上面找到一些别的公司在生产环境对某个技术的应用实战,这些生产环境的真实应用让我受益匪浅。

不喜欢看春晚,又没有别的事情可做,年三十晚上随便写点东西,希望能给大家带来一些收获。

最后,祝大家新年快乐啊!猪年发大财!

最后,个人公众号,欢迎大家关注~

转载于:https://juejin.im/post/5c584f846fb9a049f91304c7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值