3 ms·
Ask HN: While learning to code, should I worry about CS theory?
In addition I would say that I don't want to be a developer. I am a non-tech founder, learning to code only to perform better as a founder. I already outsourced a prototype, so I am learning only what I need to deal with it (front-end, C# and Azure management).
My decision for now is to focus only on practical courses (i.e. Treehouse, CodeCademy and Head first! C# book). I am wondering if I should use some of the more academic, theoretical courses, such as CS courses on coursera.org (e.g. Algorithms, Part I, from Princeton). In the future, this is the kind of knowledge that interests me, but for now, I can't afford a slower learning curve. Is it worthy?
- edent 14y agoYes. For some aspects. At a very basic level, you need to know how and why some algorithms are more efficient than others. Otherwise, you won't know what's possible and what's impossible. It will also help with your bullshit filter. When your outsource partners try to take advantage of you (and they will) you need to have some idea of what you're talking about.
- soneca 14y agoAnd do you think algorithms is a good subject to start this more theoretical CS learning?
- edent 14y agoImagine someone came up to you and said "I want to paint a picture as good as the Mona Lisa. What's the minimum I need to know about art?" Would you say learning to mix paint is as important as understanding perspective? It rather depends what you're trying to accomplish. For example, if your mockup requires something computationally heavy (or impossible) you're really going to struggle.
- stray 14y agoIt doesn't matter what path you take -- it is a long road to competence in any endeavor. Without a foundation in CS theory, you are likely to fail to recognize the truly monumental blunders as they're taking shape.
- argonaut 14y agoI strongly disagree with stray and edent. You have already admitted that you do not want to be a developer. I assume you want to be merely proficient in software engineering because that will help you build prototypes/MVPs and will help you outsource work / find a technical co-founder. You've admitted that right now you only want to learn what's essential. Someone who builds quick prototypes and glues together APIs and frameworks does not need very much knowledge of theoretical CS. Even someone who is technical and builds web and mobile apps full-time only needs a very superficial knowledge of CS theory (data structures / algorithms). You are on the right general path in terms of learning to code. Understand that Treehouse and Codecademy are extremely basic, to the point where you honestly would not be able to build very much after having gone through them. Head First C# should be more in-depth than both of those. I'm not actually sure what type of programs you want to create (are you building windows apps?). There is no substitute for actually going out and building things. I can tell you straight up that Algorithms Part I is way overkill right now (red-black trees and heapsort are fascinating and are studied by any college CS freshman, but are really not relevant to you), and you will probably never reach a point in terms of technical proficiency where those topics would be helpful to learn. Here is some CS-y stuff (really really basic stuff) that might be helpful to learn: the difference between an array, a dictionary, and a set (and the performance differences in terms of insertion and lookup). Knowing what stacks and queues are is also helpful. I've listed topics that you could read up on in about an hour. Honestly, knowing just those topics, you would probably know as much theoretical CS as you'll ever need to know as a jack-of-all-trades founder. Even if you wanted to one day be a technical co-founder (for web/mobile apps), three or four online classes would just about cover all the theoretical CS you would need to know.
- soneca 14y agoThanks a lot, that was really helpful. I already have a MVP, so this is more about iterating it than building new ones. It is a web app, written in C#, running on Azure, that is why these are my focus. I will take a look on the topics you mentioned.
- argonaut 14y agoInteresting... It's very uncommon for startups to develop web apps using ASP.NET (I'm assuming that's what you're using C# and Azure for). Is there a reason you chose that?
- allenp 14y agoMy advice is to focus on learning aspects of software engineering at the expense of learning computer science. Specifically I would focus on: requirements engineering, software architecture, software testing, and software deployment... Working with people (communication, management, working with non-technical customers), processes for developing software, and how to measure and analyze the software product and the software process[1] [1] http://users.csc.calpoly.edu/~djanzen/secsdiff.html http://users.csc.calpoly.edu/~djanzen/secsdiff.html
- soneca 14y agogreat link, clarify a lot for me, thanks!
- rartichoke 14y agoI think it's worth learning about big O and the basics on certain data structures. They will generally help you on most projects. The basic statistical information is pretty useful too, even outside of programming. Knowing how to test something properly or how to create meaningful benchmarks is a valuable tool to have in your developer tool belt.