If there's no reason not to, code you write tends to become optimized for the environment it's in. Maybe all software developed in-house in your company uses a specific tool for configuration, or there's a naming scheme for OS-level users. Or people want all tools to integrate with the ticket system, or ... the possibilities are endless.
Without a pressure to keep code clean of such influences, it'll slowly morph into something that can never be reused outside of the organization it was developed in.
So when a new tool or library needs to be developed, I can usually fit it either into the "might be interesting for others" or the "purely internal glue code" category. If it's in the former, I make it open source from the beginning. (My employer is very supportive of Open Source).
If there's no reason not to, code you write tends to become optimized for the environment it's in. Maybe all software developed in-house in your company uses a specific tool for configuration, or there's a naming scheme for OS-level users. Or people want all tools to integrate with the ticket system, or ... the possibilities are endless.
Without a pressure to keep code clean of such influences, it'll slowly morph into something that can never be reused outside of the organization it was developed in.
So when a new tool or library needs to be developed, I can usually fit it either into the "might be interesting for others" or the "purely internal glue code" category. If it's in the former, I make it open source from the beginning. (My employer is very supportive of Open Source).