Programming is so Fragmented.

Started by
25 comments, last by TheChubu 10 years ago

So, I am trying to organize the information I have gathered on computer programming. I have just been winging it to get things done, but now I want to organize and simplify my understanding and practice of computer programming.

But really, I don't know what I know. I mean, I might think I understand something, but I have no basis to compare my understanding against. I can get stuff to work by some sort of basic hackery, but I don't think I can apply my understanding on more complex things. Programming is so various.

Here, for example, you have so many various questions about computer programming, from so many various backgrounds, on so many various topics, dealing with so many various APIs and tools, using many various programming languages.

It gets to the point that I don't really know anymore what I understand, or what I should understand.

So, I have started to try out making tutorials for my own understanding, and refining them to make them as simple as possible, but the subject of computer programming is so vast and various, I get overwhelmed.

This is the usual case when I am diving head first into something new, but eventually I come out with a solid understanding.

Right now I am bouncing back and forth between two languages and about 3 different APIs. I am learning the programming languages as I go, and modifying my understanding of them as I go (this is not the normal way I do it, but this is the faster way of doing it, which is what I am aiming for because I tend to over-plan.)

Even when you get the programming part down, you still have to wonder about what platforms and stuff you want to run it on, and what hardware will be able to run it. If you are trying to make an app for android, well, you know what that means....

So, I need some help. I am simple minded, and I figure I don't understand anything well enough if I can't teach it to a little child. So I need some direction on how to organize the topic of computer programming. I am actually trying to create a program that teaches programming, which can be applied to various languages. Things like how to create variables and functions and classes. How to do loops. How to manipulate tables/list/arrays etc. How to use APIs etc. I want to use this program as a base which can be adapted for various languages.

I mean, it could even be a game that teaches game programming workflow. And I want to keep it basic and simple, yet useful.

Any tips?

Edit: I just realized that the best way to start is to teach it using pseudocode, and then looking at syntax. Still need more tips though.

They call me the Tutorial Doctor.

Advertisement

To me it seems as if you do not over-plan ... I guess you just have a hard time coming up with a structure in the planning phase and justify jumping into application of something you read by calling the problem over-planning.

I know a few people who are really good at researching efficiently, but it is a skill that needs to be learned and honed.

I think "The First 20 Hours" (by Josh Kaufman) kinda helps ... he outlines how much he researches before he figures out how to build a skill. And he defines a target performance level ... good stuff IMO.

Writing papers ... kinda like scientific papers can help too. You have to describe what your goals are, come up with a structure, write down what the result of your research is and you have to be able to explain it and read about its context.

There is a Programming Paradigms box in some Wikipedia articles. I like it as a big picture overview over programming:

http://en.wikipedia.org/wiki/Object-oriented_programming

Other topics have pretty good entrance articles as well ...

the http://en.wikipedia.org/wiki/OSI_model OSI model if you want to get into networking etc. ... you need to dig up those resources for areas that you want to tackle.

Stealing from what universities teach is not a bad idea either ... you can still cherry-pick instead of learning everything they would throw at you.

Given enough eyeballs, all mysteries are shallow.

MeAndVR

While it can be fragmented a lot of the concepts behind it are the same no matter what language,API or tools you use. You may type different things or call different functions but they can be semantically the same. So one thing Id advise (although you may not want to do it) is stick to one language and get a decent understanding of it. Jumping between languages might make things more difficult. But I found once I understood the concepts in one language I was able to learn another much faster as I was mostly just learning the syntax.

Also dont forget, you never stop learning!!


Right now I am bouncing back and forth between two languages and about 3 different APIs. I am learning the programming languages as I go, and modifying my understanding of them as I go (this is not the normal way I do it, but this is the faster way of doing it, which is what I am aiming for because I tend to over-plan.)

This is probably the biggest contributing factor to your troubles. For a novice, completely learning a single language is a large enough task all in itself. The best tip I can give you, focus. Pick one language to learn and focus on learning that language. Some of the stuff you will learn will carry over to future languages, and some of it won't. Becoming proficient in a single language, then moving on to other languages is almost always a better path than trying to become proficient in multiple languages at the same time. Same with APIs. Pick one and focus, with one additional recommendation; avoid mobile platforms at first. There's just a lot of additional complexity involved there that increases the challenge for a novice. Starting out is challenging enough as it is. Stick to the PC and you can stick to console programming until you're comfortable with it, then move on to GUIs and graphics.

If you simply want to gather information on programming, then you have come to the right conclusion on programming. It is diverse. It is a very large field, and continues to grow. There will be more programming languages, more platforms, and more APIs.

Programming in its simplest term is getting the machine (in this case, the computer) to do the work for you: send batch jobs to printers, do this, do that, draw this on the screen, rotate, calculate this and that.

Its true programkming spans a thousands of topics. I often feelin lost in it. Even if you focus on one language and api this is still burden of thousands topics in your game - i dont know any solution for that


Right now I am bouncing back and forth between two languages and about 3 different APIs. I am learning the programming languages as I go, and modifying my understanding of them as I go (this is not the normal way I do it, but this is the faster way of doing it, which is what I am aiming for because I tend to over-plan.)



Even when you get the programming part down, you still have to wonder about what platforms and stuff you want to run it on, and what hardware will be able to run it. If you are trying to make an app for android, well, you know what that means....

One word: focus.

I find game development to be challenging because the field is very broad AND deep: in order to make anything minimally sophisticated you need a decent grasp of programming, software engineering, and math; and to make anything mildly interesting you also need a lot more, e.g. physics, computer graphics, and AI. Not to mention art, sound, networking, user interface design... You get it. It's a lot of technical, non-trivial stuff - to sum it up, I find it daunting (and exciting).

If you're new to programming AND to game development AND to APIs, learning all of those at the same time is very complex in and of itself - the field is too broad. Doing so with 2 different languages AND 3 APIs is almost guaranteed frustration. You also have learn about software engineering. If you're new to some or all of this, it's just to much. So, focus.

Pick ONE language and learn it WELL. Do exercises, write small programs, experiment and tinker with it. There are many free resources on the web about programming; I find Zed A. Shaw's Become a Programmer, Motherf**ker page a good starting point. Also his book Learn C The Hard Way looks quite nice: lots of exercises to do, much material on data structures, talks about good practices. I have yet to read it, though.

If you want to start developing games right away, you could try C# and MonoGame. The combo is powerful AND multiplatform. You could argue that C++ and DirectX are more powerful, but 1)they're also more complex, and 2)it's VERY unlikely that a beginner's project can't be done in C# with MonoGame. Should you need more performance later on, you can always switch.

So, focus. And take a look Sijin Joseph's Programmer Competency Matrix from time to time to know at what level you are, and to decide what you should learn next.

Learning 2 languages and 3 apos at the same time is overkill. Learn one language, after that learn one api than your done. After that you just build your skills with the language/api combo, this is the longest process but the funnest as well.

Programming today is as much learning the tools and process as it is writing the code. It can get overwhelming to learn the tools and process before you even get to a single line of code. I suggest picking a language which comes pre-packed with all the process and tool kits already worked out for you maybe something like PyGame or Love.2D, both Lua and Python are full languages and you'll learn alot from them. It's important to pick one with a debugger though.

Good Luck!

Hi,

As I suggest to many beginner level and intermediate people here, you need to settle on one comprehensive workflow pipeline of applications and software to complete projects. It is very much a grueling step by step cycle of coding, testing, and debugging. Many are tackling advanced coding challenges without even realizing it. Coding courses and tutorials are critically important to complete.

Common strategic mistakes by beginners, for example, is that that are reaching too low in coding to get a grasp of the big picture - sort of like digging too deep with not enough skill and equipment. Remember the old cliché, "They can't see the forest for the trees!" ? Another common strategic error is to not constantly keep in mind modular coding. The programmer should be able, if done right, to turn ON or OFF sections of coding by using permanent or temporary interfaces between source code and the particular module of coding. Modular coding also allows the developer to swap sections of coding to test for performance or bugs, which is common with class files, jar files, and dlls. A good game engine comes with some of the tools to allow this and also connect with IDE or SDK to open relevant libraries and exploit them. Nice, thick, recently published book in the language of choice would be a great help to you to finish, maybe even a couple times. Choose one that has work assignments in an IDE and/or game engine. There are hundreds of such books published in the last two years covering all kinds of programming subjects.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

This topic is closed to new replies.

Advertisement