
Ask HN: How do I learn functional DevOps as a cofounder? - muonic
I am in the very early stages of developing a venture with a colleague in my PhD cohort (in computer science). He works in CS theory and lacks a lot of actual functional tech skills (he only took one programming internship during his undergrad), whereas I am only slightly better off (my research is in machine learning; I have approx. two years of full time experience at FAANG companies and regularly write Python code for my research).<p>Essentially, we are planning to try to package a recent development in our research as a B2C (web)app. Neither of us have any experience in this type of development; I currently do most of the coding on the research end of the code, whereas he has been handling more of the nontechnical aspects. We are planning on hiring a developer to build the webapp but personally I would have qualms with not having strong knowledge of both the webapp stack as well as the deployment, so I am currently on planning on learning some basic devops so I can oversee deployments and infrastructure as we slowly scale.<p>I have a few questions that I would really appreciate anyone&#x27;s insight into:<p>(a) Would it be a mistake to outsource the development of our webapp for a long period of time (say, ~6 months) without anyone on our team acting in a CTO role? I will be continuing to develop the backend core of our product in Python, but I know nothing about web development and have no desire to learn.<p>(b) Can anyone recommend good resources for someone looking to handle the devops of their product? Is this too ambitious of a task for someone with no experience in such things? I know my way around Git pretty well, but have never properly worked with CI tools, AWS&#x2F;GCP&#x2F;Netlify&#x2F;etc, or anything of that nature.
======
de6u99er
Good DevOps are people with lots of experience in software development,
architecture, and infrastructure automation (and the lack of automation). This
can not be learnt quickly.

IMHO you're looking for someone like me who would rather work for one week day
and night on automating something than investing a couple of hours every once
in a while to do or have someone else doing it with manual interventions.

Just so you understand what I mean by that. I have 20 years of professional
software and data engineering experience, had to manage my own infrastructure
when I was working for a small consulting company, or had to cut (or
circumvent) lots of red tape at a big pharma company when dealing with
infrastructure admins to automate my projects, built my onpremise software
defined compute and storage cluster. And I learn programming languages as a
hobby.

Nevertheless, here's some links that might be a good starting point:

[https://about.gitlab.com/devops/](https://about.gitlab.com/devops/)

[https://www.dummies.com/business/operations-
management/devop...](https://www.dummies.com/business/operations-
management/devops-for-dummies-cheat-sheet/)

[https://landscape.cncf.io/](https://landscape.cncf.io/)

(I might add more as reply to this comment)

------
de6u99er
My other comment was about your second question (b).

About your first question (a) I think it would be a mistake to just outsource
it without good oversight. An Austrian saying which IMO answers your question
best comes to my mind "Wer nichts weiß, muß alles glauben!" which translated
to English means "Who doesn't know anything, has to believe everything.".
Means you want to know if good decisions are being made.

------
nelsonic
Hi @muonic, this is a great question many people tech founders face. The short
answers to your questions are:

a) Don't hire someone else to build the "core" of your App; only you know
_exactly_ what you want/need. If you have Python skills, build it yourself
using the tools you already know (e.g.
[https://www.djangoproject.com](https://www.djangoproject.com) ) Deploy it to
Google App Engine
[https://cloud.google.com/appengine](https://cloud.google.com/appengine) and
side-step the DevOps learning curve.

b) Decide which Platform as a Service (PaaS) is right for you given the type
of App you are building and learn that _after_ you have a working demo of your
App.

Longer explanation:

If you hire someone _inexperienced_ (i.e. "cheap") to build your App, you can
almost guarantee that you will need to scrap and rebuild it much sooner.
Inexperienced developers will skip fundamental software engineering principals
like automated testing, following security best practices or documentation and
code-reuse. Build the MVP yourself and then bring someone onto your team once
you have a good setup in place and need to add features.

When you are building an "MVP" of an App, you _really_ don't want to be
thinking about infrastructure; it's a distraction. Use Heroku, Google App
Engine or Firebase to handle everything for you and focus on the _features_ of
your App that users will want (and ideally pay for).

As @de6u99er noted, DevOps is not something you can learn in a hurry. There
isn't one _single_ book you can read to learn everything you need to know.
There are too many unknown-unkowns when you combine creating an App from
scratch and thinking about the infra. If you can ask a friend or former work
colleague to help you with DevOps _after_ you have built the MVP you will have
a much clearer idea of what is required.

You can share an App running on your localhost with people online using a tool
like Ngrok see: [https://github.com/dwyl/learn-
ngrok](https://github.com/dwyl/learn-ngrok) And when you are ready to deploy
it, ask the Internet how to do it (people on HN are very helpful) and you can
learn that specific subset of DevOps.

Write a _log_ of everything you learn e.g: [https://github.com/dwyl/learn-
devops](https://github.com/dwyl/learn-devops) so that everyone on your team
knows how your system works. Once you out-grow the _manual_ approach to
DevOps, consider automating it. But right now, DevOps is very much "YAGNI"
[https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it](https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it)

