Would you accept a job offer from a company that wasn't writing unit tests?
I'm fairly new to the programming world (5 months), and I just got and accepted my first serious job offer at a great company. The company is stable, has a small dev team, 20 employees, and is profitable and growing. I couldn't be happier, but.. they don't write unit tests. As someone who sees learning as very important, I wonder if in some ways not writing tests at a company will stunt my growth, future prospects. These days I hear so much about unit testing that I assumed everyone does it, but it seems from some reading on stackoverflow that even as much as 50% or so (this is just a perception, could be wildly wrong) of companies see testing as something they'd 'like to implement but aren't. Would you work for a company that wasn't writing unit tests?
18 comments
[ 4.9 ms ] story [ 59.5 ms ] thread1. You can't ask them in a tone that indicates judgement. They may have a reason and, if you ask it in a way that makes them feel stupid, you're not going to get a good answer (and maybe fail the interview).
2. You should prepare for a follow-up question from the interviewer about why it would be beneficial to write unit tests. If you can word it succinctly (in both technical and business language), you may just win the interview right there.
In 15 years of programming, I've rarely seen development teams have a full test suite for their applications. Most of the time I see applications with the barest of unit tests, that just cover the happy-day scenarios (but never negative test cases). Some other applications have 0 (yes, 0!) unit tests, but those tend to arise from another team writing the software in "Agile"* and then handing the finishing software to another development team to maintain. In one, rare, instance I even had a manager say that writing unit tests aren't required because it will only prove that the application works, which is what the QA team's report tells him.
Thankfully you are young enough to be trained in TDD and such, and may be able to show that unit tests can reduce the risk of the project when code changes happen. That type of information is invaluable to a manager.
tl;dr: Be open and curious about why the company doesn't write unit tests, and you may find out how real-world development teams work.
* I put Agile in quotes because this particular team said they were doing Agile programming, but in reality they were able to quickly produce deliverables only by cutting corners by not producing documentation and tests.
Hell, I have accepted jobs where the programmer had left and nobody even knew what language they were using or really anything at all about what the previous programmer had done..
call me crazy..I called it a blank slate...
I have around 20 years experience as a developer, and contrary to the hype you seen in many conferences, truth is very few companies do unit tests, specially if they are quite big.
One of my tasks in our consultancy projects is to teach companies why they should invest in unit tests.
If a company doesn't do some sort of automated integration tests, that would probably be a much bigger red flag, as for any sufficiently complex software, what works is approximately equal to what is tested, and automated tests let you test a lot more than non-automated tests.
However, if you said they weren't using any type of source control, I might re-consider. However, You could also use this opportunity to move up in the company by implementing it.
The questions you should be asking are:
-How is the pay? What are the benefits like? What are the expectations for hours?
-Does my future boss seem like a person I can get along with? What about my co-workers?
-Does the company have a business model that makes sense (i.e. will their checks eventually start bouncing)?
-Am I going to be working with technologies that are in widespread enough use that I can get another job even after the bubble bursts (hint: you want technologies that are in use in "boring" corporate settings as well as start-ups)?
All of these are far, far more important than if they give you a fancy chair or MacBook Pros; whether they use SCRUM or XP; svn instead of git; etc.
When you get there, if you think it would benefit them based off of their work style / processes / product, I would come up with a plan to start using unit tests and use this as an opportunity to climb the ladder.