title: 对于软件工程师来说，如何平衡学习技术的深度和广度？
desc: 入职互联网公司三个月，自己工作上主要在做服务的性能监控优化还有工程质量保证优化。<br>除了观察后台的监控，分析性能瓶颈，寻找解决方案之外，做过java代码的重构构建自动化测试，做过内部服务的维护部署和扩容。最近完善了内部的性能监控，添加了新监控，自学上手了RoR的全栈开发。之后做的实时日志系统也接触了新的技术，node.js还有coffeeScript。自己跟室友的一个玩的项目决定了用scalaplayreact做开发，自己也对scala和akka actor模型非常感兴趣。闲暇时间也自学了golang。<br>自己算是一个比较有好奇心的人，加上工作上比较自由，主要不做pm的需求，主要是自己找问题解决加上其他RD的需求。我倒是很喜欢这样的工作。自己也接触了很多的东西，不断学习上手实践。师父的建议也是，多思考，多接触各式的技术，不要因为部门划分和职责划分阻扰好奇心。越大的公司分层分业务设计，越希望员工专精一个方向，不一定利于个人发展。自己渐渐也有做全栈的梦想。但目前感觉对各个技术不够深入的了解，比如，问答社区上关注技术问题，对于很深入的技术问题可能无法详实回答，但可以理解好的答案。那么核心竞争力是什么？需要多专注一个方面突破吗？如何平衡广度与深度？<br>我自己来回答的话，核心要培养的竞争力可能不是一两门技术框架工具，而是分析解决问题的能力，还有足够丰富的技术栈工具箱还有认识去帮助解决问题，足够的好奇心驱动去丰富技术栈。
topic: 程序员
content: 单纯就技术而言的话，我觉得若真的想深，后面你必须广才深的下去。譬如C吧，最开始你会很自然的接触到语法层面，用简单的语法做一些比较简单的事情，如打印杨辉三角。随后你会接触到面向对象，会开始学会抽象封装多态等的思想，然后开始做一些更复杂的事情，可以将现实中的一些场景用面向对象的思想进行表达。然后，到这里的时候，你会更加频繁的使用STL了，然后开始觉得STL真是一个好东西，好多东西都有。然后你准备开
answerer_tags: 联系方式在我主页