| I have been pondering on this for a while and need to get some feedbacks from fellow developers. Here is the scenario: I am a developer documenting what I work on (apis, tools, etc) to. However, my colleagues don't. This have been driving me nuts but I cannot change them (I tried). I also like to improve existing tools (build system/ code base). However, my colleagues don't. Here is what every developer faces every day:
- No automated build (e.g.: Continuous Integration Server)
- Released archived as emails instead of FTP/Nexus like software.
- Developer builds production releases on their dev machines.
- Undocumented APIs/build system
- No automated test
- No clear roadmap
- No code review
- New developers are hired without going through any technical interviews nor have background
or experience required (programming language, software dev lifecycle, mindset). The business was not doing well until recently which explains why all those things creeped up (although IMHO, automated build and unit test should be done anyway). Now, the business is doing well, I managed to develop an automated build system after a year or so battling with management and reworking tools to make it happen. New hires are coming in but I feel those processes aren't really used/sought by other developers. Some management folks seems to care about the issue but don't see the need as much as I do; a strong, well structured yet flexible software dev process is a very valuable asset for any company and should be respected fully. No other developers (about 20) raised any concerns about the current software dev process, only me. a) Am I too impatient since things are slowly changing ?
b) Am I too process oriented ? This is a 5+ year old startup.
c) Am I the problem ?
d) Is this software shop not a good place to work for and improve one's skills set ?
e) Should I just suck it up ? That's the startup world. I really appreciate your feedbacks. |
Set up the CI/build server on your machine, have it email everyone when the build fails. They will see the use of the tool then, and when the team accepts it they will hopefully get an official server to host it on.
Write tests for your code, and when other devs work with you on issues, or break things, write tests and send to them "Hey, i wrote this test that shows the code you wrote is failing, can you make it pass?" Also ask others to make unit tests. You will have to write the bulk of tests. You probably know which others on the team are open to writing tests and working with you on the pocket of excellence. Get them involved first, and then the idea will spread. A good idea would be buy them copies of Pragmatic Programmer too.
No, you aren't process oriented. A software team that doesn't at least like the idea of automated builds, and tests is crazy. As far as if it's a good place to work and improve one's skills? That depends. In some teams you might never get them to adopt the pocket of excellence. If you are working in a place like that, then it's probably not a good place to work. But if you have a shot at converting them by just doing it on your own first, then it would be a great opportunity to get experience with setting up these aspects of a software shop. And you can put that on your resume, blog about it, etc. In that case it would be a great experience.