Do developers need to work on fast or slow computers?
From time to time I see this question happening. When a developer is writing a software, does he need a fast or a slow computer?
Why working on a slow computer?
- If a developer works on a slow computer, he tends to be careful about how fast is running the code he is writing. So the produced software is fast and is more testable on the developers computer.
Why working on a fast computer?
- The developer can open all resources he needs without having to care about closing some softwares because the computer does not handle the load (I remember a colleague having 2 internet explorer opened, 3 firefox with 15 tabs opened in each of them, 3 intellij, a webserver and a database running all together on his computer).
- A slow computer may not be the same as having the product working under heavy load.
- The tools the developer is using may not be "optimized" and are running slowly on slow computer or computer without much memory. In general, everything is slow and increase the waiting time of the developer.
- In case of failure/delay the developer can't use the argument of having a slow computer 😉.
When writing a software, what's important for a lot of developers is the time for compile/run/test cycle. Shorter is it, faster the developer can see the result of its work and have feedback on it. On a slow computer, this cycle is longer, the developer tends to write more code before seeing if it works, in case of test failure, the modifications may be too important to easily find out what's wrong, leading to a big loss of time.
Depending on the technologies you are working on, tools may exist to distribute some computation like compiling on computers available on your network (hoping that other developers are not compiling at the same time too). But compiling may not be the longest task. I work on a project where compile time was mostly nonexistent (everything was compiled on the fly), running 700 unit tests took around 5 seconds, running 200 functional tests took around 5 minutes. We didn't have the fastest computers but they where fast enough. Here the functional tests were taking most of the time, I think writing them so they could be distributed on other available computers would have been a bit more complicated and may have taken too much effort (the environment was not designed to be distributed). And distributing the functional tests would have completely remove the point of seeing how well worked the system under load.
So to me, giving a powerful computer to developers is not a big cost and may make their job easier. If you need to check how your software behave under load or in restricted environment (slow CPU, small memory), make appropriate tests (if this is a requirement, tests must have been written to check it).
I think the real problem about writing a fat and slow software is because having a small fast one is quite often not a requirement (you are still doing the same things with the last version of Microsoft Word on Windows Vista than what you were doing with your old Word on Windows 95, you just need a far more powerful computer now). Most of us works for companies where the goal is selling products/licensees and they need more and more features to be sold. Selling a new version having only "faster and smaller footprint" is not enough for the marketing guys, even more, it's recognizing that the previous version were fat and slow (I know it's dumb, but that's what I have seen sometimes (depending in what kind of industries you are working in)).
Comments Add one by sending me an email.