我在自学3个月Python之后进入了一家公司成为了Java实习生,总结一下最近一段时间的感想。
1. 学习编程需要以目标为导向
当你以找工作为目标时, 你需要去学校的招聘会或者或者是招聘网站查看相关岗位的数量以及薪资情况, 而非盲目的上知乎等网站提问。任何不考虑当地就业环境的编程方向推荐都是耍流氓。
当你以自动化办公之类的目的学习编程时,相信我,大部分你想做的事情都会有成熟的解决方案,很多情况下你只是需要找到一个合适的工具而已。当你真正需要手动编程的时候,其实你的工作平台已经帮你限制了范围:Office中的VBA、Windows下的Power shell、Linux下的Bash这些编程语言都对他所在的平台有极好的支持,很多时候你所需要的就是一些基本命令所组成的脚本而已。而对于Python等语言,更多时候你需要考虑的是平台兼容性,当你需要把你的脚本推广给同事的时候,我相信他们不会想知道Python解释器、包管理器等。
2. 不要盲目追随新技术
如果你是就业为导向的,那么不要把新技术当作你就业的筹码。真正帮助你就业的是对市场中已经存在并且广泛应用的老技术的熟练掌握。没有一个公司会让刚入职的实习生或者本科生在项目中使用新技术,你所要做的时对公司已有项目的了解,很多情况下这些项目会让你觉得与所谓的主流技术脱节。那么欢迎你, 你来到了现实生活中。现实生活不是微软发布会、不是谷歌发布会更不是知乎现在热议的某个技术,而是一个一个老项目组成的,他们使用着老的框架,老的技术,但他们任然承担着为公司盈利、为客户服务的责任,而了解、熟悉和掌握它们才是你应该做的,而非大谈某某技术。
3. 尊重公司的技术栈、工具箱
这个承接第二条。公司的技术栈是由你的同事、你的领导他们用时间摸索出来的,是一套完整的生态体系。这些技术栈、工具箱或许不同于你在知乎中看到的、或许落后于你狭隘的认知,但是这些却承担起了你现在所任职的这家公司,我相信没有什么能比这更有说服力了。所以面对任何你认为不合理或者落后的地方,你只需要一个态度:Fear & Respect。在Java实习过程中,公司的同事使用的都是Eclipse,而我却强行使用IDEA,结果公司的项目都跑不起来。最后才知道公司的架构师已经试用过IDEA并且早就得出了结论。而我却因为这个问题找同事调试,浪费了他们很多宝贵的时间。
4. 不要盲目迷信命令行
学习编程的时候我就认为命令行是程序猿必须熟练掌握的一项技能,事实证明我错了。很多情况下在GUI中推拽文件或者右键操作都会比直接写命令方便。在Notepad++中查找替换比学习awk、sed要实惠。当命令行变为脚本时,或许才是展现它强大能力的时候。不管是命令行还是GUI,都是工具,重要的是工具背后的理念。拿Git来说吧,学习Git重要的是学习Git的工作流程以及对commit、branch、head等概念的理解,而非强行记忆Git命令。而GUI在帮助我们理解一些概念的时候是非常强大的,我相信在GUI中熟练使用Git的是初学者学习命令行不需要太多的精力、而每天纠结Git命令中的选项、参数的人或许把时间和精力放错了地方。
5. 有一台开发专用的电脑
开发专用意味着这台电脑中只有工作使用的技术栈、开发工具以及各种特殊的项目配置。确保这台电脑能够稳定的运行,没事别再开发电脑中尝试新技术、新版本以及新的操作系统。任何不稳定的因素都要排除,不然当你开发环境中某个依赖被升级或者改动或者是你的操作系统奔溃,那么你就需要花费好几个小时来重新搭建开发环境。最后,确保这台电脑是你能力范围内的顶配电脑,这会让你每天的心情好很多。
6. 学会学习
- 知识是学不完了,但项目是固定的。不要使用学生思维:学完整本书再去考试。你不需要学完某个框架的手册,你只需要学习项目中涉及到的部分,并在需要的时候发挥你的学习能力以及解决问题的能力,留出更多的时间去了解框架背后的思想。框架不断更新,背后的思想却是多年不变。
- 限制学习的深度。那数据结构举例,在工作中你需要了解的是使用合适的数据结构,而非实现,所以学习的重点是每个数据结构的原理以及优缺点,不需要深入了解每个数据结构实现的具体细节。使用合理的抽象会让你的学习变的很轻松。