工业软件研发群里好多小朋友问, 如何提升工业软件研发水平,如何看别人的代码,趁今天享受了一顿美味的米酒晕晕乎乎之际,跟大家聊聊。
本文章主要针对那些学习了数学、力学、物理学,已经掌握了学科核心知识的同学,希望给你们一些助力,成为工业CAE软件研发的高手高高手。
1 首先要提升的是编程能力
编程能力, 首要就是 “编”, 即便你有天才的思路,如果写不出来程序,也是白搭。 所以第一关就是要冲破编程的障碍,让自己的思路自由表达。
不管是学习c++, 还是python,大家一定要注重实机编程操作。学了一两个特性,就可以用十几行、几十行代码来反复研究它。 研究它实际效果如何?研究它什么时候就不适用了,研究它什么时候效果特别好, 甚至研究一下它是如何实现的, 等等。总而言之要从各种角度来体会它。 尤其是C++的数组,指针那块,如果把这块琢磨透了, c++基本就通了1/3了。
这种边学边练的学习效率是很惊人的,对与c++来说,一个211以上的普通学生, 一般持续一两个星期就能达到入门的地步。持续一个月就能理解C++ bare-metal的设计哲学,从而达到触类旁通效果。过了这个阶段之后,什么模板, 继承, 多态,你都觉得那是自然而然的,而且你慢慢发现, 虽然C++有时候很绕,但绝对不会违反直觉。持续半年后,基本能做到对各类编程语言的快速掌握,这时候,你就具备了外出打野的基本能力了,因为我们学得快嘛!哈!
2 其次提升软件开发能力
编程只需要掌握语言特性就行了,可是开发软件你需要掌握的就多了。网络通信,界面开发,数据库,图形显示、操作系统等各方面都需要了解。这种知识储备厚度是计算机科班与非科班最显著的区别。这是一个需要日积月累的过程,这个过程很漫长但是也不是不可以加速。
1) 跟课
如果有条件,可以搞到到某个高校的课表,然后一起去跟课,就说我是隔壁学院的,反正听课又不查身份,不懂就问,老师和旁边同学都可以。
现在网课也有很多,可以挑讲得好的,好好听听,也是一种学习方式。但是网课毕竟是网课,深度是无法大学课堂相比的。
笔者浪迹江湖的时候,经常到校园里去蹭课,什么数学的,物理的,从不抗拒。有空调又安静,还能睡个觉,还有比教室更舒服的庇护所吗?
2 进公司搬砖
跟课算是主动学习,但不是每个人都能有那么好的持续性,人的天性使然。这时候,你可以根据自身的兴趣方向,找个公司搞兼职。比如你想锤炼一下自己的界面能力,你就去找个办公自动化或者工控自动化的兼职;如果你想锤炼自己的图形能力,你可以找个游戏方面的工作兼职一下。———相信你自己,拿钱办事的压力,绝对会让你的技能突飞猛进, 只要你是个有正常责任感的人,毕竟拿人手短,吃人嘴软,你肯定不想把事情搞砸。
大家可以看一看,无论在学校课程多么差的人,为什么参加工作后,都能在公司存活下来? 其中一个核心因素就是压力。在公司,你能干你就留下来,干得不好就被扫地出门。被扫地出门不仅带来经济上的损失,还带来颜面的损失,这两者都是读书人无比看重的事情。很多时候你学不好,是因为你没有压力。
笔者从浪迹江湖开始,迫于生活压力到处搬砖,什么通信软件、汽车软件、导航软件、食堂软件全做了个遍,无数次痛苦的钻研陌生领域,深度用过的语言都六七种,也收获了一堆友情,成为本人坚持工软开发到现在的支撑力量。自信,都是在反复被摧毁的过程中重建,最终越建越高。
3 保持开放的心态
对于小白来讲,任何一方面的知识都不会浪费,必将在不就的将来为你提供核心竞争力。计算数学,计算几何,微分几何、C++设计模式是所有物理大类学生缺乏的核心数学,不要觉得老师不教,我就可以不学,毕竟工业软件研发就需要这些东西。北上广深这些地方,充满了机会,只要你懂得多,根本不愁挣钱。
另外大多时候,你看不懂别人的代码, 本质是你懂得不够多,那些不懂的地方,阻碍了你视线的延伸。
3 后记
工业软件研发是一个产出非常多的方向,应当成为每一个传统科学人的最终形态。进,可以开公司卖产品,fluent已经给我们打了一个样; 退,可以申请更多的基金和横向(尤其在横向申请上超级有优势),超越周围的paper-maker,让自己在外有咖位,回家有地位。更退一步,物理大类的计算科学方向文章也很好发,就算是paper-maker,你软件研发能力强,单位时间处理更多的数据,也能造出更多更炫的图,发出更多的paper。