成为程序员后我明白了什么?分享11条经验助你成功

文章目录

  • 前言
  • 自我分析
  • 做什么
  • 挑战
  • 路线图
  • 总结


前言

在这里插入图片描述

入行15载,从一线大头兵,到负责技术的架构师,再到技术和管理一把抓的团队负责人,我从中总结了软件工程师成功入门的11个步骤,分享给想入行,或刚入行的同学们。


自我分析

讨论如何成为优秀软件工程师之前,首先要搞清楚自己适不适合走这条路。你是否具备以下特质呢?

1. 喜欢解决棘手问题

作为一名软件工程师,你需要运用智慧和创造力来解决难题,你的价值来源于为老板或客户解决这些令人头疼的问题。

2. 喜欢沉浸式研究某个主题

要成为一名软件工程师,你需要学习许多复杂的技能,并且要不停地学习。如果你喜欢学习并以此为乐的话,这对你来说可能是完美的职业。

3. 希望与他人一起实现宏大的目标

“独行侠”和“孤胆英雄”往往只是神话。大多数情况下,你必须领导其他人,或与他们合作,才能解决问题。

如果你是一个喜欢挑战、乐于学习并善于合作的人,那么你已经具备了成为一名优秀软件工程师的素质。


做什么

虽然你已经具备了条件,但是别急,先来了解一下软件工程师平时都在做什么。你是否对这些工作充满兴趣?

  1. 确定客户的问题,通过升级软件程序来解决
  2. 运行新软件或现有软件的测试
  3. 修正系统或应用程序的问题
  4. 从头开始构建新程序
  5. 管理软件工程项目(通常是同时管理多个项目)
  6. 利用设计模型来详细地理解或呈现项目
  7. 迭代新版本的代码
  8. 对团队的产出进行质量控制
  9. 记录并完善研发流程
  10. 使用生产力工具提升工作效率
  11. 与客户沟通需求和方案
  12. 编写高效代码
  13. 成为年轻工程师的导师
  14. 向团队中任何需要帮助的人提供帮助

写代码,绝不是软件工程师唯一的工作,它只是最基础的工作。如果只会写代码,很难成为一名优秀的软件工程师。


挑战

假设你已经下定决心要成为一名软件工程师,那么你还将面临下面几项挑战。

1. 你必须努力提高沟通能力、团队合作能力和领导能力

绝不要当一名“独胆英雄”,你需要:

  • 承担自己范围内的工作责任
  • 与团队成员一起协同工作
  • 与客户保持沟通

注意,这里的客户指的是工作上的客户,也就是为你的工作直接提出需求的人,而不仅仅是产品的用户。

如果缺乏沟通或公开演讲能力,那你需要尽快弥补这一短板。对于某些性格内向的人来说,这确实是一项不小的挑战。

但是,一旦掌握了这些软技能,你的职业生涯将轻松10倍。

2. 这项工作需要严谨地对待

系统性思考是软件工程师的杀手锏。只有系统性思考才能真正解决一个问题。“差不多解决了”、“我也不知道怎么就解决了”、“感觉没问题了”,这些撞大运的方法不是解决方案。

在工作中系统性地处理一个接一个的难题,这需要你保持专注力,用毅力来克服这些障碍。


路线图

一切就绪,接下来我们来讨论一下如何从零开始成为一名软件工程师。

1. 寻找动机并明确目标

许多人因为觉得难而放弃,但如果你有一个强有力的“为什么”,那么当你遇到困难时,坚持下去就容易得多。

2. 挑选职业路径

软件工程师有不同的方向。选择一个你想专攻的领域,并开始努力成为最优秀的。

以下是一些软件工程师的职业发展方向:

  • 软件集成
  • 质量保证
  • 游戏开发
  • 安全工程
  • 自然语言
  • 机器学习
  • 大数据库/数据库
  • AI

3. 学习一门首选编程语言

可以按照下面的步骤进行:

  1. 选择一门最有用的编程语言。它最好与你的职业发展方向匹配。其实,编程语言本身并不重要,重要的是要从长远角度考虑。学习一门语言,不能仅仅是因为“简单”。
  2. 正确地开启学习之旅。不要找一次性教会你太多东西的学习材料。你应该去找适合初学者的材料,而不是完整的技术栈参考手册。
  3. 立刻开始编程。在学习过程中,确保进行实际编程,运用学到的每个概念,不要放过任何一个疑点。
  4. 开始构建小型项目。当你对一门语言有了基本了解之后,需要将它运用到实际工作中,并找出差距。从一些简单的小型项目开始,不要让架构和设计技能阻碍你继续学习。

4. 了解编程基础和最佳实践

为了学习如何编写易于理解和维护的代码,你需要阅读大量的优秀代码。这个阶段,可以阅读一个经典的代码设计书籍,例如《代码大全》、《重构》和《编程珠玑》等。

5. 学习数据库技术

建议选择一本关于SQL技术的好书,并创建一些小的示例项目,这样就可以在练习中进行学习。

此外,还需要学习某种对象关系映射技术(ORM)。寻找适合你所学框架的ORM技术。可能会有几个选择,所以你最好选择最受欢迎的一个。

6. 通过实习积累经验

我建议一旦有实习机会,你就开始准备和申请。迈出第一步往往是最困难的。

光有知识和技能,没有工作经验,你很难被公司录用,所以要抓住任何一次实习的机会。

7. 保持信息通畅

永远不要停止学习。永远不要停止阅读。

如果在职业生涯中不断学习,你就会不断超越同龄人。以下是可以随时了解软件工程行业发展趋势的途径:

  • 活动和会议
  • 新闻
  • 博客
  • 书籍

8. 掌握所有软件工程师技能

确保你具备成为一名优秀软件工程师所需的所有硬技能和软技能,这些技能包括但不限于:

  • 批判性思维和注重细节
  • 沟通技巧
  • 合作的心态
  • 时间管理
  • 多任务处理
  • 故障排除
  • 测试方法
  • 数据库的设计与开发
  • 责任心
  • 能动性
  • 有信念
  • 值得信赖

9. 编写简历

可以把简历看做是一页广告。你唯一需要做的,就是在15秒内抓住面试官的眼球,让他对你产生兴趣。

要非常清楚地描述,你的技能和专长是什么,你是如何利用它们取得成就的,以及这些技能对你申请的职位有何作用。

10. 应聘第一份工作

找工作是所有事情中最困难的。即使你遵循了我所说的所有内容,并且具备一名优秀软件工程师的素质和技能,也可能还是没人给你机会,除非你能找到正确的定位。

11. 提升面试技巧

提前几个月做好准备,研究编程问题,和朋友进行模拟面试,包括但不限于以下内容:

  • 面试官常问的非技术性问题
  • 思考和行为模式问题
  • 计算机科学基础知识
  • 编程知识
  • 实际项目经验

总结

以上11条,是我根据多年辅导年轻工程师的经验总结出来的,看似说了很多,又好像什么都没说?

道理大家都懂,但是能做到的很少。

不过,你要问我成为程序员后最大的收获是什么?

让我明白什么是最佳职业:保持终身学习,在自由竞争的市场中,进行创造性表达(包括创造性解决问题)。

如果喜欢这篇文章,请不要忘记关注、点赞和收藏哦!
您的鼓励将是我创作的最大动力!

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

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

相关文章

TCP/IP协议—MQTT

TCP/IP协议—MQTT MQTT协议MQTT协议特点MQTT通信流程MQTT协议概念 MQTT报文固定报头可变报头有效载荷 MQTT协议 消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)是一个基于客户端-服务器的消息发布/订阅传输协议。它的设计思想…

2.Vue简介

Vue简介 Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,V…

5.SpringBoot 配置文件

文章目录 1.配置文件作用2.配置文件格式2.1项目中同时存在两种配置文件2.2application.properties2.2.1 application.properties语法格式2.2.2获取自定义配置项 2.3 application.yml2.3.1 application.yml语法格式2.3.1.1单双引号区别2.3.1.2和application.properties格式对比&…

在Postgres中,如何有效地管理大型数据库的大小和增长

文章目录 一、定期清理和维护1. VACUUM和ANALYZE2. 删除旧数据和归档 二、分区表三、压缩数据四、配置优化1. 调整维护工作负载2. 监控和日志 五、使用外部存储和扩展1. 外部表和FDW2. 扩展和插件 六、定期备份和恢复测试结论 管理大型数据库的大小和增长是数据库管理员&#x…

NIMAX下载安装使用,pyvisa基本使用

NIMAX部分: 1、先在NI官网下载系统配置和NI-VISA: 系统配置: https://www.ni.com/zh-cn/support/downloads/drivers/download.system-configuration.html#532687https://www.ni.com/zh-cn/support/downloads/drivers/download.system-conf…

基于springboot+vue+Mysql的社区维修平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

C++中的继承与多态

一、继承: 1.什么是继承? 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象…

记录:阿里云服务器网站搭建(2)

Docker安装Mysql mysql版本 查看开发环境中mysql版本 :select version();安装时版本尽量保证一致,最低要求大版本要一致 docker 拉取mysql镜像 docker pull mysql:8.0.36 docker启动mysql容器 docker run -d \ # 创建并运行一个容器&…

【Godot4.2】太极八卦图绘制

概述 作为中国传统文化符号之一,太极八卦图,无论是哲学还是玄学,都不可能避开。 之前在ShapePoints函数库实现了太极的点求取函数。当时采用的时圆弧拼接的方式,但是存在某些尺寸下多边形无法三角化的问题。 于是就有了今天的内…

Windows使用freeSSHd搭建sftp服务器

一、安装 1、运行freeSSHd.exe(最好以管理员方式运行) 2、选择安装位置 3、选择全部安装 4、是否创建开始启动栏快捷入口 5、是否创建桌面快捷方式 6、安装 7、安装完成,点击close 8、安装私钥 9、是否要安装为服务 10、全部安装完成 二、配…

不同条件累加(C语言)

一、题目&#xff1b; 二、N-S流程图&#xff1b; 三、运行结果&#xff1b; 四、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;float result1 0;float result2 0;float result…

3、MATLAB中矩阵和多维矩阵介绍

文章目录 一、矩阵二、矩阵举例三、定义变量四、定义矩阵五、获取变量值 一、矩阵 MATLAB中数据的基本格式是矩阵&#xff1b; 二维矩阵是一个带有以行和列排列的元素的矩阵表&#xff1b;如果右m行、n列&#xff0c;这个矩阵的大小就是m x n&#xff1b;多维矩阵的维数大于2…