24

I am a self-taught junior C# developer currently working for a small business making its first steps into the software industry. Up until I joined the business, all software development was outsourced to a sister company, something that I was not aware of when I accepted the job.

My main problem is that I come from a game development background and I am now working with technologies that are almost completely new to me, such as knockout.js, ASP.NET, MVC and other associated web technologies. I've tried to work as closely as possible with the senior software developer at the sister company and he's as accommodating as he can be, but we are based in different offices in different cities. I can't shadow him anywhere near as much as I'd like. As a result, I'm pretty much having to teach myself these concepts in my free time after work so that I can apply them as rapidly as possible and I feel like I'm struggling to keep up the pace. The CEO is a fantastic businessman but knows next to nothing about software development. By his own admission, all of the work done by myself and the other software developer at the sister company may as well be ancient Greek to him. I've found it quite difficult to be able to understand what he expects of me as an employee, and a junior employee at that. I don't really know if he expects me to be as skilled as the senior at the sister company at this stage in my career.

As much as I love what the company is doing and the people I'm working with, I just don't feel that this environment is suited to a junior. I'm mostly working alone using unfamiliar tech and I can't turn to the boss for help because he isn't a programmer. I feel like these factors are contributing to me not being as useful/productive as I could be.

I in no way lied on my resume or during the interview, I was very open about my skillset. This feels like a job I should be doing years into my career, not when I'm just starting out.

I'm considering restarting my job hunt and finding a company that would be more suitable for someone in my position, but it took me a long time to find this job and I have no formal qualifications to speak of in IT. I feel like I really need the experience from this job but at the same time I'm struggling.

Can anyone offer any advice to help me process through whether I should move on or stay?

  • 37
    Welcome to IT. Struggle, learn, grow. We have ALL been making this up as we've been going on. – Retired Codger Jun 13 '16 at 13:36
  • 6
    From my own personal experience, I suggest you keep fighting for a while more. There is definitely a pot of gold at the end of the rainbow. Switching technologies in IT works that way. Long struggles lead to great rewards. – Masked Man Jun 13 '16 at 13:41
  • 5
    If you have "no formal qualifications to speak of in IT" then use this as that opportunity. Pace yourself and learn day by day. Use some work time to learn. – paparazzo Jun 13 '16 at 14:04
  • 10
    You might want to read about the Impostor Syndrome, all software developers I know went through this phase. – Matthieu M. Jun 13 '16 at 14:20
  • 7
    Speaking as somebody in your situation only recently (though in my case, I was literally on my own when it came to learning how to program), Come to Code Review. It's not quite as effective as having your own personal mentor, but it's pretty damned close. – Kaz Jun 13 '16 at 14:30
49

I am now working with technologies that are almost completely new to me

This will be most software development jobs.

I wish I could say something more encouraging, but many of us use technology that didn't exist several years ago.

a junior employee at that. I don't really know if he expects me to be as skilled as the senior at the sister company at this stage in my career.

Well, if your interview process was clear that you were a junior then I would not worry too much. I expect that if you did have reason to worry (unrealistic expectations, etc) you would have listed them here.

I'm considering restarting my job hunt and finding a company that would be more suitable for someone in my position, but it took me a long time to find this job and I have no formal qualifications to speak of in IT.

Some thoughts:

  • It's normal to feel this way. Very few people take their first job in their field and don't feel overwhelmed. It's perfectly normal to feel that way.
  • Don't give up so easily. Your post kind of reads like, "it's hard, should I find a new job?"
  • Your first job matters. It makes it a lot easier to get further jobs if you have 1-2 years of experience doing something. You mentioned yourself it was hard to get this job. It's probably worth sticking it out for a while so you can both build experience.
  • Your code will suck. Nearly everyone reads code they wrote in the past and thinks, "what was I thinking?" While not justification for horrible code, it's normal to feel this way.

Also, your ability to interview will be greatly improved if you can talk through your struggles with this company and what you did to overcome them. Being able to talk through a hard situation, what you did to improve it, and how you found ways to get better is a really great interview answer. A lot better than, "it was hard, so I left."

There will be times when you are overwhelmed and it is time to quit. But those times should be identified not by feeling overwhelmed but by seeing that you are both not learning anything and completely not contributing value. You don't mention how long you've been at this company. The companies I have worked for assume around 6 months before people are really effective. I've seen this even higher in the IT/software dev world.

Until you do not believe you are progressing or learning anything (and have felt this way for many weeks if not months) and are completely stuck I would consider sticking it out.

  • 3
    +1, especially for the first part. I've been a developer for 18 years, working mostly in PHP. Hadn't written an app yet. This weekend I decided to build a small app for fun just to learn Ionic. That's what developers do to get better and learn. – Doyle Lewis Jun 13 '16 at 13:51
  • 5
    Having been in this situation 3 years ago, I can tell you it certainly gets better once you better understand the technology. Unfortunately it's very well possible (and what happened to me) that by the time you've mastered a new technology, it will be replaced by something else! Very brutal when starting out your career, but you will end up mastering the art of mastering the new tech quickly ;) – Thebluefish Jun 13 '16 at 13:52
  • 3
    @Thebluefish not only just technology but the entire process of software development. When you first start out, you are learning everything about everything. Much of that process translates into other technologies. For example, most languages have different build systems but nearly all have some build system - once you understand one, you can much more easily learn another. Same with testing. All new initially, but over time you start being able to apply unit testing ideas to other languages (even ones you never have used). – enderland Jun 13 '16 at 13:54
  • 1
    +1 I once walked into a job knowing NOTHING about the technology used. I bought one of those "In a nutshell" books, and learned as I went. – Retired Codger Jun 13 '16 at 14:15
  • 4
    Nearly everyone reads code they wrote in the past and thinks, "what was I thinking?".... yup, like twice a week. You're not a true developer until you've been fixing a bug and thought "Which incapable moron checked this crap into source control?" before checking and discovering you are, in fact, the aforementioned incapable moron. – Jon Story Jun 14 '16 at 14:23
19

I mostly agree with enderland's answer, but would like to offer some advice based on my own experience.

Working for that small a business as a junior dev is indeed very tricky. It presents you with a great opportunity, but also with a lot of stress, and the possibility of picking up bad programming practices. And I know what you're going through, because I was in that same situation at one point.

My very first co-op was for a similarly small company - I was the only developer, and thus also the IT guy. My official job was to create a very complex piece of software (sort of an online ordering system, but for a very technical product with a lot of logic and validation built in). I was not only new to C# and ASP.NET, I had, in fact, just learnt HTML, CSS, and was still shaky on JavaScript. The owner knew that I was incredibly junior, but hired me anyway - he could get me for cheap compared to a "real" developer.

And so, be warned: for a lot of these small companies, especially when the owner doesn't understand the field, they may not be hiring you necessarily because they place great trust in your abilities, but because they can't afford anyone better. They still expect the world of you, of course.

Just like yourself, I had to learn a LOT on my own. Basically everything, in fact. It was very stressful, but I eventually got a pretty decent system set up. Or at least so I thought at the time - in retrospect, it was an insult to programming.

However, at the time, I gained a lot of confidence in my ability to tackle future projects. The responsibility I carried also looked great on my resume, so it was very easy finding a second co-op for a much better company.

There are also downsides, however. The biggest is that you have no one reviewing your work and giving you feedback. You could confidently be writing horrible, inefficient code and not even suspect it until you change jobs and suddenly people are scratching their heads at your work.

And so, while I think that this sort of job is a great opportunity to learn on your own, and will leave you with a lot of good experience to put on a resume, it's also not a great place for a junior dev to learn the trade because of the very high potential of picking up bad habits, and simply leaving holes in your knowledge that you're not even aware of.

  • 3
    +1. I debated adding something like this into my answer, glad you saved me the trouble :-) There are drawbacks in being a "solo dev" situation but I do think that the short term benefits (learning to learn, writing a TON more code than on a big team) are well worth it in the short term. I would definitely recommend against staying a solo-dev situation for one's entire career for exactly these reasons. OP also has a senior dev hopefully at least looking over their code, too, which is a huge advantage. – enderland Jun 13 '16 at 13:59
  • +1 this happened to me when I was a developer, ended up learning a lot more working with more experienced professionals on side projects – bobo2000 Jun 13 '16 at 14:11
  • +1 I've been there too. You learn a good deal from these kinds of jobs and IMO, the experience is worth the lower pay. When you get to your next position you're battle hardened. – Retired Codger Jun 13 '16 at 14:48
  • Not all people with the title senior developer will be able to improve the code of others. – Amy Blankenship Jun 13 '16 at 15:21
  • 2
    @8protons - If you make a habit from jumping from job to job that will raise red flags to future employers. I would say you should stick with a company for at least a yr. This is still a short time, but at least you can claim to have learned the job. When asked why you're leaving you can say that while it's been a great learning opportunity you realize that at your experience level you need a more structured environment in which to grow. It would be best to stick around for 2+ yrs, but needs must. Don't make a habit of jumping every 2 years, as that will damage your career. – AndreiROM Jun 13 '16 at 17:43
3

As a bit of a veteran developer (Senior Software Developer at a medium-large company atm), I can certainly remember this feeling!

The answer is actually quite simple, and I'd say it can be broken down into a few simple points.

Firstly, you need to realise that, in many ways, being a junior is more difficult than being a senior. As a senior dev, I rarely see something that isn't at least similar to something I have worked with, so my experience actually makes my job easier - equally, I spend a large amount of time re-writing juniors code to and doing boring manager-type stuff like that. A junior position != an easy position, it's a position in which you are given permission to struggle with the work assigned to you, in which you are expected to take a bit longer with stuff, produce lesser code (to an extent - don't push it!) and it is understood that you are essentially learning the trade.

You are working with technologies you have never seen before like Knockout.js: Well firstly, my condolences, KO is awful - but I too am forced to use it at work. Realise though, that this will never change. At no point in my career have I not been treading water learning some new tech I've never used before - you have to keep learning continually, and this is definitely a good thing. Through experience, as I've said, you'l get better at picking up new tech, but you'll most likely never stop learning new stuff at a slightly faster pace than you are completely comfortable with.

Start to look at your position as akin to an apprenticeship role. You are there to learn the ropes, and pick up the extra skills. You are a junior, so if you mess up - don't panic. You'll no doubt piss off some people with your mistakes at various points, but although devs will not be shy about expressing that, they mostly also appreciate that juniors are juniors, and still learning.

The people around you, including the seniors, are all pretending to be slightly better at what they do than they appear. It's just how it works.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.