致刚入职场的你 - 程序员的成长笔记

前言

我们经常在网上会看到这样的文章,你的同龄人正在如何。这是典型的贩卖焦虑的文章。的确,现阶段,刚毕业几年的年轻人,面临车,房子等,有时候压力挺大的。但你过度焦虑的话,每天生活在恐慌当中,你会发现你生活过得一团糟。对比一下,很多国家的底层平民,典型如印度,一点不焦虑,乐天知命,反正永远上升不了,得过且过。所以,适度的焦虑也许是成长的代价,我们要把握好一个度。

有时候,我也经常在想,到了30 多岁,我自己会是怎样的?是继续奋斗在一线写代码,还是做技术架构,或者转行,创业等等。说句实话,我现在也是一脸懵逼,未来是怎样的,我也不确定。但有一点可以确定的,我一直在追求更完美的自己,提高自己的核心竞争力。

今天,站在我的角度,一起来聊聊职场技术人的成长历程。在我看来,以下几个方面尤为重要。

  1. 自学能力
  2. 复盘总结能力
  3. 技术素养

自学能力

image

刚开始实习的时候,以为工作了,技术就可以突飞猛进,因为想着有人带了。等到工作了,才发现还是 too young,too simple。

在工作中,遇到不懂得,90% 的问题需要你自己解决的。相信工作中的人都深有体会,第一:同事也有自己的任务需要完成,不可能你一碰到问题,就想着会有人帮你解决。第二:工作中,每个人都会有自己的分工,有时候遇到的问题,往往是特定场景的问题,如果之前没有遇到过,一时之间也很难帮你解决。顶多提供一种思路。

因此,自学能力真的很重要。具体来说,表现在以下几点。

第一:善用搜索引擎

说句实话,技术遇到的问题,只要不是最新的,80% 的问题都可以通过搜索引擎找到相应的解决方案。记得,我刚入职场的时候,有一段时间,遇到问题的时候,第一时间总会问身边的同事有没有遇到这样的问题。等他们比较空闲的时候,一般会跟你讲解,忙的时候,也是叫你去百度或者 google 搜一下。

当然,搜索的话也有一些技巧。这里就不展开说了,建议大家多用 Google,Github,StackFlow。

第二:学会举一反三

平时工作中遇到的难题,不要仅仅停留在表面,要通过现象去分析背后的原因。比如说,开发的时候遇到滑动冲突,通过搜索引擎在网上找到相应的解决方案了。这是第一步,但还不够,我们不仅要知道解决方案,更重要的是要了解为什么要这样解决?有没有更好的解决方案。

如果我们仅仅停留在抄的层面上,bug 稍微变化一下,下次你还是解决不了。因为工作中遇到的 bug 总是千奇百怪的,但十之八九,掌握了原理,解决思路都是差不多的。

第三: 形成自己一套解决问题的思路

解决问题的思路,这个跟工作经验有一定的关联。资深的工程师,遇到问题的时候,对比普通的工程师,往往能较快定位到问题根源。这跟个人的积累和经验有空,一时之间很难找到适当的例子说明。也许这就是只可意会,不可言传吧。

那我们平时开发中遇到的 bug,你的解决思路一般是怎样的?

这种一般分几种类型的 bug。第一: crash 的话一般比较容易解决,一般从堆栈可以看出信息,再结合代码或者搜索引擎可以定位到问题。

第二种:逻辑错误的 bug。这种类型的 bug,我们要先定位到大概的代码,再结合 log,看是哪里出错了。但有时候,用户反馈回来的 bug,往往不是不是必现的,是偶现的。这时候,就需要一步步分析了。


复盘总结能力

image

总结对于每一个人来说都非常重要,这点是毋庸置疑的。

相信大家也经常遇到这样的场景。

  1. 这种类型的 bug 我以前遇到过,但一时半会不知道怎么解决了。
  2. 我以前明明是这样写的,没问题啊。
  3. 这种功能我以前做过,找了半天,找不到以前的代码了。

刚开始实习的时候,这种情况我经常发生。仔细想来,一般有以下原因。

第一:人的记忆性是有限的,不可能记住所有的东西
第二:没有及时总结

还记得这句俗话吗?好记性不如烂笔头。平时我们看文章,或者跟别人探讨,觉得某些观点挺正确的。但事后就是想不起来,这是为什么呢?这是因为我们只停留在表层,没有真正转化为自己内在的东西。你记性好,当时记住了。但你能保证十天,一个月,一年之后,你还记得住吗?

做笔记的难得之处,是你的思考过程。当你着手记笔记的时候,你的大脑在思考,我要怎样用简短通俗的语言记录下来。这在无形之中加深了你的印象。一段时间后,即使你忘记了,但当你回看以前的笔记的时候,我们往往会吸收地很快。

当然,我也不赞同一味地死记硬背。生活中的琐事那么多,不可能事事都记录下来。挑选那些你觉得重要的,有感触的即可。

那可能有部分问就会问了,什么是重要的?这里我发表以下我的看法。

  1. 开发中需要经常用到的。这些你肯定需要记住,不可能说每一次你需要用到,再去搜索,这样效率多低。
  2. 第二,一些疑难杂症。针对某些特定场景的 bug 或者需要注意的。

人的一生也是一样,是一连串的故事组成的。我们的一生,究其到底,不过是所有经历事情的总和。我们的昨天和今天,决定了我们的明天。就像种瓜得瓜种豆得豆一样。

我们有时候就是有这样的一种错误,觉得今的事情不用总结,以后需要用到的时候,以前所有的认知会自然而然得回来。这是,这只是我们找的一个借口,为自己的懒惰的一个借口。其实我们心里明白,今天的总结会对明天有着莫大的帮助,但是懒惰总能战胜我们的理性。


技术素养

image

前面这两步做好了,在所在的技术领域专心工作几年,不敢说你成为一名技术大神,但至少成为一名高级,资深工程师。

什么是技术素养呢?

在我看来,包括以下几个方面。

第一方面:技术深度和技术广度。

作为一名技术人,技术还是最重要的。它是我们的专业技能,也是我们谋生的重要技术。

技术深度,简单来说就是你在技术领域的钻研程度。假设有 A,B,C,D 四个领域,我们在 A 领域有很深的钻研和造诣,碰到 A 领域的疑难杂症,我们基本能很快地解决,这就是技术深度。而你如果 A,B,C,D 四个领域都有一定的了解,这就是技术广度。

那怎样平衡好这两者之间的关系呢?

个人的看法是如果你想往技术发展,先钻研某个领域,争取有较高的造诣,之后再横向发展,了解其他的领域,做到有一技之长,这将形成你独特的优势。

因为你在 A 领域有较深的造诣之后,你将有一定的不可代替性,这就是价值。而且,现在大公司分工明确,很多时候需要的是专才,而不是什么方面都懂一点的人。当然,我不是不建议大家全面发展,只是说,先钻研某个领域,再想其他领域拓展。

第二方面:大局观

大局观,简单来说,就是看待事物的视野和角度。具体到技术人来说,主要是技术栈,技术方向的选择,以及业务方向的洞察。

一个技术团队的领导,往往需要有较好的大局观。
主要表现对于各技术栈的选择和比较、架构设计模式的考虑、设计策略等。一个良好的架构,往往能够以最小的代价应对变化无穷的需求。同时,注意:架构的选择,需要结合业务场景,脱离业务场景来谈架构都是耍流氓。

业务能力的洞察,主要是指结合业务和技术,能够做出合适的判断,要清楚当下那些任务优先级别比较高,做什么事情收益最高。技术与业务是分不开的,在很多情况下,技术是服务于产品的。任凭你技术做牛,效果做得再酷炫,性能做得再好,产品没人用,那就没什么卵用。因为在这里,你的技术产生不了任何价值,而公司说到底,就是一个盈利机构,你觉得可能一直烧钱下去吗?

当然,对于产品天马行空,异想天开的想法,我们也要懂得合理拒绝,不能由产品牵着鼻子走。

举一个例子,去年 去年“网传中国平安产品经理与开发因「根据手机壳颜色改变app主题」需求打架一事”,这反映了一个公认的事实,程序员或多或少与产品经理存在着某些矛盾。最好的解决方案是,技术人懂点产品思维,产品懂点技术,考虑问题多从对方的角度出发。


总结

说到底,就是要培养自己的核心竞争力,形成自己独特的优势。而如何确立自己的竞争力,就需要我们逐步培养,技术深度,技术广度,业务洞察能力等。做好每一项,都不是一件 easy 的事情。尤其是技术深度,业务洞察能力。后面有时间,再单独写文章与大家探讨技术深度的问题,因为我现在也不是有特别深的理解,哈哈。

记住,职场中,做好自己本职工作的同时,请记住要培养自己的核心竞争力。公司只是你工作的一个平台,不是你的全部。你离开了这家公司,你还能潇洒地生活吗?

以上仅属个人意见,某些地方有些纸上谈兵,不喜轻喷。

推荐阅读

2019.02 随笔(一)

2019.03 随笔

技术人的四大出路,你适合哪一个?

致刚入职场的你 - 程序员的成长笔记

延迟享受,在最好的年纪请不要选择安逸

2019.05 随笔

Android 技术人

扫一扫,欢迎关注我的公众号 stormjun94。如果你有好的文章,也欢迎你的投稿。

  • 33
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
### 回答1: 作为一名刚入行的 Java 程序员,你需要注意以下几点: 1. 加强对 Java 语言的理解,熟悉其基础语法和常用的类库。 2. 多学习常见的设计模式,如单例模式、工厂模式、建造者模式、观察者模式等。 3. 加强对数据结构和算法的学习,能熟练地使用多种数据结构并运用到实际的开发中。 4. 尽快熟悉常用的开发工具和环境,如 Eclipse、IntelliJ、Maven、Git 等。 5. 多参加线下技术交流活动或在线社区中交流,能够吸收其他开发人员的经验,并不断学习新技术。 6. 关注行业发展动态,了解新技术的应用,保持自己的技术水平不断提升。 ### 回答2: 刚入行的Java程序员需要注意以下几点: 首先,要熟悉Java的基础知识。了解Java的语法规则、常用类库以及面向对象编程的概念和原则。这是建立良好编程基础的关键。 其次,要不断学习和跟进Java技术的最新发展。Java是一门庞大而不断发展的语言,新的版本和技术不断涌现。不断学习新知识可以保持竞争力和适应新的编程需求。 此外,要注意编写可维护、可读性强的代码。良好的编程习惯能够提高代码的质量和可理解性,便于自己和他人阅读、维护和修改代码。 另外,要注重问题解决能力的培养。作为程序员,解决问题是一项必备的技能。要学会分析和排查问题产生的原因,并通过查找文档、调试代码等方法来解决问题。 还要多参与项目开发。通过实践不断提高自己的编程能力和项目经验,学会团队合作和沟通。积极参与项目,争取承担一些关键任务,锻炼自己的工作能力和责任感。 最后,要保持对编程的热情和持续学习的态度。编程是一项需要不断学习和改进的技能,只有保持热情和持续学习,才能不断提升自己的能力和职业发展。 总之,刚入行的Java程序员需要注意扎实基础知识、学习新技术、编写代码质量、培养问题解决能力、积极参与项目、保持学习热情等方面。这些注意点将帮助他们在职业生涯中获得更好的发展。 ### 回答3: 刚入行的Java程序员需要注意以下几点: 1. 了解基础知识:Java是一种面向对象的编程语言,需要掌握基本的编程概念、语法和特性。掌握Java的基础知识是成为一名合格的Java程序员的第一步。 2. 学习面向对象编程:Java是一种面向对象的编程语言,了解和掌握面向对象的思想和原则是非常重要的。理解类、对象、继承、封装、多态等概念,并能够灵活运用于实际编程中。 3. 熟悉常用工具和框架:Java有许多常用的开发工具和框架,如Eclipse、IntelliJ IDEA、Spring、Hibernate等。熟悉这些工具和框架,能够提高开发效率和代码质量。 4. 掌握设计模式:设计模式是解决软件设计问题的经典思想和方法,对于Java程序员来说也是必备的知识。熟悉常用的设计模式,并能够在实际开发中灵活运用,可以提高软件的可维护性和扩展性。 5. 深入理解Java虚拟机:Java虚拟机(JVM)是Java的核心,对于理解Java的原理和性能优化非常重要。了解JVM的内存管理、垃圾回收、类加载等机制,对于优化代码和解决性能问题有很大帮助。 6. 学习使用版本控制工具:版本控制工具(如Git)是团队开发中必备的工具,能够方便地管理代码和协作开发。学会使用版本控制工具,对于提高代码质量和团队协作能力都是非常重要的。 7. 不断学习和实践:技术更新很快,作为Java程序员需要保持学习的状态,不断掌握新的技术和工具。另外,通过实践项目来提升自己的编程能力,积累经验和解决实际问题。 总之,刚入行的Java程序员需要在基础知识、面向对象编程、工具和框架、设计模式、Java虚拟机、版本控制和持续学习方面加以注意和努力,才能成为一名优秀的Java程序员

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gdutxiaoxu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值