Question:
Can a mere entry level programmer become a mid or senior level programmer working in a company as the only programmer without a mentor?

Background:
I was hired as an entry level programmer for a mid size company that does not do programming except for internally. I am regarded as a genius inside the company with a decent salary but after 2 years I decided I wanted to move to an actual software company. The interview processes have been extremely demoralizing because even though I have wrote intra-company enterprise applications these interviews have made me aware of how little I actually know.

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

8

If you're determined enough, you can be anything. Don't give up and keep interviewing and writing software.
– BernardApr 12 '13 at 23:18

Look at it as a glass half full. This way, you're not in an organization learning somebody else's bad habits. I've been where you are. This is where active participation in sites like SO can be useful, and open source projects can help you refine your design skills. You can still review the code, learn from it, and introduce your own improvements even if you never actually commit any of it.
– Anthony PegramApr 13 '13 at 2:07

4 Answers
4

Certainly, if you can find someone who really knows what they're doing and who is willing and has time to help you improve your programming skills, you'd be foolish not to take advantage of their help. Some organizations try hard to set up those kinds of relationships, both to help you become more productive and also to keep an eye on what you're producing.

However, I think it's much more common that people learn from a variety of sources, including:

teammates: not just a single mentor, but everyone you work with

code reviews: there's nothing like having your code (or even someone else's) picked over by a group to sharpen your sense of what's considered good and not good in your organization

existing code: the more time you spend maintaining other people's code, the more you'll learn how to (and how not to) write your own code

books: reading is fundamental

internet: reading blogs and sites like Programmers.SE and Stack Overflow will expose you to lots of opinions about the "right" way to do things, and you'll start to develop your own opinions

experience: most important; you really can't appreciate the benefits and/or drawbacks of a given idea unless you try it out; write lots and lots of code

friends: having some friends who are also programmers is a huge help even when they're not your "mentors" but just people to chat with

If you can learn from some or all of these sources, having a mentor is helpful but not required for you to improve your skills.

If you want to climb the corporate ladder more quickly, talk to your supervisor about what you need to improve. Make it clear that you're working hard to improve, and show them that helping you improve will be worthwhile. You may be able to take classes, go to conferences, connect with other developers in the company, etc.

Mid-level, yes though you will need significant study time of the industry you're in to know what is common. This stuff is usually picked up bit by bit by all the engineers in a company and shared amongst them. You're going to have to do the research and study of all those engineers yourself just to know and meet industry standards.

While it is possible, I'm not sure I'd see it as that probable. Consider that if you did make the next killer application you could possibly make a lot of money but the chances of making something that will take off like that is rather small.

While you don't have a mentor at your workplace, couldn't you network with other programmers and find a mentor that way? I'd suggest that to improve your skills where you may now realize you have gaps is to reach out to others within a community and it may be worthwhile to find those groups where other programmers may frequent.

I'd go so far as to say that only a truly exceptional candidate can become mid- to senior-level independently. The rest of us need professional contact with our peers to advance. And that exceptional candidate? They'll probably never be able to function in a group after getting to that level.
– Ross PattersonApr 13 '13 at 0:45