Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming Technology

How To Get Into Programming? 195

writermike asks: "Like many on Slashdot, I practically grew up with computers. I've had one or more since 1978. However, unlike a lot of people here, I simply never learned how to program. Twenty-seven years later, I still know nothing about 'programming.' I'm a fairly successful technology troubleshooter, having been in that role for 15 years, and I find as I delve deeper into why programs fail, my interest in programming rises, and I feel that not knowing the principles is a hole in my knowledge that hampers me a bit. There are so many books and courses out there that seem to focus less on principles and more on specific languages and/or the 'career-track'. I don't really want to code the next great web service. I want to learn principles, then begin to learn a language. Where can I begin the adventure I should have started back in 1978?"
This discussion has been archived. No new comments can be posted.

How To Get Into Programming?

Comments Filter:
  • Don't. Or at least, not as resume fodder or in an attempt to make a living. Coders are a dime a dozen these days.

    However, I agree it could help you in other areas if you understood more- but don't go for it from a business or career standpoint. Pick your favorite form of art: drawing, music, animation. Once you have one of those three, pick your favorite artist: a painter, a composer, an animator. Then pick a language that has strong instructions in that arena, or a library you can take advantage of- graphical primatives (all the better if they use Hexadecimal in some form), sound instructions (polyphonic if you can find it), Sprites or large memory move instructions of some sort that can access video.

    Once you've found your art, and your language, I suggest reading Godel, Escher, and Bach, the Eternal Golden Braid along with the reference manual for your language. This will give you mini projects that are very visually or audually responsive. From there, you can move on to Boolean math, game theory, and expert systems. After that, you can get into methodologies, though object oriented design might be a good help from the begining, it isn't the only methodology out there.

    But most of all- make it fun for YOU, rather than a chore.
  • by fm6 ( 162816 ) on Monday October 24, 2005 @02:50PM (#13865711) Homepage Journal
    ...just start programing.
    I'm reminded of the joke: "How can I make money in the stock market?" "Easy: buy stock at a low price, sell it at a high price." Strictly true, but not very useful. Exactly how do you "just start"?

    The answer to that depends on what you hope to learn. Programming is a big topic and there are a lot of ways to approach it.

    Probably most Slashdotters will answer this question with something practical and job-oriented. "Get a copy of Kernighan and Ritchie [amazon.com], C is a language everybody should know." "Download Perl." "Download the Java SDK." "Use the VBA engine in Word to write macros." Etc. All worth doing if you're looking for a career as a programmer. But I sense that this guy is motivated more by intellectual curiousity than by career development. (As he should be — the developer job market is a tad oversupplied.) He's used computers most of his life, but has an unsatisified curiousity about how the suckers work.

    One good way to satisfy that curiousity would be with the very basics: machine language [wikipedia.org] and assembly language [wikipedia.org]. These are not useful skills for most programmers, who only need to know the high-level abstractions of the systems they work with. (Some people would disagree with me on that.) But for satisfying your curiousity about just what computers do, it's a nice exercise.

    Or instead of going very low level, you can go very high level, and learn some basic computer science while you're at it. That the route if you read the classic Structure and Interpretation of Computer Programs [mit.edu] and work its Scheme [wikipedia.org] programming exercises.

    Then again, learning programming on your own is not for everybody. If somebody has managed to be around computers for a long time, but has never go around to learning programming, he probably is the sort of person who needs some initial handholding. Community colleges often have good classes.

  • by egomaniac ( 105476 ) on Monday October 24, 2005 @02:56PM (#13865755) Homepage
    Don't. Or at least, not as resume fodder or in an attempt to make a living. Coders are a dime a dozen these days.

    Sure. My team is trying to hire a couple of Java programmers right now. We're talking about a very well-known company (hint: there's a Slashdot category for us), a Silicon Valley office, and a six-figure income.

    And we're desperate. We finally (after much searching) managed to find a really great candidate for one of the positions, but the other one remains unfilled. I'd rather leave the position empty than lower my standards enough to pick some of the people we've talked to.

    So, I suppose I agree that coders are a dime a dozen if you're looking for an idiot that doesn't even understand the difference between "a == b" and "a.equals(b)", but if you're looking for competent programmers, they're tough to find at any price.
  • Anybody who's been to Oregon Institute of Technology knows how to learn a language in a weekend- and Hello World has NOTHING to do with it.

    My favorite is writing text editors and calculators.

    Take your website for example; it looks terrible, is poorly organized and uses HTML that is long out of date.

    Maybe to you- but to the people that website is marketed to, it does a lot with very little bandwidth, which *used* to be a key in web design (and damn well still should be).

    Add up the facts that you admittedly have poor communication skills and no skills outside of coding "Hello World" applications, what exactly are you expecting?

    You're the one who mentioned "Hello world"- currently I'm on contract to ODOT working on a team doing a .NET client-server program to keep track of civil rights information for 6000 contractors statewide. But what I was expecting was actual techies (that is, people who can see past *appearances* to reality) doing hiring, instead of idiots. I no longer expect that- in fact, I no longer expect anything. Coding is now a job better done in Bangalore or Hydrabad at $2.50/hr. If you want software engineering, flow charts, and the ability to make the machine do REAL things deeper down than the user interface layer, hire me. If you want flash and coding to spec- go there. In no way should any American be going for a career in "programming" in this day and age- it's not worth it.
  • by Proc6 ( 518858 ) on Monday October 24, 2005 @04:31PM (#13866441)
    I'll let you in on a secret: The idea behind excessive requirements in any job posting is to cut out those without the motivation or ability to prove why they are fit for the job irrespective of the requirements. ie. It's a way to filter out the weak.

    Looks like it's working.

  • Re:Yeah, VB.Net if (Score:3, Interesting)

    by evilpenguin ( 18720 ) on Monday October 24, 2005 @05:00PM (#13866656)
    Not really flamebait. Yeah, it's written in a "flamy" way, but I think there is a serious point being made that VB.NET skills will not be very helpful in programming in a different language/environment.

    I would not recommend VB.NET as a "first language" to learn programming.

    That said, I wouldn't discourage someone from learning it. There's a lot of work to be had developing in it.

    But I wouldn't make it either the first or the only language I learn. It comes from one vendor and runs on one platform (Mono notwithstanding!)
  • by hey! ( 33014 ) on Monday October 24, 2005 @05:44PM (#13866962) Homepage Journal
    the main skill you needed to program was programming.

    It's simply not true anymore. Any intelligent person with a knack for logic can program. The big issues now are in the domain of design. Much of your life isn't figuring out how to do something, it's figurign out how to make something somebody else has created (typically a framework or API) do something you want it to do. Keeping these things in mind, I'd say that programming langauge is not the issue. You can't get a sense of design until you've been deeply involved in one, either as a creator, or as somebody who has extensive experience in somebody else's design.

    Therefore, I'd do this:

    Make a list of some projects you'd like to get involved with.

    Going down the list, look at the kind of things you'd like to do on them. Example: suppose you have something like JOE (Java Outline Editor) on your list, and you remember lots of things from a product like In-Control that you really liked that no outliner around seems to have. If you can't think of anything to do on the project, cross it off the list (Linux Kernel -- Hoo yah! Err, maybe not).

    Pick a project that has lots of things you'd like to do with, and has at least one or two things that seem dirt simple enough. Look to to keep yourself invovled part time for a year (not as an official contributor -- yet), and diverse enough that if you're bored with A you can try B. Now find out more about it. Check out its developer mailing lists, find out what kind of reputation it has for design.

    Examine the languages and tools you would have to learn, read some books, download the code. If things look like they make sense, dive in for a year or so.

  • Re:Mod parent DOWN! (Score:3, Interesting)

    by evilpenguin ( 18720 ) on Monday October 24, 2005 @09:30PM (#13868380)
    Yes. I was surprised to find myself saying so, because C is, in a sense, terribly advanced. But I'm hard pressed to think of an alternative this is more suitable. If you stick to straight C, "stdlib.h" "stdio.h" type stuff you can learn and do a lot of useful things, and it is portable to virtually every C/C++ compiler on earth, and you will get some of that "close to the metal" experience that teaches you how these machines *really* work. Then you can go on to the world of IDEs and VM languages and GC and appreciate all that they do for you (and all of their overhead!)

    My experience went timeshare BASIC, Z80 Assembly (to write a bootstrap for my Dad's homebrew S-100 bus machine - he was a EE, and I got to do the code), various BASIC variants, Turbo Pascal (for CP/M! How many have *that*!), C, more C, still yet again more C, C++ (haltingly), perl, Java, PHP.

    Various less important scripting language along the way. Also did some lex/yacc work, wrote my own "compiler" (compiled a pseudo-code representation of reports into runnable perl code).

    Did a lot of embedded work with the Z80. A local amateur radio repeater uses my code, as does a local school's hockey scoreboard. There is also something to be said for being forced to keep an entire program below 4k in size (2732 EEPROMs). I'd also say that some experience writing interrupt service routines is helpful, although learning to use a multi-threaded process library like pthreads gives you somewhat comparable experience.

    Beyond that, you need to learn referential data structures and some of the algorithms for handling them, linked lists, queues, stacks, dequeues, binary trees, hashed lists, etc. If you've got that, recursion, reentrancy, and threading, well, you've got the tools to confront most common programming problems.

    Of course, these days you don't really need to know how to do most of these things because the big object libraries contain them all, but I still think you need to know how to write them, how they work, and how to quantify their performance. You need to know *why* you would choose a given container for a given application. You need to know why you might use one for structure of a certain size, and use another if the structure grows, etc.

    But I do think it is a-ok to merely dabble. To just do if-thens and a couple of fors. I think owning a computer without learning any programming is like buying a jet airplane and only taxiing around the airfield.
  • 0, REDUNDANT (Score:3, Interesting)

    by FireFlie ( 850716 ) * on Monday October 24, 2005 @10:00PM (#13868516)
    "Oh, a couple more things. First, I'm not really suggesting that the grandparent post be modded down! I'm just disagreeing with it! It's a good post in and of itself. And totally intended to be helpful to the questioner, so please don't mod down the poster who first suggested perl!"
    Looks like it's a little too late for that, buddy. Thanks anyway, though.

    To one of your main points, however, yes perl doesn't exactly force you to use good programming habbits, but certainly C does not abide by your "there's one way to do it" philosophy. Plus, I try not to suggest new programmers to use C right out of the box because of it's uncanny ability to allow you to shoot yourself in the foot. I am not saying that C is bad, I have done a lot of C programming and as a language I absolutely love it, but dispite it's power, speed, and ease of use it may not be a great choice for a beginner who is not in a classroom setting (I would suggest it to either someone who has a little experience or someone who has a teacher to show them when they are doing something that is incredibly stupid). It is not always easy for someone to learn to program by themself, even someone that is experienced as a user.

    Perl may not be the best choice, but as I said, it sounds like it would probably be a great choice for someone in his specific shoes. He didn't sound like he wanted to change careers to become a programmer for a living, so many other languages may be quite unnecessary for him. Yes, perl doesn't exactly force you to program by the book, but it is something that he could get his feet wet with and possibly create something that could be of use to himself relatively quickly. Sorry, don't mean to rant, it just pisses me off sometimes that there are so many mods that don't understand the moderation system. I also would have modded my original post redundant if it would have read "ME TOO!!!!! PERL IS UBER L33T!!! LOLOLOL!!!", or something to that effect. I may not have added much info to the post before it, but I don't think modding it down was unnecessary.

Get hold of portable property. -- Charles Dickens, "Great Expectations"

Working...