后端工程师如何准备面试作品集

2019-12-07 in 面试多职业研究



后端工程师如何准备面试作品集

从事软件工作或学习的人,多半耳濡目染作品集/ side project 的重要性,因为学软件开发就是要不断练习,透过实作去熟练技术与概念,进而融会贯通。

因此,很多职业工程师下班会做side project 练习新技术,避免长久待在熟悉的领域流失竞争力。而没有相关经验的转职者,更需要完整的作品集,让雇主能放心给你offer。

讲到这里,或许你心里会OS:我的作品集要做什么?

面试多建议,如果你要应征前端工程师,在codepen 上已经有很多精美的切版、互动式网页、CSS 动画等玲琅满目的作品可以参考。

但相较于前端,后端作品集的范例少很多。后端的作品集重点不是前端介面,而是需要有结合资料库、伺服器,有完整功能的网路应用程式,例如一个简易的购物车系统、会员系统,展现即战力。

四步骤规划你的后端求职作品集

我认为,有竞争力的作品集,在题材技术呈现都需要下功夫。在程式工作打滚了5年多,从菜鸟工程师到现在有能力带后辈,我将在这里分享分享后端工程师作品集的建议。若你想在短期内求职/转职,向未来的雇主证明你的实力,记得把这篇文章收藏起来!

第一步:厘清作品集的目的

想学习新技术自我精进的人,和短期有求职需求的人,side project/作品集的取材方向大不相同。

虽然网上有许多大大展示好玩的side project,其重点可能不在技术而是创意。但工程师的side project 通常是为了实验新技术,不一定与工作相关,也不一定要求完整性。

如果你的目的是求职,作品就不是好玩就好,而要能展示你的「火力」,也就是技术能力!尤其是没相关经历背书的人,更需要作品集证明自己有实作能力,不是只会说得一口好程式。

第二步:用作品集展现后端核心技能

Project Ideas:后端基本作品集的4 大主题

现在非本科系的转职者越来越多,而愿意考虑这类求职者的面试官,虽然初期的期待不会太高,但还是会希望求职者能展现符合职缺的核心技术,至少能够处理简单的后端开发、有学习热忱,才能放心地给offer。

换言之,junior后端工程师的求职者首要目标是「证明自己有基本后端开发的能力」。那么,什么样的后端作品,能够说服面试官自己有基本能力?

以下提供4 个后端side project 的题材方向:

1. Web API 设计与开发

前后端分离蔚为主流的现在,Web API开发几乎已成为后端工程师的标配,尤以RESTful API最为热门。以Web API为主轴实作的side project,可以挑选任何需求主题,例如购物车、社群网站等,选择非常多元,重点在于你如何设计Web API的架构

展示重点:

  • Web API 基本设计与开发能力
  • 熟悉程式语言的特性
  • 框架的运用能力(以应征Node.js 开发者为例,你也要了解Express.js 框架的基本运用)

2. 资料库串接与设计

前端的重点在于使用者介面的互动,后端的重点则在于资料的处理,任何资料要能永续储存,必然少不了资料库,因此资料库操作可说是后端必备技能。

关联式资料库(RDBMS) 一直是资料库中的显学,而近年随着大数据水平扩充需求的崛起,NoSQL 类型资料库的应用也越来越多。

以市场需求来说,建议求职者至少熟悉一种关联式资料库(MySQL, MSSQL, etc.),并对SQL 语法操作有基本经验。想练习NoSQL 的话,MongoDB 是目前很热门的免费选项。

展示重点:

  • 资料库串接能力
  • 能够设计相对复杂的资料库结构建议作品集要包含数个多对多的资料库
  • 正规化、ACID 等资料库相关观念

3. 串接3rd-Party API

产品级服务往往不会只有一个系统独挑大梁,而是多个系统互相沟通支援。例如电商拍卖网站的结帐功能,除了自家系统的订单逻辑处理,通常还需要呼叫第三方金流系统的API。

因此,除了能自己写程式,懂得如何看懂文件呼叫第三方API 也是重要技能。

展示重点:

  • 与第三方系统串接合作的能力
  • 看得懂第三方API 文件
  • 知名第三方API 的使用经验(如果串接的是Facebook API、LINE API 等知名API,通常有额外加分)

4. 测试

在工程师的工作中,测试是很重要的一环,确保你开发的软体符合需求。若你的作品有附上自动化测试(例如单元测试),除了展现你有写测试的能力、也证明你是负责任的工程​​师。

第三步:了解面试官怎么看作品集

即使了解后端核心技术,但许多人在构思作品集主题时还是不知从何开始。其实,第一步最重要的是想清楚你的求职方向,面试是很现实的一件事,在有限的曝光机会和面试时间里,要尽量让你的每一分付出都能打在观众(面试官)的心坎上

因此,构思作品集时,请注意以下三点:

1. 聚焦在雇主要的技术能力

规划作品集前请思考:「我希望这个作品展示什么给观众?」

面试官看履历、面试的时间很有限,因此与其准备很多个零碎的专案作品,让人眼花撩乱,不如集中火力将少数两到三个专案做深度雕琢,更有助于聚焦

建议你,先将网路上后端工程师的职缺浏览一轮,自己想好要展示哪些技术经验、规划适合的作品主题,才不会失焦。

2. 与目标职缺、产业的相关性

作品集和目标职缺的相关性越高,越能达到最大功效。相关性有两个面向:

  • 工具、语言相关性

例如你的职缺目标是「Node.js 后端工程师」,但却端出「Ruby on Rails 作品集」,做得再好,加分效果还是容易打折。因为面试官还得判断你是否有足够能力转换到Node.js、能否顺利上手这份工作。

与其如此,何不一开始就直接用最简单直接的方式,写个Node.js 的作品,证明你的能力符合这个职缺要求?

  • 产业相关性

作品集不仅证明技术能力,也是面试问答的好题材,让你获得更多表现的机会。如果专案主题能够和目标公司的产业需求有关,更能吸引面试官的兴趣。

应征电商的工程师职缺时,如果你能够端出购物车、会员系统作品,会让面试官更有兴趣认识你。而且购物车系统虽然老掉牙,但一来这个主题很常见,面试官容易提问;二来购物车已涵盖了一些常见需求(例如会员系统、Session 机制、商品资料结构设计),有助于让面试官快速建立「你已经具备处理这些需求的基本能力」的第一印象。

若应征社群网站工程师,而你自己本身就架过简单的论坛网站,更能证明自己录取后可以快速上手。

相反的,如果今天你想呈现自己的Web API 开发技术,「To Do 代办清单」是非常普遍的教学范例。虽然是很好的练习主题,但以展示效果而言并不那么吸睛,容易给人「还在练功」的印象。

当然,如果你很有创意,也是可以把平淡的主题发展成吸睛的作品。但若没把握,挑一个更接近现实需求的主题、最好能和目标职缺相关,可以事半功倍。

3. 完整性与成熟度

除了技术,面试官也会检视专案的完整性,因为作品集就像一个小产品,专案的成熟度能展示你对系统的规划能力,以及对产品开发的了解

很多人会有迷思:专案完整等于又大又复杂。但实际上专案完整性和规模没有绝对关系,例如一个小规模的会员系统可以只有注册、登入、修改会员资料功能。如果时间有限,你只需要完成几个基本功能,行有余力再增加更复杂的功能。

如果无法判断自己的作品要到多完整,可以参考新创常见的MVP 思维(Minimum Viable Product,最小可行性产品), 协助你将作品聚焦在少数但必要的需求。

第四步:呈现你的作品

开发完成后,你还可以做一点以下工作,让作品更加分:

1. 加上简单的前端介面展示专业度

比起前端专案会有现成的画面,后端专案常会有资料或架构不易展示的困扰。但毕竟「一张图胜过千言万语」,若行有余力,建议加上视觉化展示。虽然多一点额外功夫,却能让亮点更容易被看见,也帮助你在面试时展示和沟通。

例如购物车后端Web API,就用几个简易的前端画面,呈现和后端串接结果;或是纯数据分析的作品集,就找容易上手的既有图表Library 将分析结果展现在前端。

后端专案的前端介面不需要动画之类的华丽特效。虽然说不用花俏,但简洁不等于简陋。我看过非常「务实」的展示画面,没有任何CSS,整个画面的元件例如按钮、栏位,都是预设挤在左上角,连置中对齐都没有,配上白底画面,十足像是学生作业,反而让专业印象扣分。

2. 上传到GitHub,并清楚条列技术亮点

版本控制是软体工程师的必备技能,开源更是近年软体发展主流。把作品集上传到GitHub (或其他版控服务网站) 是必备步骤,即使面试官没有细看,也能达到以下效果:

  • 暗示自己具备版控、 Git 操作经验
  • 有开源、与社群接轨的观念
  • 可以给人一种专业软体人的印象(误)

不要期待每个面试官都有时间和耐心,愿意深入了解你的作品。因此,在每个专案的repository中,请在README列出这个专案的目的、功能、使用的技术以及想要解决的问题。总之,直接把你希望面试官看到的亮点列在README就对了!

条列式是最推荐的描述方式,让面试官能快速抓到重点。例如你想展示在这个作品中使用了MySQL,表示有设计关联式资料库的能力;或是运用了JavaScript 的Promise 技巧减少callback hell,请清楚写出来不要模糊带过。

3. 部署到云端

把应用程式从本机部署到云端也是后端工程师的基本能力。初学者可以用快速方便的Heroku,如果愿意花点功夫部署到企业惯用的AWS 或GCP,虽然难度更高,但更可以展现专业。

成功转职后让你的作品再升级!

作品集的主题也会随着职涯阶段而改变,当你有后端工作经历后,通常「基本能力」就不会再被质疑。这时,你的作品集亮点就会是更深入、更进阶的软体开发实务,例如开发框架的原理、安全性和效能优化、撰写测试、TDD/BDD经验、CI/CD等,有非常多议题值得后端工程师挑战

发表评论

电子邮件地址不会被公开。 必填项已用*标注