从一段代码说起
package com.jeff.study.jdk8.stream;
import java.lang.reflect.Modifier;
import java.util.Arrays;
/**
* @Description 迭代常量类中的某些属性
* @Date 2021/1/16 2:38 下午
*/
public class TestConstantStream {
public static void main(String[] args) {
Arrays.stream(Numbers.class.getDeclaredFields()).map(field -> {
int mod = field.getModifiers();
if (Modifier.isPublic(mod) && Modifier.isStatic(mod) && Modifier.isFinal(mod))
return field;
else
return null;
}).forEach(System.out::println);
}
}
enum Numbers {
ONE(1),
TWO(2),
THREE(3),
FOUR(4),
FIVE(5);
private int value;
Numbers(int Value) {
this.value = value;
}
}
jdk8以后函数式编程流行起来,lambda表达式、Stream API开始被程序员们使用,然而也总有一些程序员觉得,这些技术的升级换代并没有足够的理由让他们去重构他们的代码,已有的业务足够稳定,没必要去运用这些所谓的“骚操作”。这些想法并不是无法理解,因为他们即便使用最原始、最lowB的写法一样可以实现功能,比如foreach和for两种写法都可以,我就喜欢用for,有何不可?这些想法的人一样可以在企业中混的风生水起,只手遮天。所以,在这些地方,技术的更新迭代并不能让掌握了它们的程序员得到什么利益和机会。那这些程序员的价值有什么决定呢❓
为什么没有价值?
我一直在想,一个努力学习的人,怎么可能会没有价值?
后来因为某些机缘,我突然明白,不是你没有价值,是你的创造没有价值,是这些创造不需要你的能力。
对于程序员来说,我们都在创造代码,代码就是我们的产品或者输出。但是代码有好坏之分,即便是微信或者QQ这样用户规模的系统,代码也一定有好有坏。但关键是那些代码创造的是微信、QQ,所以写代码的人也就创造出了价值,有了价值就势必会得到膜拜,得到认可。
工作这么多年,待过的公司也有许多,见过对代码有洁癖的人,也见过毫无追求瞎写的,他们都在创造不同的价值。但瞎写的反而会更受到重视,会更被肯定价值。
那么价值由谁决定?不是应该有你的实力决定的吗?就好像一个杯子,材质不同价值也就不同,难道价值跟使用他们的人还有什么关系❓
直观讲,技术人的价值体现为技术人的技术实力,技术实力体现在技术的输出与创造。然而你的输出与创造即使让人觉得你有两把刷子,也无法真的决定你的价值!
谁才是这场竞赛的裁判?
你有将你的技术输出在了什么地方?有人认可吗?
有几个时间点可能会是技术被认可的绝佳时机。
- 面试:面试官直接面对你的技术,通过各种方式考察你的技术。
- 工作:工作中完成大佬布置的具有难度的任何,给任务提出解决思路。
- 会议:技术会议中提出自己的见解和思路,让别人了解你的技术。比如代码走读中以自己的技术敏锐观察力发现问题和提出解决方案。
除此之外,能否被认可还取决于你自己的表达意愿和大佬对你是否感冒,这这两点我认为起了80%的作用。
技术没有裁判,你要自己寻找公平的平台。
你能否得到机会,你能否得到匹配你自己实力的平台,真的需要自己的追逐。不要在一个不认可你价值的地方停留太久,那样只是会浪费自己的时间。当然,你可以在不被认可的时候持续蓄力,增强自己的能力,闪闪发光,让大佬看到你的价值。你也可以鲤鱼跃龙门,去往更高的阶梯。
开源时代,别让内卷耽误了你?
吾生也有涯,而知也无涯。以有涯随无涯,殆已!------庄子
究竟路在何方?
有的时候,我也会陷入迷茫的痛苦之中,明明自己一直很努力,已经持续了很多年,不停的学习,为什么而今还是混成这个模样?后来出现了一个词顿时让我明白了------内卷。
搞私单、学大数据、学AI,泛泛的学了很多,走了很多弯路,浪费了很多时间,最后才有了那么一点感悟。有个认识的哥们说,他到快30岁才明白如何去学习。其实,许多人何尝不是呢?
技术大爆炸的开源时代,行业不断兴起,技术层出不穷,我们总是觉得自己这也不懂,那也不会,总想什么都去了解一下,总想一口吃个胖子!但现实是,我们的精力和时间都是有限的,我们只能把有限的时间和精力用在最有价值的地方。那么何为最后价值的地方?作为码农,我觉得就是要搭建自己的技术体系,用小马哥的话来说就是“一精多专”,不需要什么都会。
如何搭建自己的知识体系?
万丈高楼平地起,不积跬步无以至千里。
基础是很重要的,java基础如jdk源码、设计模式、spring源码、IOC/AOP、数据结构与算法、Mysql数据库和性能调优、TCP/IP协议、多线程编程 并发包等等,除此之外,基础还包括一些架构设计的基本原则、基本思想,软件工程的基本素养如知道什么是瀑布模型、敏捷开发等。善于利用工具提高开发效率,有改善项目开发流程,提高开发效率的意识。甚至是一些沟通的技巧和一定程度的技术影响力。
最后,想送上几个字给自己和大家------内求于己,宁静致远!
转载:https://blog.csdn.net/shengqianfeng/article/details/112519675