Slashdot Mirror


Ask Slashdot: How To Get Started With Programming? [2017 Edition]

Reader joshtops writes: I know this is a question that must have been asked -- and answered -- on Slashdot several times, but I am hoping to listen from the community again (fresh perspective, if you will). I'm in my 20s, and have a day job that doesn't require any programming skills. But I want to learn it nonetheless. I have done some research but people have varied opinions. Essentially my question is: What is perhaps the best way to learn programming for my use case? I am looking for best possible resources -- perhaps tutorials on the internet, the right books and the order in which I should read/watch them. Some people have advised me to start with C language, but I was wondering if I could kickstart things with other languages such as perhaps Apple's Swift as well?

9 of 312 comments (clear)

  1. Find a way to make it relevant by chispito · · Score: 4, Insightful

    Find something routine or complicated that you do and automate it. Maybe your job involves TPS reports. Well, automate adding the coversheet. Maybe you like gaming. Look into modding.

    Or you could go to school where you have deadlines and lab classes. Whatever the case, avoid trying to learn a bunch of theory in a vacuum.

    --
    The Daddy casts sleep on the Baby. The Baby resists!
  2. Find a problem to solve. by Anonymous Coward · · Score: 4, Insightful

    ...then solve it using a program.

    If your day-job is doing stuff with Excel, then perhaps automate something. Write a script to extract stuff out of a .csv file, etc. If your job is non-tech, then perhaps use your tech skills to build on hobbies.... e.g. if you're into video games, build a tiny game in JavaScript... if you're into sci-fi books, write a program that finds stuff in text of sci-fi books, if you're into finance, write a program to find correlations between closing prices of various companies, or extract anything useful out of earning reports---automation is the key. Find something you're interested in, then automate it (or a part-of-it), etc.

    Note that language/platform doesn't matter much. Yes, you can do complicated ``programming'' in Excel. It's just not something most people do, but that's what you're into, then go for it.

    Started languages I'd suggest: JavaScript (mostly because you can get started quickly, show off your work quickly, and go from nothing to something fun quickly). As second language, learn SQL... yes, you can do wonderful analysis in SQL. Then I'd suggest PHP... and/or Perl (yah, lots of folks would object, but if you learn Perl, you'll never have to learn another "useful" language ever again), then learn C/C++, since you don't start appreciating the ease-of-use nor overhead of other languages until you learn C/C++.

  3. Re:Tradition by Oswald+McWeany · · Score: 3, Insightful

    Although I started with BASIC myself, I wouldn't consider it an ideal starting place for people today.

    For one, no one uses it. Even most die-hard Visual Basic programmers use C# instead nowadays. BASIC is too dissimilar from most other languages to be a good starting one anyway.

    I'd start with Java or C#. Both easy to use, both use fairly common skills that will translate to other languages easily. Both are employable languages. If you don't mind being Microsoft's biatch C# has the nicer IDE to get developing against- but you're pretty much guaranteed to be doing purely windows based stuff. Java gives you the opportunity to work on anything.

    --
    "That's the way to do it" - Punch
  4. poignant.guide or machine code by jtara · · Score: 3, Insightful

    Why's Poignant Guide to Ruby

    ... even though it was written for a now-obsolete version of Ruby.

    Why? Because it is entertaining enough to get you through many important basic concepts without falling asleep.

    Otherwise, I recommend the approach that was common at one time and fallen out of favor. Start with machine language. Not even assembly code. Machine language. Best thing ever: punching IBM 1620 (decimal, thank goodness!) instructions one at a time on punch cards! That was high school. In college, we started with MIX. I prefer a real machine code to a made-up assembly code, though.

    Still, some in high school thought "the compiler" was some bit of hardware in the computer, once we moved-on to Fortran. At least the instructor tried!

    If you don't begin at the beginning, many will be forever-befuddled at what really goes on.

  5. Good Grief. by Frosty+Piss · · Score: 2, Insightful

    I'm in my 20s, and have a day job that doesn't require any programming skills. But I want to learn it nonetheless. I have done some research but people have varied opinions. Essentially my question is: What is perhaps the best way to learn programming for my use case? I am looking for best possible resources

    That you need to ask this question at all might be an indicator that programming is not for you. While I really hate to roll out this tired and over-used meme, if this solution has not already answered your question, there is no hope: GOOGLE IS YOUR FRIEND.

    --
    If you want news from today, you have to come back tomorrow.
  6. It's personal by hmblcodr · · Score: 3, Insightful

    I wrote a couple of blog posts just over a year ago that I think are still relevant:

    * Getting started with programming
    * Getting better at programming

    But it's a really personal thing. Some people hate reading through books, others couldn't do without them. Try as much as you can until you find something that really peaks your interest, that you can't put down, and follow it to see where it goes. Good luck!

  7. If you have an iPad, go through Playgrounds App by SuperKendall · · Score: 4, Insightful

    All iPads with iOS10 either come with, or can have installed for free the Playgrounds app into which you can install playgrounds that teach programming.

    It sounds silly and at first it may seem like it as you play through a programming a kind of game figure. But the lessons get more and more advanced, and along the way you are learning Swift.

    As you can far enough along you can decide if you like programming enough to really get serious, then perhaps investigate stuff like the Stanford programming course videos (free), including a course just on iOS development... but you don't have to go that way, the concepts you learn learning Swift apply to most languages pretty well.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  8. Like everything else start with the basics by evolutionary · · Score: 3, Insightful

    I feel your confusion. This may be "old school" but I feel it's solid (or has been for me). Start with learning the basic rules.

    A lot of people like Python but because most languages use certain characters to enclose blocks of code (and python only uses indents) I would suggest starting with Java or C/C++. Many here will say Python is easier (ruby is probably easiest for many), but your goal will be to have room to grow. You'll find more languages conform to the C/C++ or Java syntax style rules than Python or Ruby. I find it easier to ready than Python myself.

    Do yourself a favor and skip VB.net. If you want pure Microsoft (and I would advise against that, would have saved me much grief early in my career) you can do C# and you'll be better prepared for languages with more platforms.

    Java, for example you can use in many enterprise system and embedded systems, including Android. C/C++ you can use for robotic controllers, IPhones (objective-c), real-time critical applications (and gaming!!).

    Some may suggest starting with scripting languages like PHP, Python or Ruby. there is faster "joy", but I'd sooner suggest starting with MIT's Scratch https://scratch.mit.edu/ (GUI language for teaching children basic of programming). It's a great teaching tool for anyone I think. Hey, it's still valid basics which converts the GUI instructs into 'C'. the reason

    I'm so "hung up" on starting with C/C++ or Java is most newer languages take a lot of their cues from the concepts widely used in C/C++/Java. once you learn one of these (especially C++/Java) you can step into any other language out there with relative ease. Some good sites to start would include:

    http://lifehacker.com/five-bes...
    Note: These are all free or have free options

    http://www.learn-c.org/
    http://landofcode.com/programm...
    https://ocw.mit.edu/courses/el...
    https://ocw.mit.edu/courses/el...
    https://www.codecademy.com/lea...
    http://www.coursera.org/ (real university level courses, a little intimidating at first, but worth it)
    http://www.cplusplus.com/doc/t...

    For python:
    https://www.python.org/

    For Ruby:
    https://www.ruby-lang.org/en/

    the courses as udemy are a little light so I'd only go there for review.

    I've given many options here although I've stated my preference. The other advantage to using C/C++ or Java is they make using these invaluable books easier to read:

    Writing Solid Code: Microsoft Techniques for Developing Bug-free C. Programs (Microsoft Programming Series) by Maguire, Steve
    Code Complete by Steve McConnell


    Yes, these books are from MS and old, but I found them invaluable (and I wish MS had actually practice what came from their own publishing companies when writing the code for W2K and XP). Was required reading at one workplace. You'll want to learn about Object-Oriented approaches as well as syntax. It's a lot to take in and this is just the beginning, but it's fun journey. Oh, I would agree, don't bother with Basic. You are better off with Python or Ruby. :D Again, to reduce your learning curve later on, I'd start with C/C++/Java. You'll be glad you did.

    --
    "Imagination is more important than knowledge" - Einstein
  9. It's like asking how to learn a toolbox by Kjella · · Score: 3, Insightful

    I'm in my 20s, and have a day job that doesn't require any programming skills. But I want to learn it nonetheless. I have done some research but people have varied opinions.

    "Learning programming" is a bit like looking at box full of tools, is a hammer or a saw or a screwdriver best for the job? Well the question doesn't really make any sense until you've defined what you want to accomplish. Unless you just want to learn general concepts, in which case it doesn't really matter. Assign values, calculate values, create functions, acquire resources (like open a file), release resources (like closing a file), control flows like if/case statements, for/while loops, events, state etc. exists in pretty much all languages for a reason, the syntactic sugar may be a little different but the concepts are pretty generic.

    --
    Live today, because you never know what tomorrow brings