3 ms·
It's hard to give you any specific advice without knowing a lot more about your level of experience, your understanding of different programming paradigms, best
by mbenjaminsmith 14y ago
It's hard to give you any specific advice without knowing a lot more about your level of experience, your understanding of different programming paradigms, best practices, etc.
Having said that I remember feeling like you're feeling on my first one or two software projects (before I had actually considered becoming a programmer). I remember reaching a point in those projects where the complexity had reached a level that my brain sort of "gave up" and I found I couldn't progress on them anymore. I think I was living under that fallacy that I had to understand the whole project at any given time.
Fast forward many years and many shipped products and I certainly don't feel that way. In the broadest sense I think I've learned to embrace ignorance in software development. Developing reusable code is a formalization of that. If you're writing software to be reusable and easy to use (not easy to understand internally) you don't have to have a sense of the big picture, or the whole picture.
If it is the case that you're new to programming, I would suggest limited scope as much as possible. The "simplest" project is always more complicated than you (or I) would imagine. Try creating a very, very small project but take that project to completion.
Alternatively, if you're hitting the complexity wall with what sounds like it could be a fairly straightforward web project, you're probably not leveraging the available tools as much as you should be. If you think that applies pick up a book on RoR or Django, download either of those, and try to build your project (or a simpler version of it) with those tools.
You should also consider picking up a book or two on programming best practices. The problem you're attacking with your software may be unique, but writing big (and small) software projects is a solved problem. There's lots of good advice out there on how to structure a big project, how to write reusable code, how to do basic testing, etc -- all of the techniques people have figured out for making large projects manageable.
- diminium 14y ago"Fast forward many years and many shipped products and I certainly don't feel that way. In the broadest sense I think I've learned to embrace ignorance in software development" So embrace ignorance? I could always go back to that but I'm wondering at what point do we grow? Things were much easier when I was ignorant of stuff and just pushed forward. I did that for quite a long time. It created products but none of them were superior or great with most of them ended up being average. I'm trying to climb that wall from just creating average things into creating something greater. I'm not sure how without being overwhelmed.
- mbenjaminsmith 14y agoWow, missed this one. I no way did I equate "embrace ignorance" with "embrace mediocrity". You misunderstand me. What I mean is that you have to write code in such as way that you don't have to understand previously created parts. They should be designed in a way that they just work -- they are easy to use and use without error.
- diminium 14y ago"They should be designed in a way that they just work -- they are easy to use and use without error." But how do you learn how to do that? For example, making an API. API's, once released into the wild, should never be changed (unless your hugely popular like Facebook). Public changes breaks code. I look at some of the most popular API's. They look easy but I don't know how they got to that point. They had an infinite amount of choices yet they choose that particular way of doing it.