I've done this a couple times, and I would largely say don't do it since how terrible your environment becomes is largely dependent on things that are basically impossible to assess before starting.
The first time I was very junior but the programs that needed writing were mostly data crunching stuff or super simple rails apps that was simply a way to speed up the rest of the office. The company's core business was not in software and the fact that they could produce helpful code in house on demand was more of an added bonus. I also had experience with our domain so I was able to help out on non-coding issues when needed, as well as spot where a program could be helpful.
There were issues, though luckily I was able to work through with the management. The biggest is that as the sole dev in a non-dev shop you (assuming you show value after a couple projects) have a lot of people at the company giving you projects and this will likely outstrip your personal bandwidth. This can lead to feeling like you have n bosses where n is the population of the company minus one. The trick here is to get good at saying no as well as getting someone who is actually your boss and getting them to let you use them as a shield. The other problem is that you will probably run into estimate problems. Software estimates are frustratingly inaccurate when you're dealing with other devs, it gets much harder to explain to non-devs why "this little feature" is actually not so simple. The only thing that can help you here are your communication skills and other people's understanding/respect. Pad your estimates, if something really needs to get done wicked fast they'll let you know, otherwise just nicely surprise them getting it done early.
The second time I did it was terrible. The company was trying to develop a product that monitored sensor data and said it was going to expand the technical team. They also told me I could manage the technical project aspects myself since there weren't any other technical people.
Coworkers would pop in at least three times an hour to ask for help with Office or GoogleSomething or their phone, despite me reminding them that a) I'm not tech support, b) it's impossible to program if you're getting pulled away from your desk every 15-20 minutes. I was told that someone had met a programmer who could and so I should be able to.
My boss constantly was changing the requirements of the project as well as giving me "smaller projects" that weren't a part of the actual product. He would then be upset that despite working on Project F for two weeks we had made no progress on Project A for a whole two weeks! At one point the CEO demanded that I used a certain technology I had no experience using he got upset when I told him I had to devote some time to learning it.
Like any job these issues will largely depend on your coworkers and your boss(es), so YMMV but in my experience these issues are encouraged by the 1 techie vs n non-techies environment. Try to head off any of these issues early because if you let them get bad they will get intolerable.
Comments
I've done this a couple times, and I would largely say don't do it since how terrible your environment becomes is largely dependent on things that are basically impossible to assess before starting.
The first time I was very junior but the programs that needed writing were mostly data crunching stuff or super simple rails apps that was simply a way to speed up the rest of the office. The company's core business was not in software and the fact that they could produce helpful code in house on demand was more of an added bonus. I also had experience with our domain so I was able to help out on non-coding issues when needed, as well as spot where a program could be helpful.
There were issues, though luckily I was able to work through with the management. The biggest is that as the sole dev in a non-dev shop you (assuming you show value after a couple projects) have a lot of people at the company giving you projects and this will likely outstrip your personal bandwidth. This can lead to feeling like you have n bosses where n is the population of the company minus one. The trick here is to get good at saying no as well as getting someone who is actually your boss and getting them to let you use them as a shield. The other problem is that you will probably run into estimate problems. Software estimates are frustratingly inaccurate when you're dealing with other devs, it gets much harder to explain to non-devs why "this little feature" is actually not so simple. The only thing that can help you here are your communication skills and other people's understanding/respect. Pad your estimates, if something really needs to get done wicked fast they'll let you know, otherwise just nicely surprise them getting it done early.
The second time I did it was terrible. The company was trying to develop a product that monitored sensor data and said it was going to expand the technical team. They also told me I could manage the technical project aspects myself since there weren't any other technical people.
Coworkers would pop in at least three times an hour to ask for help with Office or GoogleSomething or their phone, despite me reminding them that a) I'm not tech support, b) it's impossible to program if you're getting pulled away from your desk every 15-20 minutes. I was told that someone had met a programmer who could and so I should be able to.
My boss constantly was changing the requirements of the project as well as giving me "smaller projects" that weren't a part of the actual product. He would then be upset that despite working on Project F for two weeks we had made no progress on Project A for a whole two weeks! At one point the CEO demanded that I used a certain technology I had no experience using he got upset when I told him I had to devote some time to learning it.
Like any job these issues will largely depend on your coworkers and your boss(es), so YMMV but in my experience these issues are encouraged by the 1 techie vs n non-techies environment. Try to head off any of these issues early because if you let them get bad they will get intolerable.