我本科不是CS相关专业,到了大三报名了Java培训班并且自学了编程,大四到北京实习一年,毕业后在北京做软件开发工作3年,期间出差到过东部沿海大部分城市。
那3年我一直觉得需要深造一下否则容易被淘汰,于是留美读了个CS硕士。但由于缺乏本科基础,申请读硕士的学校没有名气,毕业后勉强在湾区找到一份学不到什么东西的工作。
之后2年本来应该好好打基础,毕竟在美国工作需要跟美国本地人竞争,也要跟名校毕业生竞争,需要更加努力和专注,但当时没有那么想。
当时我想走捷径,于是去兼职创业自封CEO,之后的2015年整整一年就没怎么积累开发和技术而是专注业务和管理,把公司从0做到盈利,但一年后公司倒闭了,索性全身而退(心态调整花很多时间),索性当时没辞掉那份工作。
16年再次开始积累技术,刷题,面试,发现自己会的东西很陈旧,总之面的很烂,一个offer也没有拿到。至今依然在那家自己觉得学不到东西没发展的公司,而当年同时毕业的同学大多去了很不错的公司。
回忆一下,自己这些年工作之余体验了各种工作(电台销售,考研代理,电脑出租,西餐服务员,创业开公司,开Uber,做导游等),大多是为了了解一下自己是否真的喜欢未来多年做软件工程师,但同时真花了很多时间,本可以提高软件开发上的时间。
感觉走了不少弯路,但毕竟那时候缺乏人指导,面对花花世界的各种浓妆艳抹,觉得软件开发太平淡,于是跳进花丛飞来飞去,结果发现了其它各行业工作卸了妆的样子,才明白原来最好的居然一直在我身边。
这毕竟很可能是自己未来30年所要从事的行业和从事的工作,花点时间想清楚没什么不好的,关键是在想的过程中别停止前进。现在开始更多的明白软件开发的一些好,虽然未来肯定会有很多的平淡辛苦和不满,但我会更加专心的做好软件开发。
以下是我对自己当年的一些疑问的简短回答:
为什么要做软件开发?首先是我现在的选择有几个?如果只有一个那么就踏实做就好了,如果有多个就比较一下各自优缺点,如果觉得某个行业某个工作还是让你心痒痒就适当花点时间了解一下,如果觉得想明白了就踏实的做就可以了,如果这时候觉得自己已经落后好多了-能做的是踏实的积累,毕竟你想通了也是一件好事。
软件开发吃青春饭?搞体育的才是吃青春饭吧(到了某个年龄确实就没法搞体育了),或者说体力劳动者更是吃青春饭吧,软件开发如果你愿意其实可以做到很大年纪啊,见过很多做开发的做到很大年纪做的依然很精神啊。
软件开发加班且辛苦?我觉得加班跟是否是软件行业无关,哪个行业都可能加班或者不加班,取决于个别公司和个人。觉得编程费脑?不都明白脑袋越用越灵活的道理么,用多了思考的更快了啊。
软件开发看着不够牛?什么相比于什么?普通的开发人员相比于其它行业佼佼者吗?况且为什么要看着牛呢,虚荣。
软件工程师在美国被看成nerd形象不好?话说来美国的华人一代普遍不被看好也很难融入美国社会不是工程师特有现象,工程师群体算是不错的了,况且有形象非常好的工程师,也有形象差的,取决于你自己。
工程师需要不断学习很辛苦很累缺乏社交时间?不需要学习提高的工作是容易被淘汰的工作,需要持续学习的才不容易被淘汰,况且学习本身也可以越学越快,学的东西也可以积累起来。
觉得工程师很难飞黄腾达?哪个行业哪种工作飞黄腾达都很难好吧,看到别的行业那么几个人成功了就觉得那个行业多好么,其实不是那样的。
软件开发行业单身的居多?这个现象似乎来自这个行业女生不多,所以行业内缺乏男女交往机会,但可以到行业外找啊,我觉得一个工作稳定的工程师阳光健康一些还是不错的吧,而且婚后诱惑相对不是也少么,有失有得。
觉得进入这个行业的人越来越多,年轻人越来越多,怕自己体力比不过年轻人?首先这也不是这个行业特有的,各个行业都这样吧,都有其他人来竞争,关键就是这个行业的经验是可以积累的(多么美好的一件事啊)。
觉得自己可能更适合别的行业和工作?可以用个排除法,搞体育年龄太大,如果有特长自己这个年龄应该发现了,说英语比较多的工作没有竞争力(基本大部分工作就砍掉了),最后剩下的也就是STEM了啊。
本科不是CS的或者基础差怎么超越别人?我觉得关键是做自己喜欢的事情,自己想通了的事情,那时候不是特别需要跟别人比,专心做好自己该做的。
总的来说,以前主要是担心未来行业发展,担心错过了更好的选择(或者选错了方向),但既然明确了这个行业很不错,五年内也没有更好的选择,那就该专心做事了。