转行做程序员,多晚都不晚
大家好啊,我是董董灿。
最近有不少小伙伴加我微信咨询一些问题,有同学想了解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信号量 五.基于环形队列的生产消费模型 一.为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
