每次与刚入行的朋友聊求职话题,总绕不开一个关键点:先明确自己是哪种类型的程序员,再针对性地投递简历。单纯会写代码远远不够,市场真正需要什么样的技能、面试该怎样准备,这些才是决定你能走多远的核心因素。知己知彼,方能百战不殆。在等待主考官提问之前,不妨先自我评估,问清楚下面这几个问题:

1、你是系统程序员,还是应用程序员?
系统程序员日常与维持计算机系统运行的代码打交道,框架、工具、编译器、驱动程序、服务器都是他们的主战场。听众主要是其他程序员,很少与非技术背景人士交流。而应用程序开发者则不同,他们编写的是面向普通用户的程序,日常工作难免要与非技术部门的同事反复沟通。
2、你喜欢设计和开发用户界面吗?
如果你恰好擅长这个,那真是运气不错。UI设计对细节要求极高,很容易被挑剔,要把它做得漂亮更具挑战性,尤其是还要兼顾国际化与易用性这些复杂因素。
3、你善于调试代码吗?
在自己的代码里找Bug已经够头疼了?想象一下帮别人排查问题是什么滋味。这项工作需要极强的分析能力和问题解决能力。找出并修复那些隐藏的缺陷虽然价值巨大,但绝非人人都适合承担。
4、你喜欢做测试吗?
测试,行业内常称为品质保证(QA)。很多初级程序员看不起这个岗位,但有经验的老手都清楚独立测试的重要性。优秀的测试人才非常稀缺。而且,编写测试工具和自动化测试用例本身也需要扎实的编程功底。
5、你更想成为架构师,还是纯粹的编码员?
每个编程岗位都离不开设计,但有些工作对设计能力的要求更高。如果你享受设计远胜于写代码,那么软件架构师的职位可能更适合你。当然,架构师少不了与人沟通,实际动手写代码的机会反而减少,甚至完全不写,但你必须深刻理解代码的运行机制,才能做出有效的架构决策。想走这条路,通常需要从编码做起,再通过设计项目和整合模块来证明自己的能力,除非你有机会接受正规的架构培训。
以上问题,旨在帮你明确自己偏好的工作方式。下面还有几个与编码无关、但同样需要认真考虑的点:
6、你对管理岗位有兴趣吗?
有些人的长期职业规划就是做经理,但也有人一想到管理就浑身不自在。如果你目标是管理层,就需要有意识地培养领导力,证明自己不仅能解决技术难题,还能处理好开发过程中与人相关的问题。如果你压根不想管人,就去找那些提供良好技术成长路径的公司,避免为了晋升而被迫担任小主管。
7、你想去大公司吗?
大公司的优势与劣势都很明显。优势在于稳定,有清晰的职业发展路线,品牌知名度高,非技术圈的人也听说过。但另一方面,大公司里复杂的规章制度、严格的管理流程以及内部竞争,也可能让人感到压抑。
8、你想去小公司吗?
薪资可能没那么高,但如果公司做起来了,作为早期加入的员工,你能获得不少收益——有时回报相当丰厚。坏处也很直接:大部分初创公司会失败,你可能干一两年就要重新求职。
9、你更偏爱开源项目吗?
绝大多数编程工作涉及知识产权,代码是封闭的,这让部分程序员感到不自在。如今行业里也有向开源转变的趋势,为这类开发者提供了不少既能参与开源项目又能赚钱的机会。
10、你想做长期项目,还是短期项目?
有些人喜欢变化,每个项目最多待几个月。如果你也如此,并且不介意出差,那么去咨询公司可能比传统公司更合适。关键你要明白,这些问题没有标准答案,也没有对错之分。但你对这些问题回答得越诚实,就越有可能找到那份真正让你热爱的工作。
