女程序员工作十年感悟

1 关于男女

研究生毕业作为一枚女程序员已经十年了。所呆过的几个公司和小组男生居多,女生比较少。组里的开发的架构和lead基本都是男生。也说不清楚这个是男性更适合这种工作还是说样本量太少。但是作为一名资深开发,我和组里其他男开发相比,一点也不逊色。但是此从有了小孩之后,感觉自己投入工作的关注度和精力是无法和男生相比的。作为队友的老公照顾小孩也很给力,但是小朋友还是比较粘妈妈。
现在每天晚上等小孩睡着了,晚上的时间,我会一天玩手机看书休息,一天学习专业技能充实自己。我一直的理想就是做一个资深厉害的程序员。

2 工具很重要,很重要

在这里想给大家分享一下工具的重要性,不管你是做什么类别开发,工具很重要,好的工具会让那你事半功倍。

2.1 各种IDE

IDE对于程序员来说感觉就是厨师的刀。选对它太重要了。比如说你开发Java,Eclipse,IntelliJ都可以。没有什么谁好谁差的说法,选一个你使用习惯了的就可以。但对于Scala可能IntelliJ比较合适,毕竟它官网上有一个大大的Download IntelliJ的按钮。用Eclipse你还需要额外的配置工作。开发C++,必不可少的就是Visual Studio。
当你不清楚使用什么的时候,一个是去官网瞅瞅,一个是看看你们小组的人在用什么。

2.2 notepad++

开发过程中,除了各种语言的code,还有各种的配置文件,脚本文件,数据文件。一个可以查看文本文件并且可以按照各种语言类型高亮显示的软件就很重要。我一直使用的是notepad++。对于当前的主流语言,notepad++都可以语法高亮显示。而且它还有专门的很多插件来显示,format各种语言。比如说XML,JSON。

2.3 beyond compare

beyond compare是一个比较软件。可以文本比较,二进制比较。开发过程中用的比较多的是文本比较。
我工作中使用最多的是比较多个版本的code。虽然说有code管理软件可以比较,Git,ClearCase。但是我还是喜欢用beyond compare,感觉比较结果看的比较清除。
还有一个就是出问题的时候,大型软件不好调查,会看log。beyond compare经常被我用作正常log和异常log的比较。

2.4 visual studio code

现在前端开发用这个比较多。如果不是前端开发者,这个也是一个很好的文本文件,source code查看工具。
我还发明了一个额外应用。它的文本搜索功能特别好用。我常常会用它搜索一个folder下面所有文本文件。

2.5 解释型脚本语言

这里列出来解释性脚本语言是指python,shell, R这种适合开发工作中小工具的语言。
比如说你要对一个数据进行处理后,然后把它分配插入数据库。
比如说你要在本地对你们的软件做一个简单的循环测试,启动,run一些功能,退出。
比如说你要对一个数据文件定期做特定处理,然后把它存在Git上面。

2.6 记录工作点滴的软件

我有随手记录工作中遇到的问题,总结的经验或者简单的程序安装步骤的习惯。使用了word,excel,还尝试了几个比较火的记录软件。印象笔记之类的。后来发现windows的onenote特别好用。就一个文档,类别可以分的很清楚,各种子类别也比较好管理。然后还没有excel的一些限制。

2.7 代码管理软件

代码管理软件每个公司都有。基本上是公司选什么大家用什么。一般公司都会选择当前比较流行的,像之前的clearcase, svn到现在的git。我觉得使用都差不多。只要你熟悉了基本的操作流程和操作命令就够日常工作用了。但是更新code的习惯和规则一定是要保持的,这个不管使用什么软件都一样。
习惯和规则一般是指:基于最新code开发;解决code冲突;本地测试功能完善;regression测试通过;review通过。

3 工作习惯,时间安排

工作的任务比较多的时候,时间安排很重要。我会有一个长期的To Do List,里面会列出任务,比较重要的优先级高的会标识为红色。我还有一个每一周的To Do List,里面是这一周的计划。每天工作会及时更新,完成了什么,剩下了什么,有什么阻碍。并且会根据领导给的优先级调整。每个周末会更新总结,然后update到长期的计划表。

4 开发点滴

4.1 时间到了,一切都会明朗起来

开发过程中经常遇到一个难题,想不到怎么解决。尝试了很多办法,请教了很多大拿。但是还是解决不了。这个时候我会把这个问题放置一两天,然后再看。从头开始分析,开始查看。经常做梦的时候都会梦见。这种从头开始经常会持续几轮。
好像突然有一天,问题豁然开朗。不知道是谁的一句话点醒了你,还是某一行代码,某一个网上解决问题的办法。然后问题解决了。
这个好像不是说时间到了,问题就解决了。感觉是一直付出,一直努力。最后总会解决。

4.2 三个臭皮匠,胜过诸葛亮

这个和大家说的小组头脑风暴其实是一样的。同一个事情,同一个问题。每个人所擅长的和关注的是不一样的。遇到新问题,新功能,大家多讨论讨论总会有意想不到的收获。

4.3 三人行,必有我师

这个和上面的一样,又不太一样。大家一起头脑风暴会有意想不到的撞击结果。这个说的是,小组里面的每个人都有自己的长处,可以多学习学习。比如小A很关心当前行业的发展,在这一方面有深入的研究。小B是一个技术控,喜欢各种编程语言。我们总是要看到别人的长处来弥补自己的不足。

4.4 找对人很重要

找对人很重要是说,你的显示器坏了,不要找你们组的架构师,你该找的是公司的IT。
你有编译问题的时候,请教你们组做build的工程师准没错。他研究编译问题,对各种不通的编译器了解一定比你多。
写的测试用例不完善,找你们组的测试吃个午饭聊一聊。

4.5 你code出错的概率比G++,JVM大

我们产品是多平台的。偶尔会遇到各种平台相关的问题。经常查了好多天,废了好大的功夫都解决不了,同样的代码只有这一个平台不工作。有时候会想,是这个平台的编译器有问题,还是这个平台的库有问题。哈哈,大概率都不是。基本上最后都是发现自己写的代码有问题。
还遇到一个C++的问题,是发现一个功能有大量的内存泄露。最后定位在一个std::string的对象上面。这个对象怎么会不释放,测试了很多次,还是这个对象有问题。后来改为指针,问题解决了。但是一直没有想明白为什么这个对象不释放。哈哈,最终发现是这个存储这个对象的对象没有释放,还是自己code的问题。

4.6 解决问题需要找对工具

你工作中遇到的大部分问题,不管是Java,C++,Scala还是Python,R。请你相信,其他人一定也都遇到过。除非你是大拿级别的大拿。遇到问题,不要自己闷头解决,去网上看看别人是怎么弄的,特定问题都有特定的解决办法和工具。不要重复发明轮子,而且一般人也发明不出轮子。
之前遇到了分析Java异常退出问题,自动化测试问题,性能问题,内存泄漏问题。这些问题,找对工具,半个小时比你闷头一个礼拜有用多了。

你可能感兴趣的:(女程序员工作十年感悟)