Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a junior software developer and I have been working for a company less than a year.

While I always thought being a software developer means to develop software and CODE something, my tasks are more in administration type of work, such as setting up Jenkins, SQL Replication and etc.

Are these type of jobs included in a Developer role, or a developer only develops software? Should I be talking to my manager about this? Is this a common way for companies to evaluate "developing" skills?

share|improve this question
9  
Depends on who your pointy-haired boss is. –  Neil Jan 30 '13 at 15:13
    
Each company will define roles slightly differently. Ask your manager what responsibilities and expectations the role entails. –  Bernard Jan 30 '13 at 16:46
4  
There are periods of time when carpenters have to load lumber, push wheelbarrows, etc. It's all part of the job. If you're an inexperienced carpenter, you're probably doing a lot more of that than a senior carpenter. –  Bryan Oakley Jan 30 '13 at 17:01
1  
Software development > writing code. If a software developer doesn't know how to setup/use and/or doesn't know the value of (a tool like) Jenkins, then by definition they would be a (very) junior software developer. Consider it on-the-job training, and count yourself lucky that you don't work in an environment where you have to run your own CI server on your own VM maintained on your own time in order to maintain a level of software quality that's expected, yet in practice discouraged if tools like these are disallowed in their (mostly manual) "processes". –  michael_n Jan 30 '13 at 19:58

6 Answers 6

up vote 11 down vote accepted

Sounds to me like they hired a junior because they couldn't afford a senior, rather than because they actually wanted a junior (someone they can invest in and mentor until they become a senior). I have managed a team who had that decision forced upon them by managers who didn't know better.

He ended up with all sorts of unfortunate jobs like creating training videos for users and such and I still feel guilty about it now, but I was under pressure to deliver and the expectation was that adding a head to the development room would only speed things up.

It's unfortunate, because it puts you and your boss in tricky positions.

He probably doesn't have any work he can trust to a junior, and any seniors he might have can't be distracted from their day-to-day. The easy way out is to give the junior lots of non-development tasks, which he also doesn't really want to waste senior developers' time with.

But a few problems arise from this.

First, the kind of devops jobs he's giving you really require a senior developer. Particularly, a build server should be set up by someone who is building the software and knows where the pain-points are.

Second, the junior isn't becoming more useful. After five years of this, you'd still be doing the same tasks, because you still couldn't be trusted with actual development work.

Third, the junior will eventually (as you have) realise that they're not helping their own career. The assumption that juniors are low-quality, rather than low on (and looking for) experience is a terrible, but very common, mistake in this industry.

So, yes, sit down with your boss. But understand the predicament he's in. See if you can come to some arrangement which solves everybody's problems. You are going to need a senior mentor and some of your current tasks are going to need to be passed on to a senior. This will slow the project down but, in the long run, it will pay off. That's the point you need to get through to your boss, and possibly to their bosses. Also, see if you can find something you can offer in return to mitigate the costs.

If you can't then you might want to look elsewhere.

share|improve this answer
    
These are NOT "senior developer" tasks. This (jenkins) is just following instructions. Senior dev's decide the path (from experience), junior dev's follow the path. If a junior developer complained about setting up jenkins, I'd look for another junior developer; the time it takes to set it up is less than the time to post this question and read the responses. (I know, because I've set up hudson/jenkins many times. And database replication. Sooo many times.) "Just do it," then you'll know how. If you never learn how to do anything, and expect to lead, you're nothing but a PHB in training. –  michael_n Jan 30 '13 at 20:08
    
@michael_n: Completely disagree. There's a difference between setting up Jenkins and setting up the whole build environment in a way that it reduces effort on the part of all developers, while allowing safe, one-click deployments, etc. And that's the difference between what a Junior will give you and what a Senior will give you, when asked to set up a build server. –  pdr Jan 30 '13 at 20:18
    
...and yet I agree with you: "There's a difference between setting up Jenkins and setting up the whole build environment." Exactly. So, I guess it depends if you interpret the question literally (I did). Installing jenkins is an afternoon; setting up your make/ant/maven build takes days, and can easily turn into weeks, & must be done right. Good managers can break things down and delegate based on experience (in this respect, I've been a bad manager in the past, opting to do everything myself just because it would actually be faster. But that doesn't scale, and the "team" doesn't evolve.) –  michael_n Jan 31 '13 at 11:30
    
@michael_n: See what you mean. I tend to have lower expectations of a manager, I guess. Particularly one who hires a junior for financial reasons, rather than future planning. –  pdr Jan 31 '13 at 12:18

I find the term "Software Developer" to be synonymous with "Programmer". Thus a software developer is a person whose primary responsibility is to write code. In my first job, my title was "Developer", and my primary responsibility was to design and code software. But I think that there is no exact definition of the term. It is used differently by different people, thus the meaning becomes fuzzy.

But for a development team to work efficiently, you must have these things set up, CI servers, SQL replication, Deployment to test servers, monitoring of test servers, archiving of builds, etc. (Maybe not all of them applies in any situation).

These tasks will take up a large amount of time in a project's initial phase, but will take up a smaller amount of time once you have a nice setup running.

Unfortunately, developers would rather code than managing build servers. Therefore often, these boring tasks fall in the hands of junior developers, as the senior developers have more important tasks.

I have not experienced any company that uses these tasks as a means to evaluate skills.

If you are dissatisfied with your current responsibilities, I would suggest taking up the issue with your line manager.

share|improve this answer
1  
There is a difference between the terms according to this. –  Bernard Jan 30 '13 at 16:49
1  
also according to this –  smp7d Jan 30 '13 at 19:38

It depends. It seems that different companies define this differently and for some it is an umbrella term for an array of technical functions. For some it is just a title. Asking the same question before, I got an answer similar to "Only developers have the capability to do this in our organization", I'd say maybe, but that does not necessarily make it development).

The theoretical answer is that a developer (comparing with coder/programmer) is a person who "solves problems" even if they do not have to do with "coding something".

You want to code more, so maybe ask your manager for more coding tasks or to do some of the things you do by coding? You mentioned operational stuff, so maybe some of them could be done by DevOps frameworks (check chef and puppet), which will make the functions more efficient and are close to development.

share|improve this answer

It is not uncommon for a Developer to be expected to have some system administration skills. As a senior developer, I estimate that about 5% of my time is spent on such tasks.

However, if you are not doing any coding, then you probably should talk to your manager about getting coding tasks. After all, you want to build up coding experience. You are also more valuable as a programmer than as a system administrator.

share|improve this answer

Code is not terribly useful if it doesn't get built into an application properly, or access the correct data, so the activities you list seem very much in line with what a developer does. I should add that software developers also get very mixed up in documentation and testing as well. These are activities necessary in the production of software.

It's great if your company has specialists that can do this stuff for you, but if not, software developers are responsible for everything up to (and possibly including) deploying an application into production and supporting it there.

share|improve this answer

It is fairly common for a developer in a small to medium sized company to take on some server administrator/DBA/general configuration tasks.

However, if these tasks start to become the bulk of your responsibilities, it may be something to be concerned about depending on your career goals. Though you can probably thrive within certain companies as a general technologist, when you need to move to a new company it can cause many issues in your transition. If you are not doing any traditional development, you need to be sure to make that clear on your resume. If you want to get a job in straight development after a stint in a job as you described, you may have to accept something you are "overqualified" for based on years in the industry.

On the other hand, there may be companies looking for developers with diverse skills. But with the current trend of writing code in interviews, you will need to have top notch coding skills as well, even if the job requires little code once you get in.

If you don't want to get stuck in your current position, I would definitely try to remedy the situation soon.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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