4

I'm working on a project (gararge startup) with a dev that I perceive to be the "cowboy" type:

  • typically works alone,
  • deploys untested code in production
  • doesn't use a source code repo
  • makes arbitrary schema changes to the database
  • Hacks on features first and fixes bugs later
  • Forgets the members of the team's need for communication and collaboration

The sticky situation is that it's his dev project and he's the de facto leader. I stepped in to help stabilize the web app and scale the infrastructure. I have hacker roots but the hacker has been sanded out of me after years of sysadmin and DevOps in corporate environments. It's a real "Odd Couple" setup where the dev is playing Oscar and I'm playing Felix. I'm more of the scientific, rigorous, disciplined type. We've had discussions about Agile, best practices, implementing DevOps. He's tried the code and test on local, deploy to stage and test, then deploy to prod approach. That lasted a bit more longer than a week. He complained that syncing databases between stage and prod was too cumbersome then went back to his normal coding habits. We discussed this and he expressed the need to "move fast" which means to me that he thinks that proper development process and practices will slow him down. So now if I want to set up a dev or staging env,

We're also recruiting other devs which means connecting with his college buddies hiring them then figuring out what their going to do. To me, it feels like he's organizing beer pong night than a technical team.

I have to grab the code and database from prod which is filled with bugs. If I want to test the whole system including his code, I have to work with what I'm given. And the bugs in his code cause web pages not to fully render, trigger http 500 errors, and other issues that are skewing the results of my systems testing. I just want clean code with predictable results so that whatever systems stability problems and performance problems fully reflect the system. It's hard enough work building the systems tooling and building recipes and templates to produce consistent environments.

I've only been part of this project for two months. Experience wise, I'm more senior than him but he's the co-founder so I'm dealing with some interesting politics/dynamics of "who's the boss". From his perspective, I'm the systems engineer and coaching him on his coding and deployment process is a bit outside my scope. Also I can be blunt and direct in my communication I had a few diplomacy fails while discussing these issues. Taking this in consideration, how do I get us on the same page and working together with more sane working and dev practices?

  • What exactly is your position/role in this company? – Brian Feb 27 '15 at 19:52
  • Systems Engineer/DevOps. The way things work at this shop nobody has assigned job titles or roles. That said, I have a habit of stepping into the leadership role when I perceive a leadership vacuum. Which may get me into trouble here. – dperry1973 Feb 27 '15 at 19:59
  • Who hired you to work for this startup? This developer co-founder? Or another co-founder? Were you explicitly hired to "help stabilize the web app and scale the infrastructure"? Or was that a goal that you have taken upon yourself? – Carson63000 Feb 27 '15 at 22:29
  • He complained that syncing databases between stage and prod was too cumbersome Maybe you need to fix this for example? E.g. use a script that populates the DB in a defined state automatically whenever your push to stage – Brandin Feb 28 '15 at 9:19
  • Your comment The way things work at this shop nobody has assigned job titles or roles. is probably more important than the technical details or specific practices of your coworker. Call a short meeting for everyone to sit down together and say "Look, here's what we all want to accomplish, and here are my thoughts on the roles we need to take over the next few months to make that happen.". Whether you define roles or not, people have got them. But it's a lot easier if everyone is on the same page. – Brandin Feb 28 '15 at 9:24
12

That is not just problems. That is a recipe for disaster.

How can the company even function if production is crashed most of the time?

I don't see how you can find common ground with practices that are that bad? If he moves 20% that is still still disaster. It is not just a training thing - he does not accept structure.

I don't see how a start-up can survive like this. Who is shelling out the money for more developers. You either need to talk to the money or just ride it out. If cowboy is the money then ouch.

This star-up will either learn to function or run out of money. Unless it has some deep pockets then start looking for another job.

2

I'd say he needs you more than you need him at this point. The coding and deployment process may be outside your scope, but he needs the coaching regardless.

Maybe you should explain the consequences of his actions to him. Lay out exactly what his poor coding / deployment processes do to damage his business.

You mentioned that he is a co-founder. If you can, talk to the other co-founder(s) and see where you can get with that approach.

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