4 ms·
Appreciate 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, b
by tatsuke95 14y ago
Appreciate 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.
- tatsuke95 14y ago>"There's really not much difference between a script and a program, other than size/features." Saying so is the luxury of having reached the tipping point! You sold a copy of your book, so plug justified. It looks interesting. Hopefully it can fill in a few gaps. Thanks.
- anthonyb 14y agoCool! :) Don't forget that there's an author forum if you get stuck and need a hand. I check in every day or two.
- mpdaugherty 14y agoThe book looks awesome, thanks a lot for the link! Just yesterday, I started teaching my co-founder how to code in python, and wanted to very quickly get to something useful to give him inspiration to keep going. I ended up starting with the python interpreter for ~30 min, followed by writing a very short program to show a random inspirational quote on the command line, and then turned it into a module so we could import it back in the interpreter. The end goal was to show how programs get built up from smaller pieces and can become more and more complex. I think he really started to get it once we added a few test functions to test the different range of inputs to his "get_quote" function. Next time, I'm going to show him Django via simple demo site and hopefully he'll be at the point where he can start editing HTML. (I'll either use https://github.com/mpdaugherty/django-demo-project https://github.com/mpdaugherty/django-demo-project, which displays quotes and demonstrates views and templates, or https://github.com/mpdaugherty/RateBeers https://github.com/mpdaugherty/RateBeers, which rates beers and adds in some DB models, depending on how far he gets).
- whatusername 14y agoIt also depends on what you want to get out of programming. From a pragmatic perspective: One option is to look at code that's embedded into other platforms. You talk about data analysis. Perhaps try looking at OpenOffice (which I know has Python bindings). Import your data and get OO to do the heavy lifting of creating the graphs. Remember: The whole point of programming is that you get shit done by giving a general purpose system specific instructions to carry out. For large parts of the "Build an application" questions you have. It depends on the tool you use. If you're building an iOS app -- XCode includes Interface Builder (which lets you drag and drop GUI objects and link parts of your code to them). If you started coding in something like Visual Basic you'd have the same thing. These sort of tools make it easy because the design a gui and package the app are all baked in. A Web example is probably PHP. For Python you can look at tools like pyGame or wxWidgets
- sreyaNotfilc 14y agoDude. Honestly, you have all the tools that you need to be fairly good at coding. I can already tell. long post What you're really fearing is the unknown, so think of it this way... Coding is a bunch of logical expressions thrown in to essentially one lump which ends up making a computer do a bunch of things. That's basically it. Now we have patterns, best practices, algorithms, classes, etc., but those can be learned as you go. Don't worry about it, you have all the tools. How do I know? You were able to make a post on HN. That is, your mind has mastered (to some extent) the coupling of language and logic. You already know logic... Your sentence structures have the basics going [subject verb object]. You know that in most cases, your sentence will not make sense if you omit any part of the basics. Same with a program. If you omit something in the logical arrangement, your program will not work. --------- You already know flow... Your post goes from the top down. A lot of programs does that. That is, the tasks are processed from the top of the program until you get to the end. Now, we do skip around, but that's because during the flow from top to bottom we call other functions for help. Think of functions as an extension of the flow (just in another location) and you'll get what I'm talking about. Now we do have events as well. Think of when you're clicking a button, something happens. In that something, it also uses a top down approach. --------- You already know conditions... You've created basic guidelines for getting your paragraphs to work to your liking. I've noticed a few if/else conditions that you're using... 1) IF I explain this part of my coding history THEN the readers will realize how badly I want guidance help... 2) IF I use a general/cliched phrase THEN I'll put quotations around it (e.g. "Hello, world!" or "how do I turn code in a text editor into something" ELSE no quotes will be added around the word/phrase --------- You already know abstraction... Your using paragraphs to abstract topics/themes to be separate from one another. In CS we use functions and classes. --------- You already know how to utilize classes... You're using a combination of letters to form what we call words. With those words, you have created sentence. Your mind has already figured out that if you utilize these words and sentences in a certain order, it will return something useful. --------- Now why did I go through all of this to convince you that you know more that what you think? Because I'm insane. No, that's not it. I hear a lot of people say that they aren't smart enough to code. Yet, these same people can memorize entire albums and television episodes. Memorization uses a lot of CS tools if you think about it. You're using logic, flow, conditions, abstractions, classes, etc. You just don't know that you're doing it. I have a friend that, for the past 3 years, explained to me that he wasn't smart enough to code. I ended up giving him a run down of all the basic things needed to make a basic web app. It confused him, but it gave him exposure. After a couple of months He called me and said he had a "great" idea for a site for his wife. He spent about a month working on it before I took a look at it. The site was functional. It wasn't great, but it was functional and dynamic. I gave him some pointers, but a lot of the work came from him seeing what he wanted to do and running with it. Yes, with good ol' Google. All he needed was the basic guideline. All he needed was some exposure. I think that's all you really want/need. I can help you out if you'd like. Here's my tools... HTML - text and boxes on the page CSS - making things look pretty JavaScript(JQuery) - making things move Asp.net (or PHP) - server back end (mostly a communication tool with the data base) SQL Server (or mySQL) - the database (stores a bunch of data) That's about it. Those 5 things. You can do a lot of really cool things with that. If you need help, don't be afraid to ask.
- zugumzug 14y agoI'm in a similar position to this, except that I really do want to get ton occupational level. My goal is to be employed in web development. I can hack some things together, and I can get through tutorials reasonably easily at this point. Almost all of my code at this point is plagiarized from someone else, then modified to meet my goals. So when is the tipping point when I can start to look for employment? I liked this article, but I'd like to see my question answered as a follow up.