Things to learn as a non-technical founder
I've written several posts about hiring and working with developers as a non-technical founder. While I don't think that it makes sense to learn to code to do everything yourself, I think having basic technical literacy will help you a lot. You can decide how deep you want to go, but even basic knowledge will make you understand developers and describe tasks better. Here are a few things few things I would recommend to learn to make you more literate:
HTML & CSS
Html is the skeleton of any web page you see online. Learning HTML will allow you to learn concepts of semantic document structure and understand how machines interpret structured information. HTML 5 is the most widely used version you should learn, though on the basic level it’s not that much different from HTML 4 that was used for years before. HTML comes hand in hand with CSS that is used to style the document defined by HTML. CSS is a standard for describing styling of an HTML document. It allows you to define various attributes like size, position, background, and color of elements in a hierarchy as well as additional properties like animation. There are a lot of tutorials you can find on google that will guide you through creating a basic page and styling it with CSS.
Server-side language and framework
A typical web app is hosted on a server accessible from the internet, processing incoming requests and sending HTML to the user. You will probably want to make your app dynamic, serving different HTML based on user’s actions and current application state. To make it dynamic, you need to write code that will run on the server serving every request. To make things simpler and to eliminate repetitive work a lot of frameworks were created and available as open source for you to use. A framework is a collection of building blocks and best practices created by other people and available for use. Typically they are well-documented with a supportive community to help you learn. I would recommend learning something like Ruby and Ruby on Rails first just because it has such great documentation that in my opinion it can be used in schools to teach web programming best practices. There are many other popular frameworks, Like Laravel for PHP and Django for Python. Choosing a language is a topic of itself, I’d recommend to ask a consultant or to look at those languages yourself and decide what you like more.
React Native to get a taste of mobile development
I think that React Native these days are easy enough to set up, there are plenty of tutorials on how to create a basic application, and you can do something basic in a matter of days. React Native is a framework by Facebook for building cross-platform mobile applications. That means that you can create an app that will compile and work both on iOS and Android. I wouldn’t recommend trying that because it’s easier said than done and you would require a specific skill to create truly cross-platform app, but the framework itself is really good to get a grasp of what Mobile Development is in a Nutshell.
Project management 101
That's something I recommend even novice developers to learn because you need to know the basics. What is Agile, why and how teams work in sprints and why you need to set effort points for tasks? Basically, any course on project management will teach you the basics and will give you a list of tools to work with and to set up your process. I wouldn’t recommend getting too deep though because it’s something you can spend a lifetime learning just like programming.
If you’re just looking to start somewhere, I’d recommend finding a tutorial that teaches you how to do the whole thing end-to-end, from setting up a local environment to deploying your app on a server or the phone.
One important thing I wanted to stress out is that things that you learn if a month or two won’t allow you to create the app yourself or finding flaws in the work of developers. It won’t happen, because it takes years of dedicated learning. A software developer is not someone who knows how to code, and it’s a person who can solve complex problems and has plenty of experience doing that. A good software developer is trained to find bugs and issues, to look for simple solutions for complex problems and see patterns where others don’t see. After all, best code is the one that doesn’t get written because there’s another way to do it, as someone said.
(Originally posted on Reddit)