转行做程序员,多晚都不晚

大家好啊,我是董董灿。

最近有不少小伙伴加我微信咨询一些问题,有同学想了解AI行业的现状,想着转行的,也有在校生想了解毕业后工作方向的,当然也有想学习编程知识的。

诚惶诚恐,没想到之前写的文章,能有这么多小伙伴关注。今天打算挑几个话题结合我的个人经历,写一写我对这些问题的思考。

文章较长,偏意识流,欢迎一起交流~

1、我的就业

图片

这是一个研究方向与计算机视觉有关,但又不是计算机视觉专业的同学发来的。

最近两年CV领域越来越卷,尤其是算法岗,确实导致很多研究CV的同学害怕毕业后找不到好工作。

更何况还有很多其他专业的同学,比如机械、自动化、环境等专业,他们研究的内容也有不少与计算机视觉有交叉。

所以毕业时的竞争压力,除了来自本专业,还有其他专业,更别提还有潜在的来自学校层面985/211的压力了。

但这件事是无解的么? 当然不是。

记得我毕业那会儿,对于未来的职业规划也不清晰。

读研期间,我除了专业知识的学习外,还经常混迹图书馆,看了一些闲书(可惜图书馆在毕业那年拆了),到毕业时,虽然已经拿到了offer准备入职,但仍然对未来有一丝恐惧。

当时就一直在想,未来那么长,我到底要做什么呢?

现在回想,选择工作,看的无外乎就是:发展潜力、自己是否感兴趣、公司平台、工资这些条件。

毕业后的第一份工作,这几样中总得占一样吧。

于是我从机械专业,转行做了程序开发,也算遵循了内心的选择,慢慢的变成了现在的一名攻城狮:敲敲代码,看看论文,学学算法,写写文章。

如果现在有人问我,你找到喜欢的职业了?我会摇摇头,不知道。

前段时间在看一本书,名字叫做《远见》,里面把人的职业生涯划分成3个阶段,每个阶段以15年为限。

第一阶段指的是刚毕业的第一个15年。

这15年是寻找职场兴趣点的15年,这期间,我们有大量的时间来试错,换工作甚至换城市,从而能找准自己未来的职业方向,并且准备在第二个黄金15年里持续为之发力。

这么算下来,我也才刚刚开始。

所以对于职业规划,我的认识是,现阶段随遇而安,喜欢做什么,就去做什么。后两个15年我还远未达到,不清楚该怎么做,遵循内心,去做自己真正喜欢的事情。

所以,上面同学的疑问,读书期间对未来十分迷茫,再加上现在就业越来越卷,这事怎么解?

有解,读书期间就做读书期间该做的事:该写论文写论文,该学知识学知识,该看书看书。就业卷是事实,我们改变不了,能改变的只有自己。

研究生就是步入社会之前的演武场,可以不断尝试,不断犯错,不断纠正。谁也无法确定未来真的会做什么。

喜欢读书就多看书,很有可能,未来的中国,会少一个机械工程师,但是会多一个畅销书作家。

2、我的学习

图片

这位同学用过不少计算机视觉相关的代码库,如OpenCV,但是也仅仅局限于使用,对于视觉算法的了解不太够,更没有亲自实现过某些算法。

这就导致我想到了一个学习的对立面,是应该一知半解还是应该学透原理?

说个我的故事。

记得大学时有一堂课是《理论力学》,老师突然点名让我到黑板上推导一个较为复杂的公式,当时推的什么公式现在已经忘了,但很清楚的记得,在我成功推导出来之后,我潇洒的从讲台上走向自己座位时,走路的姿势都是不一样的。

很幸运,那次上课前,我心血来潮预习的比较充分。可以说,当时的我,对那个公式是“学透”了的。

但大学里众多课程知识点,当时学起来仍然是一知半解,直到毕业,直到现在慢慢的已经记不起来了。

后来在工作中接触了AI算法,才发现,很多知识不参透是不行的,毕竟是工作中吃饭的家伙,容不得半点马虎,稍不注意,程序分分钟报bug给你看。

王国维在《人间词话》中说过人生三境界,而学透一个算法:从了解到手推最后到代码实现,每一步都像是在三境界中升级打怪一般。

了解了某个算法,那就是“独上高楼,望尽天涯路”。

挑灯夜战,十几页纸手推算法成功,那就是“衣带渐宽终不悔,为伊消得人憔悴”。

待到熬夜将代码敲出来,成功跑通算法之后,再回过头来看,那不就是“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”么?

学习,需要经过这些过程,才能真正做到融会贯通。

很感谢研究生期间刘老师的教导,刘老师不仅教会了读研期间需要的专业知识,还花了大量的时间和精力教我们学习和做事方法。“授人以鱼不如授人以渔”,这些方法和态度,都将陪伴终身,一生受益。

3、我的自学

图片

这是一个想系统地自学一些编程知识和计算机体系结构的同学发的。我给他推荐了一些我之前学习看过的书和视频。

自学真的很难,难不在知识,难在坚持。

我第一份工作做程序开发,那时的工作大部分集中在某arm芯片配置寄存器上,并非真正的算法开发,事实上,与算法没有任何关系。

而机械专业出身的我,自然对计算机的知识了解的少之又少。工欲善其事,必先利其器,既然工作用到了,那就缺啥补啥。

感谢互联网的便捷,网上有大量的慕课课程,有编程语言,有计算机考研课程,很成体系,也很细节。

记得当时学一门C++的课程,百度某资深工程师授课,整个课程全是干货,没有半点口水话,几十节课程共20多个小时,我来回听了6遍。虽然课程中的很多知识在工作中并未真正用到,也并未真正全部实践过,但直到现在,里面的很多知识还能顺口说出来。

学习真的是一件很快乐的事。所以自学可行么?当然可行。

自学需要投入大量的业余精力,想学到入门级水平,书籍和课程看一两遍就够了,想学到工作信手拈来的水平,多看几遍,多实战几遍,肯定能上手,如果不行,那就再来几遍。

最后,回归到上面的几个问题,无论是就业,还是上学,还是自学,与其想该如何如何去做,不如找准目标,轻装上阵,干就是了

有句很有名的鸡汤说的很好:“种一颗树,最好的时间是10年前,其次,就是现在。”

小伙伴们,撸起袖子加油干吧。

祝所有看到本篇文章的小伙伴在未来都能收获自己的大树。

点击下方卡片与我联系,一起交流职业成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go开始:Go基本元素介绍

标识符与关键字 在任何编程语言中,标识符和关键字都是核心概念,Go也不例外。标识符用于命名各种类型的代码元素,如变量、常量、函数等。关键字是预留的词汇,用于指示编程语言的特定操作。在本部分中,我们将详细介绍Go语…

如何使用BERT生成单词嵌入?

阿比贾特萨拉里 一、说明 BERT,或来自变形金刚(Transformer)的双向编码器表示,是由谷歌开发的强大语言模型。它已广泛用于自然语言处理任务,例如情感分析、文本分类和命名实体识别。BERT的主要特征之一是它能够生成单词…

Servlet的生命周期

2023.10.18 WEB容器创建的Servlet对象,这些Servlet对象都会被放到一个集合当中(HashMap),这个集合当中存储了Servlet对象和请求路径之间的关系 。只有放到这个HashMap集合中的Servlet才能够被WEB容器管理,自己new的Ser…

【经历】跨境电商公司目前已在职近2年->丰富且珍贵

我入职了跨境电商公司 *背景 上篇说我在2021-11月离职了,交接期间已经拿到了新公司的offer,然后因上家公司项目交接时间比较长(原因在上篇),导致新公司这边延迟了两次入职的时间,最后结果是直接无缝衔接了新公司(周五…

HTML5有哪些新特性?移除了哪些元素?

HTML5引入了许多新特性&#xff0c;以下是其中一些主要的新特性&#xff1a; 1&#xff1a;语义化元素&#xff1a;HTML5引入了一些新的语义化元素&#xff0c;如 <header>、<footer>、<nav>、<article>、<section>等&#xff0c;使得页面结构…

Python学习第3天-第一个Python程序

文章目录 前言一、创建项目二、创建程序总结 前言 下面给大家展示下经典的Hello World! 一、创建项目 二、创建程序 print("Hello World!")总结 回到顶部 学习网站 欢迎来到Python的世界&#xff01;

从头开始机器学习:逻辑回归

一、说明 本篇实现线性回归的先决知识是&#xff1a;基本线性代数&#xff0c;微积分&#xff08;偏导数&#xff09;、梯度和、Python &#xff08;NumPy&#xff09;&#xff1b;从线性方程入手&#xff0c;逐渐理解线性回归预测问题。 二、逻辑回归简介 我们将以我们在线性回…

C嘎嘎之类和对象上

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;掌握类的引用和定义&#xff0c;熟悉类成员函数的…

arrow(c++)改写empyrical系列1---用arrow读取基金净值数据并计算夏普率

用arrow c版本读取了csv中的基金净值数据&#xff0c;然后计算了夏普率&#xff0c;比较尴尬的是&#xff0c;arrow c版本计算耗费的时间却比python的empyrical版本耗费时间多。。。 arrow新手上路&#xff0c;第一次自己去实现功能&#xff0c;实现的大概率并不是最高效的方…

【(数据结构)— 双向链表的实现】

&#xff08;数据结构&#xff09;— 双向链表的实现 一.双向链表的结构二. 双向链表的实现2.1 头文件 ——双向链表的创建及功能函数的定义2.2 源文件 ——双向链表的功能函数的实现2.3 源文件 ——双向链表功能的测试2.4 双向链表各项功能测试运行展示2.4.1 双向链表的初始化…

git切换远程仓库源步骤

git切换远程仓库源步骤&#xff1a; 第一步&#xff1a;git remote -v 查看当前远程仓库源&#xff1a; 第二步&#xff1a;git remote rm origin删除远程仓库源&#xff1b; 第三步&#xff1a;git remote add origin http://newURL.git 添加新的远程仓库源地址&#xff1b…

云安全—分布式基础

0x00 前言 云必然是依赖于分布式技术来进行实现的&#xff0c;所以有必要学习和来了解分布式相关的内容 0x01 分布式计算 1.基本概述 分布式计算的定义&#xff1a;通过网络互联的计算机都具有一定的计算能力&#xff0c;他们之间互相传递数据&#xff0c;实现信息共享&…

用3D扫描生成合成数据

合成数据集&#xff08;Synthetic Datasets&#xff09;正在成为计算机视觉模型训练的标准部分。 虽然新工具使合成数据集变得更容易访问&#xff0c;但除了标准机器学习过程之外&#xff0c;许多工具还需要对 3D 建模有基本的了解。 最简单的捷径是从现实世界中获取现有对象并…

Vue中的v-if和v-show指令有什么区别?

在Vue中,v-if和v-show是两个常用的指令,用于根据条件控制元素的显示和隐藏。虽然它们都可以根据条件来切换元素的可见性,但它们的实现和行为有一些区别。 1:编译时机: v-if是在编译阶段进行条件判断,如果条件为false,则在DOM中不会渲染该元素及其子元素;v-show则是在运…

基于材料生成优化的BP神经网络(分类应用) - 附代码

基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.材料生成优化BP神经网络3.1 BP神经网络参数设置3.2 材料生成算法应用 4.测试结果…

28 mysql 数据记录的 存储更新删除

前言 前面 我们探讨了 索引记录的 新增, 更新, 删除 这里 我们来看一下 mysql 的核心数据记录的 新增更新删除 这里 来看一下 增删改 的相关实现 数据记录 和 索引记录 的处理方式是一致的 mysql 数据记录的存储 新增部分参见 自增长主键的实现 以及 记录的插入 mysql…

keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

目录 keep-alive 使用 keep-alive 的示例代码&#xff1a; 手动清除组件缓存的示例代码&#xff1a; keep-alive 组件有以下几个优点&#xff1a; keep-alive 的原理&#xff1a; 使用 keep-alive 组件&#xff0c;你可以包裹需要缓存的组件&#xff0c;然后这些组件在切…

1.3 矩阵

一、向量与矩阵 下面是三个向量 u \boldsymbol u u、 v \boldsymbol v v、 w \boldsymbol w w&#xff1a; u [ 1 − 1 0 ] v [ 0 1 − 1 ] w [ 0 0 1 ] \boldsymbol u\begin{bmatrix}\,\,\,\,1\\-1\\\,\,\,\,0\end{bmatrix}\kern 10pt\boldsymbol v\begin{bmatrix}\,\,\,…

RemObjects Elements 12.0 Crack

Elements 是一个现代多功能软件开发工具链。 它支持六种流行的编程语言&#xff1a;Oxygene (Object Pascal)、C#、Java、Mercury (Visual Basic.NET™)、Go 和 Swift&#xff0c;适用于所有现代平台。 使用 Elements&#xff0c;您可以为您喜欢的任何平台进行编程- 无论是单…

基于Ubuntu Server编译YTM32 SDK工程

基于Ubuntu Server编译YTM32 SDK工程 文章目录 基于Ubuntu Server编译YTM32 SDK工程需求下载软件包安装与配置配置虚拟机联网模式启用ssh连接启用ftp连接安装armgcc编译工具链确认make工具 验证 需求 在Linux系统环境下搭建SDK的编译环境&#xff1a; 方便加入到持续集成工具…