Where in this forum do I ask questions about general programming? Like is there somewhere I can gain some basics knowledge that is common to all or most programming languages? Does that even exist, or just common to families of languages? Would I just have to learn a lot of languages to catch on? Where do programmers work, like what businesses hire programmers? I know Microsoft and Google and Intel etc. does but what if I just want to begin thinking about an apprenticeship at a local company, and I don't live any ware near those type of companies. Would I be looking for a software firm, or would my local large companies have a programmer position in there IT dept? Is there even an apprentice position in the field or is that a dead concept or was that something that never was? Where do I ask those type of questions?
Page 1 of 1
2 Replies - 1855 Views - Last Post: 18 July 2009 - 07:18 AM
Replies To: General Software Career Advice
Re: General Software Career Advice
Posted 16 July 2009 - 08:27 PM
The "Software Development" subforum. If your general question is more of a CS type question (about data structures & algorithms, grammars, etc.) the computer science subforum might also be suitable, and similarly, if the general question has a context of programming games, the game programming subforum might also be suitable. So you might want to ask a moderator to move your question to the software development forum, if you want it filed correctly.
Where in this forum do I ask questions about general programming?
I wouldn't really say common to programming languages as much as decoupled from languages. The problem, is there isn't any one book that can teach you everything. Learn as you program is probably the best rule of thumb (it's frustrating yes, but any more and you can't make progress).
Like is there somewhere I can gain some basics knowledge that is common to all or most programming languages?
So whatare are examples of knowledge decoupled from programming languages? Most importantly, that which comprises the experience of a good problem solver. 40 years ago, the fundamental nature of programming was no different. It comes down to taking a vague never before seen task, breaking it down into problems that can be analyzed, gathering information, learning, thinking, and implementing a solution that works, that is easy to understand and maintainable, and does all that really well (in that order). Programming is fundamentally problem solving. How do you learn to solve problems? By solving problems. It's like a muscle you exercise. Ok, this really isn't knowledge so much as experience, but you get what I'm saying.
There's general computer science knowledge, like the various data structures and algorithms. For example, a linked list, and the algorithms to add, delete, or modify nodes in the list is not specific to programming languages. It's an abstraction. The jargon and terminology arising from computer science. There's domain specific knowledge. Using OpenGL (graphics API), means you need to spend time learning about the graphics pipeline, the design principle behind OpenGL (e.g. a state machine), and being comfortable with the maths (e.g. transformation matrices). Or if you are writing a web browser, about standards, and the various protocols like HTTP and TCP. None of this is programming language specific.
Learning different languages helps. Each language brings its own set of logical abstractions, an intermediary between how humans think and how computers think. Each language does things differently, with different motivations and different ideas about how to tackle problems. So unless you want to reinvent the last 40 years of programming, you should see what kind of ideas different languages bring. What is the motivation of exceptions? What are closures? Higher order functions? Anonymous functions? Objects? These concepts have risen and been put into use in various programming languages.
Does that even exist, or just common to families of languages? Would I just have to learn a lot of languages to catch on?
So you should learn different languages to expose yourself to these different ideas. You might call it families of languages, but languages tend to borrow and be inspired by each other. The general long term advice is to learn one new language something like every year or two. And move between languages that encourage very different styles of thinking. If you start with Java, learn Scheme. Maybe Lua. Maybe next is PHP. Maybe next is C++. After that Python? Maybe x86 assembly afterwards.
Seems really scary, and I'll throw out more advice, but that's all for today. If no one else magically covers everything I would say, I'll throw out more advice and information next week (after my work is done the next few days).
Page 1 of 1