29

I joined a start-up recently as their first software developer. They want to build a mobile app in-house, but they have no infrastructure for development. - I wasn't told that before joining. They made out they had a small team already.

Usually when you join a company, they have procedures and tooling already setup.

This got me thinking, who is usually responsible for setting all this up, all the tooling, procedures, dev servers etc... is there a job title for this kind of thing?

I want to know so I can suggest my boss hire another person to handle this. Just saying "another dev" isn't good enough, as most devs haven't done this. I want to go back to my boss and tell him what position he needs to advertise for.

  • 2
    Does this answer your question? How do I choose an appropriate job title? – Bernhard Barker Jul 22 at 6:42
  • @musefan, I had the same thought. The person to set up all that is whomever is hired first or who gets to the task first. IE: "What's the job title...", IDK, what's your title? ... and that would be the title you're asking for, because it's you. – computercarguy Jul 22 at 19:53
  • 2
    You cannot do this job or feel you are junior developer? – i486 Jul 24 at 9:22
  • I'll second the point @FreeMan makes, just pick up the challenge. Even if you fail you will learn a lot. Even if you don't want your career to move in that direction it will make you a better developer as you will have a better understanding of the full life-cycle of the things you are building. – AVee Jul 25 at 12:10
43

who is usually responsible for setting all this up

In a small startup, whoever can, does. There is no special title required.

This goes for any tasks that need doing - from cleaning the kitchen to setting up infrastructure. In a small startup, you usually don't have the luxury of over-specialization.

In one startup where I worked, I was hired to build the QA team. I spent part of my early time there setting up cubicles and running ethernet cables. I also cleaned the kitchen when it was my turn to do so.

| improve this answer | |
  • 7
    This is really the correct answer to this particular question's situation. – D. SM Jul 22 at 17:19
112

It's called "DevOps". It's a mixture of development and systems admin blended in with security and site reliability. There is an enormous amount of stuff that the title of DevOps Engineer conveys, but setting up initial infrastructure, environments, security and the automation to maintain them primarily falls into that category.

| improve this answer | |
  • 18
    @flexi In my experience it can differ significantly between different companies and what they're trying to achieve. A DevOps engineer might be just setting up deployment pipelines/git integrations/etc, they might be helping devs to define patterns (branching strategies etc.), they might be handling infrastructure/cloud/network architecture/provisioning. We had a DevOps guy build our SOEs for us. It'll be made clear in the job ads or at least the interviews what they're looking for exactly, but that title is generally the one they'll use. – Kayndarr Jul 22 at 1:45
  • 11
    @Kayndarr at a start up a DevOps person is a catch-all. There really aren't a lot of separation for responsibilities. At a larger company that might be the case certainly. In the OP's example it doesn't really fit though. – Joel Etherton Jul 22 at 2:56
  • 12
    This has become a meaningless buzzword, originally intended to convey the exact opposite idea of OP's description. – chrylis -cautiouslyoptimistic- Jul 22 at 17:49
  • 4
    @chrylis-cautiouslyoptimistic- Please provide some references. I would love to read any articles you could provide to support your claim. – Joel Etherton Jul 22 at 19:03
  • 7
    "DevOps" carries with it the idea of being both developer and operations--that's literally what the title says. Very often this is practice as much as it is a specific position, and it often implies things like "full stack devs are responsible for their own cloud architecture and deployments." If the company is big enough that someone's entire job is managing this sort of infrastructure, then it's just "Ops" (i.e. "Operations"). It's not totally clear to me which term the OP wants. – GrandOpener Jul 23 at 0:12
47

I'm a little reluctant to use "buzz-words" such as DevOps ... which are "right-now in vogue" and therefore sometimes hard to anticipate.

If you're looking for someone to, for example, set up the computer hardware, troubleshoot the networks, take care of software updates, then I typically see terms like "IT Operations Manager." This person's responsibilities are usually fairly broad.

However – in the short run, at a startup, I daresay you need to be prepared to "get your hands dirty" for a little while.

| improve this answer | |
  • 4
    Yeah, this isn't a full time role, it's pretty normal in small companies that haven't gotten everything worked out yet – Kilisi Jul 21 at 23:53
  • 1
    Even in big companies. Mine has +5k people, but only few SW engineers. A small group of embedded engineers did >95% of the "DevOps" work needed specifically for embedded development. – Tim Jul 23 at 7:55
  • 1
    Yes. We spread the 'DevOps' tasks around our small team of 5-10 devs as it's an interesting skill to pick up. – Devilscomrade Jul 23 at 14:13
  • Yeah it is kinda buzzwordy but the thing is it doesn't really matter what the title is at the end of the day as long as the role's responsibilities are clearly laid out. And for "DevOps", even when it doesn't completely hit the nail on the head, it at least does an ok job at communicating the gist of what's required. Add a little job description in job advertisements and it'll clear it right up. – Jason C Jul 23 at 22:39
  • I agree it feels a little hokey to write "dev ops" on somebody's card in like a 3 person startup, though, haha. – Jason C Jul 23 at 22:40
11

There are levels of specialization here.

A person who is completely dedicated to building and tending a CI pipeline is traditionally titled a build engineer. In most places, however, a more generalized DevOps engineer (what the system administrator job has largely morphed into in 2020) does a mix of setting up the CI/CD pipeline, automating infrastructure, monitoring and incident response, and other things. Usually once the pipeline is set up there's a modest amount of changes many of which are made by the developers, so only large places have an actual dedicated build engineer (or the business equivalent, a release manager).

Of course, since this is a "side gig" in many small/startup organizations, it'll be a developer, or QA engineer, or someone that does the initial setup, just taking on that role for a limited time. It's usually not a lot of work - for mobile apps, search around on what you want to do, and solutions like Ionic Framework that have a custom CI system for mobile apps will show up. In your case any engineer that's done it before should just do it.

You can also call in time-limited consulting help, though then you get to use a pipeline someone else made, which is suboptimal. Only do this if existing staff really just has no idea what to do.

| improve this answer | |
  • 5
    For me until now the other answers are all wrong to me since they state the position which you should be looking for is a "DevOps" role. Since DevOps incorporates both, but the OP explicitly asked for someone for the infrastructure, your mention of the "build engineer" is THE answer. Despite all other mentions of the "DevOps" role are also correct because 1-Dev-StartUp smells totally like "DevOps" – Chris Jul 22 at 21:07
  • When you have a development team of one, that which is suboptimal for a larger team is often the optimal solution. If a shrink wrap solution takes just a few hours to set up but wastes a little bit of time each day and you compare that to a custom job that takes much longer to build, there is no spreading the cost in time saved by a better solution among many users. 1 Person having to make a few extra mouse clicks an hour is a lot cheaper than 50 people doing that. Also, small businesses often can't afford big one time investments, even when they are cheaper in the long run. – Nosajimiki Jul 23 at 15:38
8

Typically such an environment grows naturally over time instead of one person setting everything up that you are used to from more mature companies. Assuming you know what infrastructure you need, in principle you could look for a system administrator who will take care of setting up server infrastructure (hardware or virtual servers or cloud solutions etc.), install standard tooling and the like. You might need separate roles to evaluate licenses from a business perspective, especially at the start this might fall into the role of existing managers that are responsible for other expenses already.

If you don't know what tooling you need you might need a senior developer or architect too.

Note that especially at a startup, it is often common to take on some tasks outside your core role. It's in the nature of the startup to not have people of every speciality and to get your hands dirty in areas you're not so familiar with. So it might be your boss expects you to take care of setting up at least a minimal tooling infrastructure for the time being. At least don't be surprised if your boss assumes you can do that.

| improve this answer | |
6

If your company is that small I would suggest you don't hire a new employee to fill this role at all. It generally takes a lot less work to build and maintain an infrastructure than it does for developers to utilize it; so, you will just have a guy sitting around on his hands most days costing your company a paycheck (or stealing your job outright).

Instead you want to find an IT consulting firm. These are companies that specialize in doing IT work for small businesses; so, they can afford to hire experienced and specialized labor then spread the cost of those employees out to all the small businesses they do work for. The IT firm (if it is a good one) should actually have multiple specialists. First you will have a Project Manager evaluate your needs, then based on his recommendation you might have a Network Engineer come in and set up your server room, then you might have an IT Technician setup standard systems like backup routines, anti-virus software, virtualization, etc., then you might have a Build Engineer, Backend Engineer, or Full Stack Developer come in and set up your tech stack.

Unlike hiring a single DevOps person for the job who is probably not going to know everything, you are actually hiring a team of very experienced people who together can do the same quality work you would expect out of a very large and well established company's IT team. When you do need support, it typically costs more per hour to use an IT consulting firm than do it in house, but in all likelihood you are probably looking at a job that will take less than 20 hours to set up and just a couple of hours a month to support; so, even if they charge you $100-200 per hour, you are still looking at a smaller cost than a full time guy at $25-50 per hour.

| improve this answer | |
  • A build engineer per ca. 5 developers is pretty normal, actually. The workload tends to slow down a bit after the initial setup is fully automated, but whenever anything changes - new workflows, new release processes, new tools integrated - the build engineer is back into full gear. – toolforger Jul 24 at 6:50
  • Exact ratios will vary a lot based on what and how you are developing, but yes, I agree that there will still be work to be done post initial setup. The numbers I suggest are based on what I see consulting firms normally put into small businesses so my numbers probably seem a bit deflated since there will be a lot less time spent on RnD and more time spent on shrink-wrapped solutions. In many cases though, consulting firms have ready environments they can install & update with a script or iso that can turn what is normally a one off several hour process into a simple install procedure. – Nosajimiki Jul 24 at 13:50
2

In the game development industry, I have often heard and used the term Build Engineer or Build Engineering Team to identify this kind of role. In other areas this may not be as common.

| improve this answer | |
1

The role is called DevOps and requires both complete developer background and lots of additional expertise in build tools being used (also scripting, etc). DevOps is not an architect of course but not a junior role either and you should not feel disrespected for getting this assignment.

| improve this answer | |

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .