HACKER Q&A
📣 muonic

How do I learn functional DevOps as a cofounder?


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).

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.

I have a few questions that I would really appreciate anyone's insight into:

(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.

(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/GCP/Netlify/etc, or anything of that nature.


  👤 de6u99er Accepted Answer ✓
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://www.dummies.com/business/operations-management/devop...

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 ) Deploy it to Google App Engine 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 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 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