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'm 8 months into my first job as a developer at a mid-small company. The four development teams have about 7 developers each, the design team consists of about the same number, and the administration / sales / marketing / hr team is 4 people.

We mostly develop web apps, a one-time deal, to run on the client's (usually existing) environment. I'm finding myself setting up development environments to match, usually things I've never used before (from C#.NET 1.1 and MS-SQL to a regionally developed WAS called JEUS), which takes a significant amount of time.

Sometimes I get help from other developers but mostly I follow online tutorials until it seems to work, and then I spend more time fixing my code when it breaks because the settings aren't exactly the same as the actual environment.

I'm starting to think that one guy who specializes in this stuff would make it much easier for the developers to actually do what they're paid to do. When does it make sense for a company to get a dedicated systems engineer? Or am I wrong and should just suck it up and learn to do it? I do realize that being familiar with different environments would improve my employability...

share|improve this question
    
I hope you document how you set up the stuff you do, so the next time someone has to do the same thing, they don't have to reinvent? –  Matthew Flynn Oct 18 '11 at 16:27
    
@MatthewFlynn I document what I do on the project Trac server wikis, for the ones that do have a Trac project open. The rest I'm saving to a text file until someone gives me something better to put it on. –  bdares Oct 19 '11 at 0:05
add comment

3 Answers 3

up vote 4 down vote accepted

My experiences working at a company with less than 20 people are that as a software developer I have to be top of the food chain and wear many hats.

When I say top of the food chain, I mean that I am expected to excel at any IT problem thrown at me and surpass the abilities of my IT peers who work in a non software development role. By wear many hats I mean that I do need to play many different IT roles from time to time.

My peers consist of tech support, pc support specialists and a webmaster/network administrator/QA. Besides QA, if the network goes down and the guy responsible is not in the office that day I am not only expected to fix the problem but do it better than the guy who was hired to do it. Same thing if the website goes down and same thing if all the tech support people are on the other line and a password needs reset for a user.

They don't view it that my skill sets are just coding/developing, but that these other IT professionals are there to shelter me from the daily grind of running a successful business so that I have time to work on projects with minimal distractions.

Whatever you are struggling with, take the time to learn it and be happy you are learning a new skill because if the company falls into bad times and they have to let half the team go, they are going to get rid of the software developers who only code/develop and who only code/develop exactly what is written on a spec without question.

share|improve this answer
    
+1 for the Broad IT skills needed to be effective in a small company –  Ptolemy Oct 18 '11 at 13:34
add comment

IMO there are two issues here:

  1. Should you learn to setup / maintain all these different tools / environments? Needing to call the IT helpdesk whenever there is some configuration issue with a web server slows you down a lot. So in the long run you are probably better off learning these tools, at least to some level. You don't need to become a guru, but you should be able to e.g. spot common setup issues. As you note, it may also increase your market value.

  2. Do you need reproducable development / deployment environments? Absolutely. Even a system guru isn't a very effective help if your development / test / staging / production environments are set up in an ad hoc way, so you can't reproduce a production bug in your debug environment.

    Your team(s) need(s) to develop standards / procedures to achieve reliable, deterministic builds and deployments. E.g. put all (or as much as possible of) your tool configuration and/or install packages under source control, and write scripts to deploy it to a specific host at the press of a button. Existing build / continuous integration tools might also help in these tasks.

    Last but not least, this also reduces the developers' workload of environment setup related tasks, alleviating your (and everyone else's) problem.

share|improve this answer
add comment

When does it make sense for a company to get a dedicated systems engineer?

Logically, when enough of this type of work exists to occupy one FTE

Off course the consequence would be that the might be able to do with one less programmer

share|improve this answer
add comment

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.