Minimum Viable (Business Person) Coder
Happy new year everyone. I really hope all of you will have a productive and successful year 2012. Like everybody else I have made a few plans for the 51 weeks lying ahead of us. On top of my list was to continue to learn what I have started last year: I will continue to learn coding!
Overall goal
Before starting to learn to code everybody must think about his / her own goals. Like with every goal, you have to ask yourself whether and for what specific reasons you should learn to code.
As argued in this forbes article you have ensure that your goal is specific, measurable, achievable, realistic and time-targeted (S.M.A.R.T.).
Moreover, you have to set yourself a strict learning schedule. I decided that I will never become a professional developer. Although I like interacting with technology I am more inclined towards the business part of running a business. However, it is quite clear to me that everybody who is thinking about starting an online business has to have an understanding of the online environment and the technology behind it. Therefore, understanding front- and back-end code is vital! For me it is vital mainly because of the following three reasons:
- It allows me to build a MVP and produce the first iterations based on feedback
- It allows me to assess the technological difficulty of my idea
- It helps with hiring, as I understand the requirements and developers respect me more
Choice is painful
The technological options, endless opinions and countless online resources are very confusing for beginners like me. To guide you through the mist I recommend to talk to somebody who was in the same situation or is an experienced engineer.
I have the great pleasure to be friend with a self-taught developer. Check out his new venture stunset, which he wrote all by himself.
When talking to an advisor on this topic you should ask the following questions while keeping your goal in mind:
- What language should I start with and why?
- What language(s) should I study at all and why?
- What are helpful resources and tools for the language(s)?
In my case, the conclusion was to start with HTML/CSS, then continue with SQL and finally learn Rails or PHP.
1. HTML / CSS
I have started with improving my knowledge on the front-end, building on my foundation of HTML, which I’ve studied in high school. Being a visual person made learning CSS quite fun and interesting. For people who have experience with HTML I can recommend to work through the book “CSS the missing manual”.
What I found very useful were the tutorials that animated me to try things out and really to build up a design step by step. A drawback of the 2nd edition I was working with, is that some material about CSS3 is out of date.
However, it includes a lot of links to the best resources to get up to date with it (e.g. here or here). I also recommend getting a tool like TextMate (if you’re working on a Mac) as it helps with coding, not only for HTML/CSS but with other languages, too.
I believe it is important to know HTML/CSS. Not only does it allow you to understand what those Wordpress themes really are and how to mess around with them, but it gives you the power to create a front-end of your idea - from a simple sing-up page to more complex clickable demos. It gives you the power to quickly try things out.
2. SQL
Whenever you want to get data from your users or website you will need to put it in a database. SQL is the language used to generate, manipulate and retrieve data from relational databases.
You need SQL knowledge if you have a simple sign-up page where users can enter their email address or for building a reporting system that lets you analyze site interactions. An important additional benefit of learning SQL is that it forces you to think about data, understand its structure, how it can be used and stored. As data is more and more used to gain competitive advantage, being able to manipulate it can give you an edge over competition or help with product development. Another thing that makes learning SQL so attractive is that is the standard database tool.
3. Rails / PHP
I haven’t yet decided between Rails and PHP. From what I understand both have advantages and disadvantages (see: here). It is, however, quite clear that everybody needs to study a back-end / “real” programming language. Only knowing your ways around the back-end will give you the skills to bring your idea to live.