4 ms·
As someone with an interest in the programming world, I'm slowly "learning to code". I don't intend on ever developing in any occupational capacity. I'd just
by tatsuke95 14y ago
As someone with an interest in the programming world, I'm slowly "learning to code". I don't intend on ever developing in any occupational capacity. I'd just like to be able to have both a better understanding of what goes on under the hood, as well as be able to cobble together tools.
But I'm having trouble finding my own tipping point. I've worked through tutorials, online classes and introductory texts. Most of these things have you typing code in an editor, solving very minor problems, and seeing the results. But there's a big gap between, say, typing a little program in an editor, and a full blown web page or game. I understand that when you drill down in an iPhone app, for example, there's code back there, most of which I can't recreate, but can understand on a basic level. But what I don't understand is how that code gets there; how do all the pieces of code fit together to make a finished product, and how do you get it there? It's still sort of a black box to me, and haven't found the resource that can get me across that chasm.
I bring this up because I'm waiting for the epiphany, when I can say what the author does:
>"What had previously been a mysterious and confusing world suddenly started making a little bit of sense."
It's difficult when learning from scratch.
- mwd_ 14y agoIt's probably a lot easier to understand a larger project like a game or a website by trying to implement something substantial on your own. A lot of the obvious approaches to coding that work for small examples don't scale well for one reason or another. In the process of running into roadblocks and finding solutions (typically with the help of google) you'll encounter some of the pieces that end up in something like an iPhone app and at that point you'll probably be in a much better position to understand them.
- anthonyb 14y agoTwo things: It definitely helps to have some sort of scaffolding or small seed program to help get you started. If you're looking at other people's projects you don't see all of the small choices and decisions that they made, just the final product. That always seems a lot more complex and intimidating than whatever it is you're currently working on. (If they're on github, you can sometimes go back to revision 1 and see what they started with, then roll forwards and watch them work) The second thing is that programming is a lot like maths, in that learning it in and of itself is pretty dull. Having something that you want to do, with programming being the tool that you apply to help you get there, is a lot more motivating (and seems to be the tipping point experienced in the article)
- tatsuke95 14y agoAppreciate the responses. Keep in mind this comes from a guy with no programming background. I suppose I'm finding it easier to get exposure to the science, but not the art. Or maybe a better way to put it is, writing code is one thing, but making software seems completely out there to me. I was a big fan of MUDs as a younger guy, so as a practice project as I work through texts and tutorials I've been building a little choose-your-own-adventure game. It started as a slightly modified "Hello, world!". As I learned about more complex things, from loops to functions and packages, to objects and classes, I've found ways to complicate the program by adding in the things I've learned. Now I have a couple thousand lines of code (bloated, I'm sure!) and a little game that, at the least, has a wee bit of depth beyond "enter your name:". But at the end of the day, it's some code in a text editor. I could spend more and more time adding more and more code, but it's still a command-line executed script. How do you make it "software" if you get my meaning? There are other examples: I've been using python to learn to play with data, with some success. I can get data in, manipulate it a bit, and spit it back out. Great. But how would I automate that, drawing a file in from a folder automatically, manipulating the data according to my python code, then ejecting it onto a webpage into some graphing package. I know that isn't a complicated procedure (it's essentially a transfer of data), but I don't even know where to start. Or you mention Github. While I know what it is (sort of), I have no idea how it works or why people use it,outside of sharing code. APIs? I know that they're a way to transfer data between pieces of software. But I don't know the first thing about how I'd use, say, the Twitter API, even to mess around for practice, by adding some extremely basic functionality to my "game". This probably sounds ridiculous to people with experience. But I'm living it. I guess I feel like I've done enough programming 101 and am ready to see what 102 is all about. To me that's not "learn another language", it's "how do I turn code in a text editor into something". There don't seem to be many resources that cover the subject. That's the epiphany I'm waiting for. It seems the answer is to define a small project, specifically, then set about doing it, with Google as your friend.
- anthonyb 14y agoThere's really not much difference between a script and a program, other than size/features. A program just has a few more added :) It perhaps seems like there's some extra sauce if you're looking in from the outside, but it's really just a case of iterating, adding stuff and polishing the "out of the box" experience. Minor plug - I actually wrote a book which I think follows the pattern that you're looking for: http://manning.com/briggs/ http://manning.com/briggs/ It's essentially completely ass-backwards if you're used to traditional programming books, in that you don't learn everything about Python up front. Instead, it's a bunch of small-ish practical projects, and you learn as you go. Chapter 6 is an adventure game, and chapter 10 turns it into an networked MUD via twisted - it sounds like what you're trying to do. But there's also business stuff - csv parsing, etc. - an asteroids clone, writing a web app in Django and so on.
- kadabra9 14y agoI've taken the exact same approach through the years as I've gradually started working on more complex projects. So, it's sort of comforting knowing that I'm not alone in the "just get something working, no matter how ugly/bad it is" camp. This sort of mentality, no matter how good/bad, was really helpful because it forced me to take a look at what I had made objectively, as I began to look back on old code/projects I wrote and finally ssee not only how "ugly" it was, but more importantly, why it was ugly. I'd then move on to a more challenging project, proceed to find some horrific, hacky solution, then talk and show it to people smarter than me and who could point out better ways to do things. I think if you're able to look at things you've made from years back and say "wow, I was a much worse programmer then, for these reasons", that says a lot about how much you've learned so far.
- daemon13 14y agoI am 35+. Never coded myself except for small feats in HTML/CSS. Background - corporate finance. It's difficult to learn from scratch, but it is not that difficult. If your goal is web development, then I would point several key things that worked for me: 1. Don't be afraid to start and try it out. 2. Knowledge builds by iterations. 3. If you stumble - make a break, then get back to the stumbling block. Most of the times it will be solved fast. 4. Keep your end in mind. 5. Do some practical project, that has value for you. About me: - punched with HTML/CSS; hand programmed simple static site; - got aquainted with Drupal; digged into Drupal; installed on hosting, installed and played with some modules, played with changing themes; - started Django - Django book, tutorials, various books - stumbled; - read through Learning Python by Mark Lutz, did exercieses - stumbled after 60-70% [decorators, etc]; - returned to Django, continued with books & simple projects - needed to get static assets working -> had to install webserver, did not want Apache, so I tried nginx - stumbled; - got VPS from Linode - but needed to know a bit CLI and Ubuntu nix, since server is headless; stubmled - went through CLI tutorials; - at the same time when installing web server stumbled with DNS, had no clue how it works, stubled - so digged through wiki, blogs, etc to understand the basics; - with CLI and DNS basics under my belt, started setting up VPS - some packages in Ubuntu repositories were old and security risk - installed from PPA, but had to compile nginx, postgres, some other packages; - installed!; - in one week the whole set up was hacked; - went through too many tutorials on nix hardening; iptables; auditing tools ; honeypots; logging local and remote; server monitoring [Graphyte and friends]; rootkit detectors, etc - now back to Django... In the background I digged a little bit into - databases [postgres, mongo, redis]; js [charts, various other libs]; some Python libs [requests, Pygments, etc]; OLAP/BI and host of other things. That is a short summary w/o too many details. It is a lot of fun - don't limit yourself. Your fears are your first enemy. So just do it.