我想成为哪种开发人员?
结论
无论您是刚刚踏入技术领域,还是已经走了一半路,或者已经完全融入其中,回顾您的职业生涯并问自己以下几个问题始终是一个好习惯:
(我们假设此时您已决定追求“开发人员”/“工程师”/“程序员”的生活 - 如果您正在寻找“技术对我来说是正确的选择吗?”的文章,那么本文将不会涵盖它。)
-
我为什么要追求这个角色?
- 我为什么担任现在这个角色?
-
我对于我所追求的事物还充满热情吗?
- 我是否仍然对我所做的事情充满热情?
-
我下一步想去哪里?
考虑到这些问题和可能的答案,让我们考虑一些选择,以帮助您建立最适合您的职业道路!
我想说的是,这篇文章并非泛泛而谈,我写这篇文章的目的是为了激励或重新激励人们选择自己的职业道路。你应该继续研究一下开发人员拥有的各种头衔,并决定哪种最适合你。
旅程
工程师的职业生涯通常会永远向前发展,正如我们常说的“永远的学生”。然而,一开始它确实沿着这条线发展,所以当你考虑职位时,要考虑你在这个时间线上处于什么位置。
第 1 章:编程和代码介绍。
这是您作为程序员的旅程的开始;在这里您将学习所有重要的代码基础知识。
第二章:实验
您正处于尝试新事物、学习新语言并发现自己喜欢什么和不喜欢什么的阶段。
第三章:专业化
选择一个重点领域并成为该领域的专家。
第四章:扩展/建立其他技能和/或更多技术性
此时,你知道自己想做什么,并且正在寻找发展领导力、沟通能力、业务拓展能力或学习新语言的最佳方式
……然后你就可以继续构建了。可能性无穷无尽,只取决于你愿意投入多少精力、时间和金钱。
--
快速了解“软件工程师”、“软件开发人员”和“程序员”的含义
我不想过多地谈论“程序员”这个头衔的命名惯例,但我还是想提一下,因为我认为了解它在专业领域的含义很重要。我个人认为它们可以互换。
程序员:这是知道如何编码的人,他们至少了解一种编程语言,并且足够了解它,以至于他们可以通过在计算机中输入代码来实现目标。
有些程序员大学毕业,拥有计算机科学学位,知道如何编写代码。他们有资格。还有一些程序员拿起书本,自学编写代码。他们也有资格。
开发人员:当人们谈论开发人员时,他们有时用这个词来指代的不仅仅是程序员。程序员会问我:“我应该写什么代码?”或者“你想让我怎么做?”在这种情况下,我负责做更重要的决策,而程序员负责具体实施。
开发人员拥有丰富的经验,他们之前遇到过各种问题,并且知道哪些方法有效,哪些无效。对于开发人员来说,你通常可以描述一个目标,然后他们会设计自己的路线。程序员和开发人员之间的区别在于程度。一个比另一个更有资源。从一种职业转变为另一种职业需要时间、精力和经验。
工程师:对一些人来说,软件工程师的职业发展完全不同。这是因为这个术语里有“工程”这个词。
提醒一下,软件工程师从哪里/如何获得知识并不重要。这并不意味着他们必须拥有学位。工程是一门学科。它要求你掌握一系列知识。工程需要一定程度的抽象思维。我们讨论的不仅仅是在编写代码之前制定计划。我们讨论的是创建系统各部分如何运作的心理模型。这些模型可以帮助你完善设计。
结论:归根结底,真正重要的是你想如何称呼自己,以及你相信自己是什么。你的称呼没有“对”或“错”(只要你对自己诚实)。本文只是想谈谈一些业内人士对这个称呼的看法。“优秀的程序员就是优秀的程序员,无论他们有什么特殊的头衔。 ”
--
路线图——从哪里开始。
所以,如果你搜索过不同的“开发者”头衔,你很快就会发现,有大约100个不同的职位可供选择。刚开始的时候,缩小范围可能会很困难,但好消息是,很多职位都可以归类到更大的“伞状”职位中,帮助你缩小范围。
前端开发人员
通过将数据转换为图形界面供用户查看和交互来构建网站。他们主要关注的是呈现层;他们需要具备一定的艺术视野来呈现数据;这通常意味着需要掌握 HTML、CSS、一些 CSS 预处理器(例如 SAS)以及一些(主流)JavaScript 框架(例如 Angular、React 或 Vue)。
应具备的非技术素质:
- 项目管理
- 良好的沟通
- 时间管理
- 快速有效的决策
- 在压力下工作
- 注意视觉细节
我合适吗?
- 我喜欢与人合作,无论是团队成员还是客户,并且能够将某人的想法变成现实。
- 我可以在压力下很好地工作,我可以处理别人对我的关注以及我的工作
- 当情况紧急时,我可以对项目功能、特性和截止日期做出是或否的决定
技术技能
HTML、CSS、Vanilla JS、jQuery、内容管理系统
奖励:UX/UI 设计技能、Adobe Suite、品牌推广、创建指南样式
各种标题
- 前端工程师/开发人员
- 网页开发人员/网页设计师
- 前端架构师
- 表示层开发人员
- 界面开发人员
思维
模型/故事板
从客户、用户体验/用户界面设计师或设计团队处获取模型或故事板。 行动计划 思考构建每个组件所需的时间;是单页还是多页?数据从哪里获取?哪些内容需要持续更改? 构建动态代码 创建任何开发人员都可以阅读和迭代的代码。 在多个页面上充分利用可复用代码 HTML 正确标记和标识项目,以便能够在 CSS 中或通过 CSS 程序轻松访问它们。
<head>
<meta name="description" content="">
<meta name="author" content="Tooplate">
<title>ArtXibition HTML Event Template</title>
</head>
<body>
<div id="js-preloader" class="js-preloader">
<div class="preloader-inner">
<span class="dot"></span>
<div class="dots">
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
</body>
JavaScript
创建基于组件的元素并设置代码样式,使其易于操作且易于阅读。请注意,创建某个内容时,您需要能够思考它在哪里以及如何在其他地方使用。
function focusable( element, isTabIndexNotNaN ) {
var map, mapName, img,
nodeName = element.nodeName.toLowerCase();
if ( "area" === nodeName ) {
map = element.parentNode;
mapName = map.name;
if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
return false;
}
img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
return !!img && visible( img );
}
return ( /input|select|textarea|button|object/.test( nodeName ) ?
!element.disabled :
"a" === nodeName ?
element.href || isTabIndexNotNaN :
isTabIndexNotNaN) &&
// the element and all of its ancestors must be visible
visible( element );
}
CSS
将样式与模型相匹配,同时通过应用适当的类和 ID 使其最具活力。
html, body {
font-family: 'Poppins', sans-serif;
font-weight: 400;
background-color: #fff;
font-size: 16px;
-ms-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
text-decoration: none !important;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0px;
margin-bottom: 0px;
}
支付
在美国,在中型公司拥有 1-3 年经验:约 97,000 美元(初级)
在美国,在中型公司拥有 8 年以上经验:约 124,000 美元(高级)
需要考虑的事情
- “Web 开发人员”是开发领域搜索量排名第一的职位
- “前端工程师”排名第四
你应该重新考虑一下...
- 你不需要拥有出色的沟通技巧
- 不喜欢和很多不同的人一起工作
- 压力之下破裂
- 你不是最注重设计的人,也不想成为
- 你不擅长管理多个任务和截止日期
后端开发人员
构建网站的功能和交互性,包括允许用户执行登录、创建帐户和输入用户数据等操作的元素。后端开发人员负责实现业务逻辑。他们必须具备框架、软件架构、设计模式、数据库、API、互联互通、DevOps 等知识。他们需要能够管理抽象概念和复杂逻辑。
应具备的非技术素质:
- 逻辑性和解决方案导向
- 抽象思维
- 模式识别
- 与团队沟通
- 注重细节和安全
- 研究员
我合适吗?
- 当我遇到问题时,我喜欢花点时间写下解决方案以及如何解决
- 我一直在寻找更有趣的方法来解决问题并使其具有适应性——它并不总是关于什么是“最短的”
- 我喜欢创建系统来更有效地执行任务
- 我希望确保在做某事之前已经计算过风险,并与他人协商
技术技能
Python、Java、PHP、MySQL、C、C++、Ruby
各种标题
- 软件工程师
- 后端工程师
- 数据工程师
- SQL/Java/[语言]工程师
- 网络工程师
思维
来自服务器/网站/网络的数据 创建一个框架,用于确定数据的来源和去向以及功能(如何处理数据)
构建代码时,不仅要考虑时空复杂度,还要在必要时保持动态性。数据应易于其他团队访问,并在重要数据传递的地方采取安全措施。注释应便于其他工程师轻松迭代。
class Job:
def __init__(self, start, finish, profit):
self.start = start
self.finish = finish
self.profit = profit
# A Binary Search based function to find the latest job
# (before current job) that doesn't conflict with current
# job. "index" is index of the current job. This function
# returns -1 if all jobs before index conflict with it.
def binarySearch(job, start_index):
# https://en.wikipedia.org/wiki/Binary_search_algorithm
# Initialize 'lo' and 'hi' for Binary Search
lo = 0
hi = start_index - 1
# Perform binary Search iteratively
while lo <= hi:
mid = (lo + hi) // 2
if job[mid].finish <= job[start_index].start:
if job[mid + 1].finish <= job[start_index].start:
lo = mid + 1
else:
return mid
else:
hi = mid - 1
return -1
# The main function that returns the maximum possible
# profit from given array of jobs
def schedule(job):
# Sort jobs according to start time
job = sorted(job, key = lambda j: j.start)
# Create an array to store solutions of subproblems. table[i]
# stores the profit for jobs till arr[i] (including arr[i])
n = len(job)
table = [0 for _ in range(n)]
table[0] = job[0].profit;
# Fill entries in table[] using recursive property
for i in range(1, n):
# Find profit including the current job
inclProf = job[i].profit
l = binarySearch(job, i)
if (l != -1):
inclProf += table[l];
# Store maximum of including and excluding
table[i] = max(inclProf, table[i - 1])
return table[n-1]
# Driver code to test above function
job = [Job(1, 2, 50), Job(3, 5, 20),
Job(6, 19, 100), Job(2, 100, 200)]
print("Optimal profit is"),
print(schedule(job))
支付
在美国,在中型公司拥有 1-3 年经验:约 117,000 美元(初级)
在美国,在中型公司拥有 8 年以上经验:约 154,000 美元(高级)
需要考虑的事情
- 后端开发可以以 BaaS 的形式作为独立服务提供
- 后端 Web 开发人员应该了解网站的目标并提出有效的解决方案,这也意味着要很好地了解前端
你应该重新考虑一下...
- 你通常会在尝试几次后就放弃
- 你会在自己研究之前就迅速向别人寻求答案
- 你的反应更加被动,风险承担程度更低
- 你不喜欢看数据和使用算法
全栈开发人员
能够同时处理应用程序或网站的前端和后端部分。全栈开发人员拥有软件开发各个阶段的专业知识,包括服务器、网络和托管环境;关系型和非关系型数据库;API 交互;用户界面和用户体验;质量保证;安全性;以及客户和业务需求。成为一名全栈开发人员意味着要具备全局视角——在确定逻辑布局之前,要比较后端和前端的优缺点。
应具备的非技术素质:
- 灵活性和适应性
- 非常出色的团队成员和/或团队领导者
- 战略思维
- 沟通技巧非常出色
- 创造力
- 分析
我合适吗?
- 我可以在大多数环境中很好地工作,无论是内部还是外部
- 我很喜欢看到一些看起来很棒,而且用起来也很棒的东西。
- 我喜欢挑战,并决心以最有效的方式解决它们
- 我喜欢详细地计划事情,并能向我的团队传达我能做什么和不能做什么
技术技能
前端语言和框架(HTML、CSS、JS)、后端技术和框架(Python、Ruby、SQL)
各种标题
- 全栈开发人员
- 解决方案工程师
- 全栈质量保证工程师
- 软件开发人员
思维
支付
在美国,在一家中型公司拥有 1-3 年经验:约 96,000 美元(初级)
在美国,在一家中型公司拥有 8 年以上经验:约 128,000 美元(高级)
需要考虑的事情
- 作为一名全栈工程师,你有很多机会成长,并决定是否要继续从事全栈工作或从事更具体的工作
- 由于您能够同时处理前端和后端事务,因此目前您是一位非常抢手的雇员。
你应该重新考虑一下...
- 你不太喜欢同时做设计/创意工作和数据处理
- 你不喜欢与多个团队合作
- 你的时间管理能力不强,或者不喜欢按照比较休闲的时间表工作
移动 iOS 和/或 Android 开发人员
为移动设备(包括 iOS 和 Android)构建应用。移动开发者可能使用 Java、Swift 和 Objective-C。由于移动开发者主要负责应用界面的开发,因此有时也被称为前端开发者。然而,在需要网络连接和服务器通信的更复杂的构建工作中,他们也扮演着后端开发者的角色——因此,通常情况下,他们被称为移动开发者。
应具备的非技术素质:
- 商业知识
- 敏捷方法论
- 协作
- 有创造力的
- 沟通
我合适吗?
- 我真的很喜欢让技术移动化并发挥其功能的想法
- 我喜欢思考人们使用手机的方式以及某些应用程序的运行方式
- 在开始做某件事之前,我喜欢对我的受众以及谁可能会看我的作品做更多的研究
- 我善于接受反馈,能够独立工作,也能在跨职能团队中出色地工作
技术技能
Linux/Unix、Phython、Perl、Shell 脚本、Java、C#、Swift、ORACLE、Apache、iOS
- 设计:用户体验/用户界面
- 奖励:商业研究、业务发展、分析
各种标题
- 移动应用开发者
- 应用开发者
- iOS工程师
- Android工程师
思维
支付
在美国,在中型公司拥有 1-3 年经验:约 94,000 美元(初级)
在美国,在中型公司拥有 8 年以上经验:约 115,000 美元(高级)
需要考虑的事情
- 移动应用开发者的需求将一直很高,而且他们的技能组合与移动环境息息相关。话虽如此,如果你能做到,你就不会失业,也不会觉得很难找到工作。
你应该重新考虑一下...
- 你不经常玩手机
- 不要使用太多应用程序
- 对移动应用不感兴趣
- 不想考虑手机上的互联网
--
结论
我创建这个的目的是帮助大家更好地理解一些最常见的开发者头衔,从而帮助大家成为更优秀的开发者。希望这篇文章对你有所帮助。
鏂囩珷鏉ユ簮锛�https://dev.to/kvyshh/roadmap-to-learning-what-kind-of-developerprogrammerengineer-you-are-2m2j