I'm currently a student (soon have my MSc in Computer Science) in Germany. In parallel I work in a small company which does NOT sell software products. But they decided to improve their internal process automation with some small software products (simple interconnected Excel macros, which I find not that professional, but that's another story).
They once hired me in order to help development of these macros, but at some point we decided to start working on a huge software system which should progressively replace the current Excel system. (It was my own idea and, back then being a beginner student, I thought "why don't we do it correctly?") Later I realized that this step was going to be huge. Too huge for me as a student, not being technically mentored by a senior software developer or somebody even near that kind of role.
We continued developing the software (they hired two more students to speed it up, which partly worked... but they now left and I'm the only one again). Now we're at a point where the software product is starting to be used. I'm very proud of what I did so far, especially considering that this piece of software is going to be used in the automation of the most important tasks of the company.
I guess my concerns are also relevant to others, as software development / IT becomes more and more important in every kinds of companies. And not all companies like the way to out-source development / buy products which they then need to adjust to their needs. I think it is then a common problem that such companies need developers which are then feeling in a "foreign" environment without having a technical supervisor.
I'm now concerned about my future. I have basically two options what to do after I graduate:
Stay in the company. Reasons:
I'm feeling very comfortable right now. I'm feeling home in the company, and taken very seriously by my boss. He trusts me a lot and I think this is worth a lot.
They really need me (which should be a minor argument for me, right?) as I developed a product which is only partly maintainable by others. Yes we documented, yes we cared about internal structure of the software, but it still is complex and they currently have nobody else working on the software.
I'm proud of our / my product and I guess I'd love to maintain it in the future and improve it.
Give the project in someone other hands and leave the company; looking for a job which fits better. Reasons:
I'm not being technically mentored by a software developer (or similar). I can only guess how to do things the correct way and hope it will turn out great (enough). I think regularly taking place in further trainings can help, but not solve this issue.
The project might very well be too big for me as a junior software developer (yet to-be, to be precise). The software is now starting to be used but we plan to gradually improve its features to automate more subprocesses in our company.
The company might pay me less than I can be payed in average in other software development companies. While money is not my major argument right now, it still "bothers" be a bit.
Even if I feel comfortable for, let's say, another 5 years, will it be hard to switch the company then? I have gained experience in software development, but not in a software development company. Will I feel misplaced in a real software development company then? Will I even find a job, since I am missing some important experience? (*)
Can the arguments for staying in the company justify my concerns?
The current situation is that my boss offered me a full time job after studying. I told him that I'm glad but I also told him about my concerns, which he totally understand. I promised him that in the case that I'll leave, I will not do that earlier than incorporation of (a) future developer(s) is complete.
(*) This is my main concern. My dad experienced a very similar situation. He studied engineering and after graduating worked in a software development company as a product consulter. Some years later the company went broke and he had a hard time finding a job either in the engineering or in the software sector, as he was neither experienced in engineering nor studied computer science. He "almost" fit most jobs, and I'm now concerned that I also "almost" fit future jobs since I might have not as much experience than they expect from me.