# How, what to program?

#### Pizzabeak

##### Prolific Member
So I took a programming class or two and am stuck. What is there to program? And how do you do it?
What's the easiest, fastest way to learn coding and getting involved in the community.
What kind of ideas can you have for coding? How do you go about the fastest route to start working in A.I. and more complex coding projects, like say a game.
Is IT a good start? Not just for a job but programming experience.
Do I need to take the beginner CS classes at school to get it? I have a rough idea how it works but can't implement the desire.
How much programming experience do I need? There are different languages - how many do I need to understand how the internet works?
I've been wrestling with this topic for a while now. I'm thinking about taking more classes but it doesn't really tell you how to program. There are too many different terms and ways of executing them, it's like learning a different language.

I need to know ASAP.

#### Architect

##### Professional INTP
I get this question a lot by beginners and I'm puzzled by it. Do beginning writers ask experienced writers what to write? No, usually they just pick something they're interested in or have experience in and do it. Why do beginning programmers get so hung up on it? Puzzle to me.

Stop thinking about it, just pick the stupidest problem you can think of (like a tea timer) and do it. Don't get stuck on which language, it doesn't matter, just pick the first thing that comes to mind.

#### Rixus

##### I introverted think. Therefore, I am.
At this point, it indeed is like learning to read. You need to understand the basics before you can even consider moving into those areas. Asking how to create AI is our asking how to write Lord of The Rings after starting to learn a How To Read book.

There are lots of languages, all for different purposes. But once you've mastered the concepts in one, play with a couple more and your NE should kick in and you'll realise they're all much of a muchness really, just different ways of doing the same thing and few interesting quirks to each one.

As for what programming to do - look on the app store. Look around the internet. Look at this forum. Programming is everywhere. Games are a lot of fun to write, but there's loads of things you can do. In today's world with our technology, anything your imagination can conceive.

#### Blarraun

##### straightedgy
Pick an idea and try to implement it. It doesn't matter which language you're using or what you want to implement.

If a problem is too difficult then divide it into simpler elements until you can solve its individual constituents, then merge them together.

Start coding and you'll learn as you go.

You don't need to take classes and you don't need any experience, the whole point is to get some experience and the best thing they can offer you during classes is to guide you through some basic examples and review your homework.

#### pjoa09

##### dopaminergic
So I took a programming class or two and am stuck. What is there to program? And how do you do it?
What's the easiest, fastest way to learn coding and getting involved in the community.
What kind of ideas can you have for coding? How do you go about the fastest route to start working in A.I. and more complex coding projects, like say a game.
Is IT a good start? Not just for a job but programming experience.
Do I need to take the beginner CS classes at school to get it? I have a rough idea how it works but can't implement the desire.
How much programming experience do I need? There are different languages - how many do I need to understand how the internet works?
I've been wrestling with this topic for a while now. I'm thinking about taking more classes but it doesn't really tell you how to program. There are too many different terms and ways of executing them, it's like learning a different language.

I need to know ASAP.
If you haven't gotten a bachelors you could take that as a degree.

What I used to do was address a simple small problem I have. Then chase the shit out of it. In the end you could either give up or get it done.

#### Happy

##### ENTP
I get this question a lot by beginners and I'm puzzled by it. Do beginning writers ask experienced writers what to write? No, usually they just pick something they're interested in or have experience in and do it. Why do beginning programmers get so hung up on it? Puzzle to me.

Stop thinking about it, just pick the stupidest problem you can think of (like a tea timer) and do it. Don't get stuck on which language, it doesn't matter, just pick the first thing that comes to mind.
Alas, this is only learned by experience.

At the beginning of any intellectual pursuit, we look for advice on finding the path, but following a set path only results in a recycled journey.

Like Archie says, start anywhere and see where it takes you. You'll probably end up somewhere different from where you set out to be anyway...

(I'm not a programmer, but the same is true in my field - i.e. Design. One of the first things we were taught in architecture school was to start drawing before thinking; the thinking emerges from the act of doing. That's a lesson I carry with me every day, and I'd wager it translates pretty well to the programming world)

#### bvanevery

##### Redshirt who doesn't die
So I took a programming class or two and am stuck. What is there to program? And how do you do it?
You can program anything that is programmable. Understanding Turing Equivalence, at least at a philosophical level, might help you to let go of this need to choose a best / optimal / prematurely optimized path to completion. Simply put, there are many ways to skin a cat, and this is mathematically provable in various cases. Related to this is the Halting Problem; you cannot know when a program will terminate. Such as your endeavor to answer the questions you posed.

What's the easiest, fastest way to learn coding and getting involved in the community.
This is likely a NP-Complete problem, meaning that there is no better solution than to simply try all available solutions, in turn. You do this until you either find something you like and wish to continue with, or you grow tired and bag the whole enterprise.

How do you go about the fastest route to start working in A.I. and more complex coding projects, like say a game.
Learn to walk before expecting to fly. Program an extremely simple game in "something".

Lots of "somethings" available nowadays. Web searching is your friend and will yield results. It is essential in programming that you be largely self-motivated. You are going to hear it from experienced hands to RTFM over and over again. If you don't know what RTFM means, by all means your 1st task is to learn what that means.

Is IT a good start? Not just for a job but programming experience.
It is an acceptable place to start. However it has the risk of being "dumbed down" compared to a Computer Science approach.

Do I need to take the beginner CS classes at school to get it?
It's not strictly required. However, I don't see why you should avoid it, if such classes are accessible to you and you can avail yourself of them, without excessive financial penalty. If you have such access, avail yourself of it, as it will help you.

If you're poor as dirt though, grab a book, avail yourself of abundant resources online, and get cracking. Computer programming is the damn easiest thing to learn from online resources that ever existed, because programmers built the internet. We look after our own.

In that case you have to DIY though. If you can't DIY, you're going to suck. Lots of people need to learn some structure to get started. They don't start off DIY capable, they have to learn how to do it. Definitely by the time I was done with undergrad, I was DIY capable though.

I have a rough idea how it works but can't implement the desire.
If you aren't self-motivated, you are going to be a lousy programmer. You also have to be patient for enduring lots of frustration. I've met plenty of people in my life who had the raw intellectual aptitude for programming. But they lacked patience, they couldn't sit still and "deal with" crappy problems that were staring them in the face.

How much programming experience do I need?
To start programming? Zero, as in all things. Gotta start somewhere.

There are different languages - how many do I need to understand how the internet works?
At least 1. c.f. Turing Equivalence.

I've been wrestling with this topic for a while now. I'm thinking about taking more classes but it doesn't really tell you how to program. There are too many different terms and ways of executing them, it's like learning a different language.
c.f. Turing Equivalence. The computer industry has been filled with many fads regarding "how to program". Me personally, I have rejected all of the dominant contemporary ones in industry. I'm going back to something a lot more like assembly code, which I was historically strongest at. What works for me, certainly doesn't have to work for you. Try not to get hung up on Religious Issues.

#### gps

##### INTP 5w4 Iconoclast
I need to know ASAP.
Got it! The temporal scope of ASAP has undoubtedly lapsed.
So my replies are for OTHERS who experience a similar-enough quandary.

So I took a programming class or two and am stuck.
What is there to program?
And how do you do it?
I could imagine someone in the early days of computing experiencing this problem, but not NOW.
There are so many other-created apps and programs that one routinely uses that one could opt to let a DIY ethos prevail.
Someone wanting to learn auto mechanics could refrain from merely USING a vehicle by CHECKING UNDER THE HOOD to discover HOW THINGS WORK.
There is a glut of Free Software out there with Source Code one can obtain, study, modify, and re-compile using one's computer as a laboratory.
One can download the code' for an engine', study it, modify it, compile it, test it, ... lather, rinse, repeat.

What's the easiest, fastest way to learn coding and getting involved in the community.
I never met the community' ... what's she like?

Which community' do you imagine?
There is no grand unified community' of developers.
Yet all the languages have communities based on language.
Domains of application have their own communities.
As a newbie programmer I suppose one could join a community of other newbie programmers.

What kind of ideas can you have for coding?
How do you go about the fastest route to start working in A.I. and more complex coding projects, like say a game.
See below.

Is IT a good start? Not just for a job but programming experience.
As if AI, game programming and IT all worked and played well together?

A local college had a degree program preparing one for work in AI; it entailed Philosophy + Computers + Cognitive Science.

Computer Games as have evolved over decades are now so slick and so much a product of a development TEAM that I can't imagine a single person single-handedly creating a polished world-beating game.
I suspect that game creation would entail dealing with qualia similar to an adult trying to learn music from a standing start.
One has to have the ability to play Mary had a little lamb' without experiencing process-quashing discouragement.
I suspect that it would be easier to start with a game engine and learning how to tweak parameters to implement a game dependently based on said game engine.

As for IT ... it's antithetical to both AI and game design and development.
IT is about the nuts and bolts of would-be information', it's storage and back up, limiting access to said information, implementing security', and pandering to business weenies.
Think relational databases and SQL.

Do I need to take the beginner CS classes at school to get it?
I have a rough idea how it works but can't implement the desire.
How much programming experience do I need?
It seems you've got the cart before the horse;

There are different languages - how many do I need to understand how the internet works?
Yes there are different languages.
No, you don't have to understand -- at first -- how the internet works IN ORDER TO UNDERSTAND how algorithms and data structures WORK.
With a gist understanding of basic algorithms and basic data structures one may apply these to various languages and add understanding of how the internet works' gradually one project at a time.

I've been wrestling with this topic for a while now.
I'm thinking about taking more classes but it doesn't really tell you how to program.
Dude!
Classes don't reveal how to program; programming reveals how to program ... the DOING reveals how-to, not abstract classroom shit lacking in hands-on grounding in DOING programming.
Not that one can't learn a disconnected assortment of stuff the way an artist can learn styles' and techniques'.
The artist has to have a creative desire to put the styles and techniques to use.
There are a lot of CS graduates who've acquired a repertoire of know-how who don't have an ounce of creativity ... and they can get hired to work as team members on projects to which they are assigned some specialized part of the whole the way an automotive engineer may be assigned the the creation of, say, a door handle for the left, rear door.

There are too many different terms and ways of executing them, it's like learning a different language.
Yes, a language different from a so-called natural' language.
The use of natural' language often allows a lack of symbol grounding'; the use of computer language entails something more like behaviorism to prevail.
One feeds stimuli into a compiler, translator, interpreter, REPL or such ... which responds to said stimuli with RESPONSES.
A program is a kind of kinetic, dynamic sculpture which BEHAVES.
While programming one is creating something which behaves, does, enacts, acts-as-if.
If one doesn't have the DESIRE to craft a machine or organism which DOES something dynamic one would have to have OTHERS specify one's programming assignments while hoping to experience a eureka moment to TRY SOMETHING other than what's assigned.

There are how-to books and courses which address your plight from a how-to perspective: How to design programs, for example.
One may use an analytical approach such as in The Structure and Interpretation of Computer Programs.
The tricky part is selecting an approach which resonates with one's personality.
And one generally can't quantum leap from Newbie to Entry-Level-Programmer; one has to use several layers of in-between steps which get one closer and closer until someone is willing to pay good money to have one perform work for hire' performing programming' tasks, duties, and responsibilities.
Some employers only hire those with CS degrees; others may require only a demonstrated ability to craft code of the sort they'll pay you to develop.

Now if one wants to Learn Programming, sans monetary gains, one may proceed as a hobbyist ... typically while gainfully employed via a `day job'.

#### Pizzabeak

##### Prolific Member
I know you can program a calculator or cash register if you have enough free time. Then you can maybe just crank it or customize it to see the implications of what else you can do.

I might just start a game. I was working on one before but never finished it. I think it'll be a good place to begin.

I really want to learn C. I started python and liked it but think C++ would be better for me, or cooler.

What's a good projection to where I'd be sufficient in it? I think at least 6 months to a year would be enough time to develop proficiency. I'm mainly just looking for an extra hobby to take up most of my time and I could pick up the other details later such as Ruby on Rails or quantum computing.

If there were various aspects of computer science I'd want to start as a code junky or monkey and put the greasework in. Only thing is I anticipate a lot of memorization and rote work so I'd have to be devoted or as equally so to whatever else I have on my plate, or am doing. I'd like to focus on things I want for my life, and friends & family.

Other than that I'm sure there are text manuals you can look up once you have the basics down and understand how the languages work so you could then just do what you'd want or start from scratch. It sounds like a fun enough thing as far as a science would go, I still need to finish all my math courses at school too, so that would be exciting more or less. It couldn't possibly be my main thing unless I let it take over my life and so, other disciplines can be fun too such as gardening or probably farming for a harvest, learning to grow your own food as far as a science goes. Only asking because I might get busy soon and not have as much free time for it.

So I'm not sure if it's worth trying (it is) or if I should just stick to my hypothetical guns as it is. Can't put all eggs in the same hand basket. After I finish a few source texts while practicing some C++ or # I'll see how much better I am then or happier.

#### Serac

##### A menacing post slithers
Whatever project one starts with, it should definitely be something that appeals to you on a higher aesthetical plane. Or somehow in line with your other interests in life. Coding up a calculator is boring, so it will probably not sustain your interest in programming. A game is obviously an exciting project, but it should be said that game programming is extremely challenging.

#### Cognisant

##### Condescending Bastard
Pizzabeak said:
I might just start a game. I was working on one before but never finished it. I think it'll be a good place to begin.
Start with something abstract, "Papers, Please" is a great game that doesn't have a full physics engine or enemy AI or anything really all that complicated.

#### Kuu

You should look into Udemy, there's tons of programming courses. There's even programming courses combined with game courses. While that adds quite the overhead because you also need to learn the ins and outs of a game engine, it might be more successful because you have a project to keep you grounded. I know for certain things like languages (computer or otherwise) not having a set project to work on means I'd lose focus and drop it real fast.

#### Bertrand Russell's Barber

##### XNXP
What I like to do is examine the source code of some small program I'm fond of using (or its open source equivalent) and try to understand parts of it bit by bit, maybe changing something here or there to elucidate understanding.

Another thing I do is look for tutorials online on how to create bare-bones versions of programs that I use on a daily basis. Say a bare-bones web browser or text editor etc.

Ultimately, find some program that you like and use daily and try to make a bare-bones version of it yourself or examine the source code if it's available. That often allows you to learn quite a lot at once.

#### travelnjones

##### Active Member
I found Ruby what the easiest language for my little brain to wrap around. That said how the guys I work with build up modules to do this or that. I think you may want to look for a book about Software Design. pulled at random

Lately i have thought about making a game that was just a database fun of medical information. People could track down information about a disease outbreak by doing queries with various joins. Could be a sort of fun way to teach people SQL

#### Blarraun

##### straightedgy
It's worth sharing with your friends what you're working on and what you're trying to implement in a given week. The more detailed you are the better because it won't be as easy to avoid producing the results. You can ask them to keep you accountable too.

A social contract like that is going to help keep you motivated, if you have people whose respect you enjoy earning/seeing them enjoy your work to ask about your project and maybe test the game or look at the work in progress from time to time.