转行做程序员,多晚都不晚
大家好啊,我是董董灿。
最近有不少小伙伴加我微信咨询一些问题,有同学想了解AI行业的现状,想着转行的,也有在校生想了解毕业后工作方向的,当然也有想学习编程知识的。
诚惶诚恐,没想到之前写的文章,能有这么多小伙伴关注。今天打算挑几个话题结合我的个人经历,写一写我对这些问题的思考。
文章较长,偏意识流,欢迎一起交流~
1、我的就业
这是一个研究方向与计算机视觉有关,但又不是计算机视觉专业的同学发来的。
最近两年CV领域越来越卷,尤其是算法岗,确实导致很多研究CV的同学害怕毕业后找不到好工作。
更何况还有很多其他专业的同学,比如机械、自动化、环境等专业,他们研究的内容也有不少与计算机视觉有交叉。
所以毕业时的竞争压力,除了来自本专业,还有其他专业,更别提还有潜在的来自学校层面985/211的压力了。
但这件事是无解的么? 当然不是。
记得我毕业那会儿,对于未来的职业规划也不清晰。
读研期间,我除了专业知识的学习外,还经常混迹图书馆,看了一些闲书(可惜图书馆在毕业那年拆了),到毕业时,虽然已经拿到了offer准备入职,但仍然对未来有一丝恐惧。
当时就一直在想,未来那么长,我到底要做什么呢?
现在回想,选择工作,看的无外乎就是:发展潜力、自己是否感兴趣、公司平台、工资这些条件。
毕业后的第一份工作,这几样中总得占一样吧。
于是我从机械专业,转行做了程序开发,也算遵循了内心的选择,慢慢的变成了现在的一名攻城狮:敲敲代码,看看论文,学学算法,写写文章。
如果现在有人问我,你找到喜欢的职业了?我会摇摇头,不知道。
前段时间在看一本书,名字叫做《远见》,里面把人的职业生涯划分成3个阶段,每个阶段以15年为限。
第一阶段指的是刚毕业的第一个15年。
这15年是寻找职场兴趣点的15年,这期间,我们有大量的时间来试错,换工作甚至换城市,从而能找准自己未来的职业方向,并且准备在第二个黄金15年里持续为之发力。
这么算下来,我也才刚刚开始。
所以对于职业规划,我的认识是,现阶段随遇而安,喜欢做什么,就去做什么。后两个15年我还远未达到,不清楚该怎么做,遵循内心,去做自己真正喜欢的事情。
所以,上面同学的疑问,读书期间对未来十分迷茫,再加上现在就业越来越卷,这事怎么解?
有解,读书期间就做读书期间该做的事:该写论文写论文,该学知识学知识,该看书看书。就业卷是事实,我们改变不了,能改变的只有自己。
研究生就是步入社会之前的演武场,可以不断尝试,不断犯错,不断纠正。谁也无法确定未来真的会做什么。
喜欢读书就多看书,很有可能,未来的中国,会少一个机械工程师,但是会多一个畅销书作家。
2、我的学习
这位同学用过不少计算机视觉相关的代码库,如OpenCV,但是也仅仅局限于使用,对于视觉算法的了解不太够,更没有亲自实现过某些算法。
这就导致我想到了一个学习的对立面,是应该一知半解还是应该学透原理?
说个我的故事。
记得大学时有一堂课是《理论力学》,老师突然点名让我到黑板上推导一个较为复杂的公式,当时推的什么公式现在已经忘了,但很清楚的记得,在我成功推导出来之后,我潇洒的从讲台上走向自己座位时,走路的姿势都是不一样的。
很幸运,那次上课前,我心血来潮预习的比较充分。可以说,当时的我,对那个公式是“学透”了的。
但大学里众多课程知识点,当时学起来仍然是一知半解,直到毕业,直到现在慢慢的已经记不起来了。
后来在工作中接触了AI算法,才发现,很多知识不参透是不行的,毕竟是工作中吃饭的家伙,容不得半点马虎,稍不注意,程序分分钟报bug给你看。
王国维在《人间词话》中说过人生三境界,而学透一个算法:从了解到手推最后到代码实现,每一步都像是在三境界中升级打怪一般。
了解了某个算法,那就是“独上高楼,望尽天涯路”。
挑灯夜战,十几页纸手推算法成功,那就是“衣带渐宽终不悔,为伊消得人憔悴”。
待到熬夜将代码敲出来,成功跑通算法之后,再回过头来看,那不就是“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”么?
学习,需要经过这些过程,才能真正做到融会贯通。
很感谢研究生期间刘老师的教导,刘老师不仅教会了读研期间需要的专业知识,还花了大量的时间和精力教我们学习和做事方法。“授人以鱼不如授人以渔”,这些方法和态度,都将陪伴终身,一生受益。
3、我的自学
这是一个想系统地自学一些编程知识和计算机体系结构的同学发的。我给他推荐了一些我之前学习看过的书和视频。
自学真的很难,难不在知识,难在坚持。
我第一份工作做程序开发,那时的工作大部分集中在某arm芯片配置寄存器上,并非真正的算法开发,事实上,与算法没有任何关系。
而机械专业出身的我,自然对计算机的知识了解的少之又少。工欲善其事,必先利其器,既然工作用到了,那就缺啥补啥。
感谢互联网的便捷,网上有大量的慕课课程,有编程语言,有计算机考研课程,很成体系,也很细节。
记得当时学一门C++的课程,百度某资深工程师授课,整个课程全是干货,没有半点口水话,几十节课程共20多个小时,我来回听了6遍。虽然课程中的很多知识在工作中并未真正用到,也并未真正全部实践过,但直到现在,里面的很多知识还能顺口说出来。
学习真的是一件很快乐的事。所以自学可行么?当然可行。
自学需要投入大量的业余精力,想学到入门级水平,书籍和课程看一两遍就够了,想学到工作信手拈来的水平,多看几遍,多实战几遍,肯定能上手,如果不行,那就再来几遍。
最后,回归到上面的几个问题,无论是就业,还是上学,还是自学,与其想该如何如何去做,不如找准目标,轻装上阵,干就是了。
有句很有名的鸡汤说的很好:“种一颗树,最好的时间是10年前,其次,就是现在。”
小伙伴们,撸起袖子加油干吧。
祝所有看到本篇文章的小伙伴在未来都能收获自己的大树。
点击下方卡片与我联系,一起交流职业成长。
相关文章:

转行做程序员,多晚都不晚
大家好啊,我是董董灿。 最近有不少小伙伴加我微信咨询一些问题,有同学想了解AI行业的现状,想着转行的,也有在校生想了解毕业后工作方向的,当然也有想学习编程知识的。 诚惶诚恐,没想到之前写的文章&#…...
自动化运维ansible
一、Ansible概述: 是一个配置管理系统(configuration management system),当下最流行的批量自动化运维工具之一。 Ansible是一个开源的自动化工具,用于配置管理、应用程序部署和编排等 IT 任务的执行。它专注于简单性和可扩展性,并…...

记录:Unity脚本的编写4.0
目录 前言导入音乐编写脚本 前言 之前使用脚本对uniry中的模型进行了控制,诸如使用键盘控制对象模型的移动或者使用鼠标对对象模型进行角度的切换(或者是类似的东西),而我们在游戏的过程中,总是伴随着一些好听的bgm&a…...

vue中引入jquery解决跨域问题
1、vue 工程文件 package.json 中 引入 “dependencies”: { “jquery”:“^2.2.4” }, 2、控制台执行命令,当前工程文件夹下 cnpm install 3、修改的vue文件中 加入 import $ from ‘jquery’ 4、调用 ajax请求 $.ajax({url:http://192.168.0.10:9099/strutsJspA…...

车规MCU开发工具之Vector DaVinci Configurator执行arxml合并操作
环境 Step1 导入要合并的arxml 、 Step 2 比较、合并过程 <完>...
数字滚动动效(纯HTML5版和Vue版本)
数字从0到指定数字的滚动动效,直接上代码; H5 <!DOCTYPE html> <html> <head><style>/* 设置数字显示的样式 */.counter {font-weight:700;font-size: 36px;color: #333;}</style> </head> <body><div cl…...

Leetcode—2530.执行K次操作后的最大分数【中等】(C语言向上取整数学公式)
2023每日刷题(五) Leetcode—2530.执行K次操作后的最大分数 向上取整思想 参考了这篇文章 有人肯定会问,这个向上取整为什么是这样来的。接下来我简单讲解一下。 数学式: x y 数学式:\frac{x}{y} 数学式:…...
CMakeList 编写示例
cmake_minimum_required(VERSION 3.8) #指定cmake的最小版本 set(PROJECT_NAME Untitled_1) #初始化变量 project(${PROJECT_NAME} VERSION 1.0) #创建一个project set(CMAKE_AUTOMOC ON) #初始化内置变量, 该变量为Qt工程专属变量 set(CMAKE_AUTORCC ON) set(CMAKE_A…...

OSI笔记
由7层组成,由下自上分别为: 物理层(硬件方面,例如物理网络设备、布线电缆、光纤等), 传输数据主要是比特流0 1 、电信号数据链路层(确定了0 1 的分组方式,通过广播的方式࿰…...
C++之前置声明
在C中,前置声明是一种声明类或函数的方式,但并不定义它们。 前置声明的主要目的是为了解决编译时的依赖性问题,提高编译效率,并允许更灵活的代码组织。 原理 C前置声明可以减少头文件依赖的原理在于,通过前置声明&am…...

用3D扫描生成合成数据
合成数据集(Synthetic Datasets)正在成为计算机视觉模型训练的标准部分。 虽然新工具使合成数据集变得更容易访问,但除了标准机器学习过程之外,许多工具还需要对 3D 建模有基本的了解。 最简单的捷径是从现实世界中获取现有对象并…...
pip安装依赖报错
执行命令时 pip install --upgrade pip 报错: pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。pip install --upgrade pip~~~ Category…...
规范的项目流程图怎么写
编写规范的项目流程图可以遵循以下步骤: 1.明确项目目标:首先,明确项目的目标以及需要实现的结果。这有助于确定项目的范围和要求。 2.识别项目任务:识别和列出所有的任务,这可以包括获得资源、实施动作、收集信息等…...
模型部署笔记--Pytorch-FX量化
目录 1--Pytorch-FX量化 2--校准模型 3--代码实例 3-1--主函数 3-2--prepare_dataloader函数 3-3--训练和测试函数 1--Pytorch-FX量化 Pytorch在torch.quantization.quantize_fx中提供了两个API,即prepare_fx和convert_fx。 prepare_fx的作用是准备量化&#…...

解决XXLJOB重复执行问题--Redis加锁+注解+AOP
基于Redis加锁注解AOP解决JOB重复执行问题 现象解决方案自定义注解定义AOP策略redis 加锁实践 现象 线上xxljob有时候会遇到同一个任务在调度的时候重复执行,如下图: 线上JOB服务运行了2个实例,有时候会重复调度到同一个实例,有…...

云安全(1)--初识容器逃逸之特权容器逃逸
文章目录 前言privileged,特权容器逃逸环境配置实际利用实际环境利用计划任务/var/spool/cron/crontabs/ 适用于ubuntu debain/var/spool/cron 适用于centos ld.so.preloadssh 前言 在10.15号的上海中华武数杯的渗透赛里做到了一个k8s的题目,这应该是我第一次在比赛…...

二阶系统时域响应
二阶系统微分方程 二阶系统传递函数 二阶系统单位阶跃响应 过阻尼系统 临界阻尼系统 欠阻尼系统 无阻尼系统 二阶系统阶跃响应仿真 在Matlab中进行仿真,设置不同阻尼比2、1、0.5和0,可以得到结论: 阻尼比越小,系统响应速度越快&…...

mstsc改端口为33389
windows 远程默认端口3389不太安全,改成33389防下小人 把下面的2个文本存在后缀.reg的文件,双击导入注册表,"PortNumber"dword:0000826d 这个就是33389对应的端口号的16进制值,要想自己改成其它的换下值即可 Windows …...

经典算法试题(二)
文章目录 一、岁数1、题目2、思路讲解3、代码实现4、结果 二、打碎的鸡蛋1、题目2、思路讲解3、代码实现4、结果 三、分糖1、题目2、思路讲解3、代码实现4、结果 四、兔子产子1、题目2、思路讲解3、代码实现4、结果 五、矩阵问题1、题目2、思路讲解3、代码实现4、结果 六、谁是…...

Linux——生产者消费者模型
目录 一.为何要使用生产者消费者模型 二.生产者消费者模型优点 三.基于BlockingQueue的生产者消费者模型 1.BlockingQueue——阻塞队列 2.实现代码 四.POSIX信号量 五.基于环形队列的生产消费模型 一.为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...

HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解
文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...