首页 程序笔记 技术实力的本质是什么?

技术实力的本质是什么?

背景

今天,我们来讨论一个问题:技术实力的本质究竟是什么?

在工作中,你可能会遇到,为什么他的实力不如我,他却可以晋升?

在面试中,你可能会遇到,我把系统性能优化了10倍,为什么面试官还是看不上我?

为什么?到底是为什么?

如果你有同样的困惑,或者彻夜难眠,我认为你需要停下来思考一下了。

可能是你的学习方法错了,你并不是不努力,只是努力的方向错了。

我举个简单的例子:

我的父母特别勤奋,当我还是个小屁孩的时候,他们每天早上四五点就要起床磨豆腐卖豆腐了,一年四季如此,他们的目标也很简单,就是把我和哥哥送入大学,当然,最后他们的愿望也确实实现了。

你说他们努力吗?是的,很努力。

但是,你说他们很成功吗?不见得。

所以,你看,有时候并不是说,你努力了就一定会成功。

更不用说我们做程序员的,有那么多的知识要学习,就拿java来说,你真的就只需要学习java本身的东西吗?数据库要不要学?各种框架要不要学?缓存要不要学?

有这么多东西要学习,学得过来吗?通宵达旦地学也学不过来呀。

话题

所以,技术实力的本质到底是什么?

我认为技术实力的本质是解决问题的能力,或者换个说法,技术源于业务,技术是为业务服务的。

这么说,可能大家不乐意了,你莫不是产品弟弟派过来的间谍?!

我再举个简单的例子:

在很久很久以前,这个世界上没有火,突然有一天,一道闪电划过,劈在了树上,着了火,引起了森林火灾,后面火灭了,人去捡被火烧熟的动物尸体吃,嗯,味道竟然很好。

后面,人就形成了一种共识,火烧过的肉很好吃。

所以,他努力的想掌握生火的技能,经过一番尝试,终于习的了钻木取火的技能,从此,可以天天吃烤肉了。

在这个故事中,业务是什么?技术是什么?

业务其实是吃烤肉,技术是取火,钻木取火是取火的一种方式,除了钻木你还可以使用打火机。

忽然有一天,一个人说我要喝水,你却给他打火机,你说你解决了他的问题(业务)了吗?

并没有,打火机虽然是更高级的技术,但是对于喝水这个需求并没有什么卵用。

所以,技术实力的本质是解决业务问题,你解决的业务问题越大越复杂,代表你的技术实力越强。

增强

那么,如何才能增强自己的技术实力呢?

我认为分成以下几个步骤:

首先,领悟业务,引导业务,这个你可以去学习一些DDD的思想,并落地到你的业务中,可以帮助你快速理清业务边界,甚至引导业务未来的方向。

其次,学习通识技术 + 技术储备 ,学习一些你所在领域的通识,并储备一些在现在和未来能帮助你解决业务问题的技术。

在这么多技术中,我认为最重要的是学习你所在领域的通识。

通识是什么呢?

我们以java为例,java其实也有很多方向,比如web开发,物联网,大数据,那我们看看这3个方向要学习哪些东西:

1、web开发:数据结构与算法,设计模式与设计原则,jdk源码,spring全家桶,mybatis,MySQL,等等

2、物联网:数据结构与算法,设计模式与设计原则,jdk源码,netty,mqtt

3、大数据:数据结构与算法,设计模式与设计原则,jdk源码,hadoop,hbase,elasticsearch,flink,等等

所以,你看java领域最重要的就是数据结构与算法,设计模式与设计原则,jdk源码,那么,他们就是java领域的通识。

你可能会问我搞大数据的为什么要看jdk源码?

那你可以去看看大数据的那几个框架都是什么语言写的,不懂jdk源码,你能看得懂hadoop的源码,我是不信的。

通识差不多这样,那怎么做好技术储备呢?

我们以web开发为例,假设现在你们的业务量是10万每天,预估未来可能会达到100万,甚至1000万每天,那你可以想象一下你们的架构将如何演变。

首先,存储方面,肯定不能单库了,所以,必须学习类似mycat、sharding sphere等分库分表方案。

其次,查询方面,分库分表之后没办法做模糊查询了,肯定要上搜索,所以,必须学习elasticsearch等搜索技术。

最后,并发方面,并发量有大幅度提升,接口性能要不要优化?jvm要不要优化?要不要加缓存?要不要聚合日志?等等。

甚至,为了动态扩容,可能还要上k8s等容器化技术,统统都要学习。。

所以,这么简单的分析一下,就知道要学习哪些储备技术了,我这里只抛砖引玉,并不是说这就是全部。

你可以排一个优先级,一个一个去学习这些技术,但是,并不是说每一个都要去达到源码这种级别,你只要去掌握他们用到哪些底层技术,适用于哪些场景,有什么优缺点,有什么坑,简单的使用案例,我认为掌握到这种程度就够了,真正遇到需要用到这个技术的场景的时候,你能信手拈来即可,然后再去深入学习。

比如,消息队列kafka,它是怎么部署的,它的快用到了什么技术,它如何保证数据不丢失,如何进行主从数据复制,使用在什么场景,等等。

其实,研究多了,对于一种新的技术,它使用的底层技术也就那些,比如oscache,几乎所有分布式框架都会使用。

所以,你是不是可以研究一下这些框架都使用到的技术,他们是不是又可以成为新的通识。

最后,持续学习沟通能力,表达能力,思维能力,总结能力,并落实到工作生活中。

最后一部分如果用一个词来概括的话,可以称之为社交能力

你写了一个特别牛逼的框架,但是你不会表达出来,别人也不知道你在说啥,有什么用?正所谓天才与傻子只是一步之遥,可能是我们无法理解傻子,或者说傻子不会表达自己。

你在工作中是不是只会闷头干活,交给你的活都能搞定,但是,你就是比不过那个PPT写的好的,那是你的思维能力和总结能力不如别人。你可能只列举了你做过哪些东西,但是,他会归类总结,最后以结构化的方式呈现出来,甚至还可能通过对以往数据的汇总,预测下一年的方向,这个在老板看来是更重要的东西。

所以,你必须学习思维能力和总结能力,而且是持续学习持续实践,这方面的能力是贯穿一生的,即使以后你不做程序员去送外卖了,可能也能比别人赚得多。

总结

好了,最后总结一下今天的分享:

技术实力的本质是解决问题的能力。

在业务方面,我们应该学习如何快速理解业务,可以通过DDD等手段实现。

在技术方面,我们应该学习你所在领域的通识,并做好技术储备以应对未来需求的变化。

在社交方面,我们应该持续学习沟通能力,表达能力,思维能力,总结能力,并落实到工作生活中。

好了,今天的分享就到这里。

最后,我想问,你支持本文的观点吗?

欢迎留言讨论,共同进步。

2

站心网

背景今天,我们来讨论一个问题:技术实力的本质究竟是什么?在工作中,你可能会遇到,为什么他的实力不如我..

为您推荐

天天写业务代码,如何成为技术大牛?

不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己。然而"梦想是美好的,现实却是残酷的",很多..

架构与思维:微服务架构的思想本质

我们为什么需要微服务架构,它一定是为了解决我们某些问题才出现了。这篇文章我们讨论下微服务架构模式所解决的问题,带来的挑战,以及他的核心思想本质。1 早期的服务架构上图是一个典型的服务分层架构:Client: ..

程序员如何讲清楚技术方案

最近在评审技术方案,和代码review的时候,遇到刚入行的同学们,很多都讲不清楚技术方案。具体表现是:上来不说需求,直接说算法实现。台下一头雾水,根本不知道设计方案是否合理。描述完需求后,又直接看代码,看表..

如何学习新技术

我总是感觉自己在盲目的学习一些看上去很火热的技术。比如 React Native,Flutter 等等。我家里堆了各种编程语言的入门书籍,有 Go 的,有 Erlang 的,有 c++ 的,还有 JavaScript 和 CSS。我到现在都搞不懂这个事情..

码农晋升为技术管理者后,痛并快乐着的纠结内心

有一个非常有趣的现象:据说大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到管理岗位上的,并非是自己当初有强烈意愿、主动去选择管理岗的。这种被动的比例还不低,高达..

十年技术进阶路

前言该篇文章是我第一次跟DTCC合作编写的,整篇文章大概8000字,可能花您15分钟阅读。我和DTCC的韩楠老师,共花7了天时间,每天把该文章打磨到晚上12点,在这非常感谢编辑老师的负责与付出。这篇也是我分享里为数不..

传统线程技术中创建线程的两种方式

传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法;二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread。这两种方式大部分人可能都知道,但是为什么这样玩就..

一个技术管理者的苦逼【技术管理漫谈】

希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。角色转变 从工程师转技术管理这两年,好比头马变成车夫,除了角色认知的转变,还要看方向,定计划。不仅仅是自己拉好车的事情,..

技术团队管理者的问题视角

团队基建考虑的因素- 人心稳定性- 团队技能分布:(每个人熟悉的技术栈,技能)- 团队职业规范方向:(谁去当架构师、技术专家、技术经理、交互专家)- 合作意识:(工程师的积极性:主动问询,共同协商)- 团队规范..

.NET 主程序的.dll.config文件有什么用?

.dll.config 文件通常是在开发过程中自动生成的,它的主要作用是为某个类库(.dll 文件)提供一个独立的配置文件,以便开发者可以为该类库单独定义或测试配置项。以下是生成 .dll.config 文件的原因和机制:1. 配置..

CPU、GPU 和 TPU 之间有什么区别?

什么是 CPU、GPU 和 TPU?它们都是用于计算任务的处理器芯片。可以把你的大脑想象成一台计算机,能够完成诸如阅读书籍或解决数学问题的任务。每一项活动都类似于一个计算任务。例如,当你用手机拍照、发送短信或打开..

让人迷茫的三十岁,从专业技能、行业知识和软实力的人才三角谈

这是我无意中在社区微信群中看到的一位年轻的开发者说的话,之前他也经常会在技术群中抛出一些有深度有内容的问题,并能积极乐观的进行问题思考和探寻技术解决方案,有时候可能会错误的以为他这样一位热爱学习的开发..

.NET9 F#有什么新特性?

F# 9 的新特性简介F# 9 是 .NET 9 的一部分,带来了多项增强功能,旨在提升开发效率和语言特性的一致性。这些改进不仅为现有的 F# 开发者提供了更强大的工具,也使新手更容易上手。以下是主要特性概览:1. 改进的类..

尤雨溪的VoidZero到底是什么?

尤雨溪创立的VoidZero是一家致力于打造下一代JavaScript工具链的公司,其核心目的是解决当前JavaScript开发工具在性能和效率上的痛点。这个工具链的目标包括提高速度、减少重复处理,并用统一的架构简化开发者的操作..

什么是.NET渐进式Web应用(PWA)

.NET 渐进式 Web 应用(PWA,Progressive Web Apps)是一种结合了 Web 应用的跨平台性和本地应用体验的应用程序。通过 PWA 技术,.NET 开发者可以使用 Blazor 和 WebAssembly 创建 Web 应用,支持在各种设备和操作系..

.NET9在ASP.NET MVC有什么更新?

在.NET 9 中,ASP.NET Core MVC 和其他 ASP.NET 功能进行了多项增强,以改善开发者的体验和应用性能:静态文件处理和缓存优化:ASP.NET Core MVC 现在支持静态文件的“指纹化”处理,发布时会生成包含唯一..

工作这么多年,你能向新人解释清到底什么是面向对象编程吗?

面向对象编程想必大家都耳熟能详,但是写了这么多代码你对面向对象有清晰的认识吗?来看看这几个问题:到底什么是面向对象编程?和面向过程编程有什么区别?什么又称为面向对象语言、面向过程语言?用面向对象语言写..

什么是VoidZero?Vue和Vite之父尤雨溪成立的技术公司

VoidZero是一家由Vue和Vite之父尤雨溪成立的技术公司,主要致力于解决JavaScript工具链的碎片化、依赖复杂以及性能瓶颈问题,通过提供一个统一、高性能的开发工具链来改善开发者的开发体验。优点分析统一性:VoidZer..

CLS 问题:超过 0.1(桌面设备) 是什么意思?

在网页设计和开发中,CLS(Cumulative Layout Shift)是指页面布局的累计偏移量。当一个用户与页面互动时,如果页面的某些元素突然改变位置或大小,导致整个布局发生偏移,就会产生布局偏移。这种偏移可能会影响用户..

什么是...rest?收集剩余参数

在 JavaScript 中,...rest 参数是一种特殊的语法,用于收集函数定义中所有剩余的参数,并将它们作为一个数组传递给函数。换句话说,它可以将不定数量的参数打包成一个数组。语法:function myFunction(...args) {//..

发表回复

返回顶部