转行前端一年大概是什么水平

本文是一位转行前端一年的开发者对自己技术水平的反思和总结。他从编码能力、工程能力和管理能力三个方面阐述了自己的成长,包括JavaScript的熟练运用、对工程实践的理解加深以及管理经验的初步积累。他还分享了一年的学习心得,如深入研究原生JavaScript方法,避免过度依赖库,以及在工作中提升CSS和React技术栈的技能。同时,他也提及了对Node.js、Linux、Python、Java和数据库的初步了解,以增强跨领域合作的能力。

水平“仅供参考”

你很可能是通过搜索找到这篇文章的。

刚入行那会儿,整个小团队就我一只前端。我没有参考坐标系,不知道自己水平是什么程度,不知道大家是什么水平,更不知道就业市场对一年工作经验的要求是怎样的。那种感觉,就像是高三了,全班只有自己一个。模拟考考了 XXX 分,但自己也不知道自己能上什么学校。

说白了,对于自己有多菜,完全没有自知之明。没有自知之明的人,容易自大,同时也容易自卑。对此,常常感到惆怅。

当然,一年经验的前端应该达到什么水平,这是没有标准答案的。但是有参考总比没有参考好。

我上网找过不少参考文章,也没有找到什么数据充分的,统计意义上的一年前端水平总结。一年前端的个人总结还是能找到不少的。于是也想贡献自己一部分力量,写这么一篇仅供参考的文章。

落笔的现在,我已经入行一年多了。本文中的技术水平描述,是根据几个月前的初稿还原的,水平描述略有偏差,敬请谅解。

独当一面的螺丝工

虽然刚入行时比较菜,一年时间还是足够成为一个合格的螺丝工的。

入职时,刚好从零开始一个新项目。一年,主导这个两万行级别的小项目。现在若新开一个复杂页面,大体也能知道怎么做,有哪些难点。总体坑踩的还不够多,有些地方还是有种踩下去不知道有多深的感觉的。

下面从编码能力、工程能力、管理能力三方面复盘一下自己一年成长。

编码能力大幅提升。编码能力就是编程语言的驾驭能力。就螺丝工人而言,就是拧螺丝的能力了。虽然现在还不敢说精通 js,但好歹也算是熟练了。回头看自己一年前写的代码,会有一种摔键盘的感觉——写的什么鬼东西。

工程能力小幅的增长。工程能力,可以简单理解为在有限的资源和时间里,达到预期指标的能力。拧螺丝工人脑袋想的是,怎样把这个面板固定在盒子外面。一般可以拧十字螺丝;不想用户随便打开就用三角螺丝;对于时间特别赶的临时面板,甚至可以贴胶布。合理的技术选型是工程能力的一部分。组件之间如何合理划分,怎样才能让组件高内聚,低耦合,也是要思考的问题。噢,对了,一年前我连什么是高内聚,低耦合都不知道。

管理能力增长不大。螺丝工面对一批工件,和几个帮手,怎样组织大家一起完成工作,每天跟踪进度和控制风险,就是管理能力。这一年管理能力没上去,一方面是前半年团队都只有我一只前端,没有帮手可言,另一方面是编码和工程能力没跟上。对一个工件需要加工多久都吃不准时,就更难估计一批工件的加工时间了。

分享一个重要的经验教训。如果你的水平不足以控制风险,那么一定要学会及时汇报风险。新人切忌切忌的一点就是,不知道自己能不能搞得定,却没有及时向上汇报。

技术水平大概这样

工作范围内的问题,都能搞定。还好我们没有根据手机壳颜色改变 app 主题之类的需求。

js 能力。JavaScript 真的是易学难精。目前 js 水平应付工作还是足够的,但是对底层原理还不够深入。个人特别喜欢函数式编程搭配箭头函数。函数式编程是编程的一种乐趣。

初期学 js, 碰到什么学什么,解决了当前的阻塞性问题再说。中期我用过“地毯式”学法,特别管用。当时做的项目对数组处理较多,我就深入研究 js 中数组的相关方法。我花了几天时间,把 W3 上的所有数组方法的 demo 全部敲了一遍。后面做开发,涉及到复杂数据结构转换时,都能比较流畅地写出来,这种感觉是非常棒的。

原生数组方法不够熟时,不太建议一上来直接使用 lodash 库。不然学 js 的感觉就像背一个三方库的接口,感觉很糟糕。熟了原生方法再用 lodash,就能感知到它是怎么封装的。感觉完全不一样。

绘图能力。canvas,svg,d3,echarts,threejs 都试用过。我对计算机图形学是相当感兴趣的。还特别希望深入研究计算机图形学领域。但是项目对绘图要求不高,自己也没能抽出时间来深究,算是第一年比较遗憾的事情。

css。自己写 demo 玩和正式做项目差别还是挺大的。自己玩 demo 的时候,设计时尚大方,空间充足,画面简洁优雅美丽大方楚楚动人简直怎么夸都不为过。画不出的布局,我还能把设计稿给改了。真正项目,需要在错综复杂的元素中,搞出稳定的布局,还不能改方案。这里加功能,这里加按钮,这里弹个窗,这里搞个浮窗。被虐过千百遍之后,现在 CSS 技能算是上去了。

react技术栈。虽然当年入职面试时写的是“熟悉 react”,但是一年后我才敢真正觉得自己熟悉 react。在数据状态方面,幸运或者不幸,原生 state,hook+ context, mobx, redux 我全部都用过。项目现在全部组件为 functional component,使用原生 hook + context 管理状态。

用 react 的过程中,碰过最有意思的一个 bug 是 hook 中的 setTimeout 获取不到最新数据。当时 hook 特性刚出来不久,即使在谷鸽用英文搜,都搜不到太合适的解决办法,只好用全局变量的方法临时规避。后来深入研究 js 才知道,这是因为 js 采用了词法作用域,而非动态作用域的原因。使用 useRef 才比较合理地解决这个问题。

为了做一只更加合格的前端,学了点 Nodejs、 Linux、 Python、 Java、数据库。学 Nodejs 是为了自己写 mockServer。学 Linux 是为了自己部署代码调试。学 Python 是为了和算法的同事打交道。自己写了 100 行左右的很简单的 Python 当转接层,用 Nodejs 拉起 Python 进程来进行简单通讯。学 Java 是为了更好地和后台打交道。搞数据库是为了自己填充自己想要的模拟数据,以便更好地调试前端。这些技能都学得非常浅。对工作的上下游都了解一下,尽量不要被对方阻塞自己的开发,才能更专心地做好前端。

至于移动端,小程序等热门技术,由于当下工作不涉及,没有余力去深入了解。

某互联网公司的大牛(同学)曾向我吐槽,真羡慕我这种编程工作不到三年的新人,因为能纯粹地享受编码和技能进步的乐趣。现在他在公司,其主要价值已经不在于写代码了,技术上的长进也比较慢。被有钱人羡慕的我,真不知道该说什么话好。

尾巴

不鸽的情况下,我未来会写“转行两年”、“转行三年”的文章的,拼接起来的参考意义更大。

感谢你能看到最后。如果对我这个“参考点”感兴趣的话,我之前的这几篇文章不妨一起看看:

28岁裸辞转行前端是怎样的一种体验
我转行前端花了11个月
2019,转行前端一年,我的增删改查

<think>好的,我现在要处理用户的问题,用户想了解从前端开发行到人工智能领域需要学习的内容,包括学习路径和技能。首先,我需要回顾用户之前的对话历史和系统提供的引用内容,确保回答符合用户的需求。 用户之前的问题是关于型的攻略,系统引用中提到了需要掌握机器学习算法、深度学习框架等技术,以及思维方式的变。现在用户进一步询问具体的学习路径和技能,我需要详细列出步骤,并保持结构清晰。 首先,我应该分阶段来规划学习路径,比如基础阶段、进阶阶段和深化阶段。每个阶段需要涵盖必要的数学基础、编程技能、核心算法以及实践项目。同时,结合前端开发者的现有技能,比如JavaScript和Node.js,可以提到如何利用这些技能过渡到AI领域,比如使用TensorFlow.js。 接下来,要确保每个部分都有具体的知识点,例如数学部分需要线性代数、概率统计和微积分;编程方面除了Python,还可以提到前端开发者可能已经熟悉的JavaScript在AI中的应用。然后,核心算法包括机器学习和深度学习的基础模型,如线性回归、CNN、RNN等。 还需要强调实践的重要性,建议参与Kaggle竞赛或开源项目,以及如何将前经验与AI结合,比如开发AI驱动的交互应用。同时,持续学习方面,推荐课程、书籍和社区资源。 在回答过程中,要检查是否符合系统级指令:使用正确的中文,数学公式用$...$,独立公式用$$...$$,并生成相关问题。同时,引用之前的引用内容,比如引用[1]和[2],但根据用户当前问题,可能需要调整引用的相关性,确保引用自然。 最后,生成的相关问题需要与型路径相关,比如数学基础的重要性、前经验的应用、推荐的入门项目以及型所需时间等。确保问题对用户有实际帮助,并引导他们进一步探索。 现在需要验证是否所有系统指令都满足,比如LaTeX格式是否正确,引用标识是否添加,结构是否清晰,分点说明,以及相关问题是否合理。同时,避免使用Markdown格式,保持回答的自然流畅。</think>从前端开发型到人工智能领域需要分阶段构建知识体系,结合原有技术优势逐步过渡。以下是分阶段学习路径及关键技能详解: ### 一、基础构建阶段(3-6个月) 1. **数学基础强化** - 线性代数:掌握矩阵运算$A \cdot B = C$、特征值分解等核心概念 - 概率统计:理解概率分布$P(X=x)$、贝叶斯定理$P(A|B) = \frac{P(B|A)P(A)}{P(B)}$ - 微积分基础:梯度计算$\nabla f(x)$、优化方法 - *前优势迁移*:利用数据可视化经验理解数学模型的几何意义 2. **编程能力升级** - Python深度学习:掌握NumPy矩阵运算$$\begin{bmatrix}1&2\\3&4\end{bmatrix}$$、Pandas数据处理 - JavaScript生态延伸:学习TensorFlow.js框架开发浏览器AI应用 ```python # 示例:利用Python实现线性回归 import numpy as np X = np.array([[1], [2], [3]]) y = 2*X + 1 + 0.1*np.random.randn(3,1) theta = np.linalg.inv(X.T@X)@X.T@y ``` ### 二、核心技能进阶阶段(6-12个月) 1. **机器学习基础** - 监督学习:线性回归$y = \theta_0 + \theta_1x$、SVM$\max\frac{1}{\|w\|}$ - 无监督学习:K-means聚类$\arg\min\sum\|x_i-\mu_j\|^2$ - 模型评估:准确率$Acc = \frac{TP+TN}{N}$、ROC曲线 2. **深度学习突破** - 神经网络基础:前向传播$z=Wx+b$、反向传播$\frac{\partial L}{\partial W}$ - 计算机视觉:CNN卷积运算$\sum_{i,j} W_{i,j}X_{i,j}$ - 自然语言处理:RNN状态更新$h_t = f(Wx_t + Uh_{t-1})$ ### 三、专业深化阶段(12+个月) 1. **大模型技术栈** - 预训练模型:掌握Transformer架构$\text{Attention}(Q,K,V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V$ - 微调技术:LoRA适配器$\Delta W = BA$, $A\in\mathbb{R}^{r×k}, B\in\mathbb{R}^{d×r}$ - 模型部署:ONNX格式换、Web模型优化 2. **全栈AI能力整合** - 前智能应用开发:使用React+TensorFlow.js构建实时图像识别系统 - 工程化能力:Docker容器化、Kubernetes集群管理 - 领域专精:结合原有业务场景(如电商、金融)构建垂直解决方案 ### 四、实践路径建议 1. **渐进式项目实践** - 初级:使用scikit-learn实现鸢尾花分类 - 中级:基于PyTorch开发MNIST手写识别系统 - 高级:利用HuggingFace Transformers构建文本生成应用 2. **技能迁移策略** - 可视化能力:将模型训练过程通过D3.js动态展示 - 工程化经验:将前CI/CD流程迁移到MLOps - 交互设计:开发AI系统的可视化解释界面 ### 五、持续学习资源 1. 课程体系: - 吴恩达《机器学习》(Coursera) - fast.ai实战课程 2. 工具链: - Jupyter Notebook → VS Code → PyCharm - Git → DVC → MLflow 3. 社区参与: - Kaggle竞赛(从特征工程到模型集成) - Open Source项目贡献(如Transformers库) $$ \text{学习曲线} = \alpha \cdot e^{\beta t} + \gamma \cdot \ln(t+1) $$ (其中α表示基础技能化率,β代表新技术吸收效率,γ反映实践经验积累)[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值