In your article about “How to pick a programming language,” one of the suggestions offered by Bruce Epper was to learn software design. My question is, are there good, helptul books from which I can learn and get started in software design followed by nailing down a programming language? What would you recommend for straightforward learning? I have no experience with comp/sci and am eager to get some solid background in programming and design. Thanks, Brantley Alexander
I would recommend you start by learning BASIC. It may not be in use much today but it is very eaasy to learn, has no arcane or cryptic commands you must memorize and it will teach you programming concepts. Once you know the concepts, you will find other languages much easier to learn.
The way to go is to start learning a language, and learn how to do it well and learn the software design concepts after you know a good bit about a language. I recommend Python or Java starting out, as I've learned through a few years of studying CS at a university that all the skills you gain are transferrable, and Java/Python are both widely used. To start, check out codeacademy.com or thenewboston.com (Under tutorials, he has TONS of languages and free youtube videos on those languages, and he teaches really clearly). It's how I got started before uni, and it's a good way to go.
Novelists read others work for inspiration. Same is true with software design. It isn't about the language. It is about the expression. Great literature is written in many languages. Same for great software. I would suggest finding well designed software and see if you can work out the underlying algorithms, etc. Keep in mind that it takes the average person about 10k hour to master anything. Be patient & deliberate.
Programming is like the game of GO, it takes a short time to learn the basics but a lifetime to master. :-)
There is no real answer to this question. As epiquestions suggested, the first thing you need to do is to make yourself well aware about certain basic programming concepts of a particular language,maybe Java or C++.You should practise basic programs for about a month and then you can move on to advanced concepts like data structures, algorithms,multithreading,exceptions etc. For you to be able to write any long bulky programs would require a practise of about 6 months, provided you practise consistently and on a daily basis.After a rigorous training you finally are ready to be a developer and hit the market.
Learning software design takes longer as compared to learning a programming language. A number of useful free sources are available. Derek Banas youtube channel (http://www.youtube.com/user/derekbanas) offers a number of series. I would recommend UML 2.0 Tutorial, and Design Patterns Tutorial. You may also like Java Tutorial and JavaScript Tutorial.
If you are beginning programming, you might want to research on basics of programming like software design (basic only: using flowcharts), programming concepts, object oriented programming, how a program is structured/compiled, best coding practices. You need to start with a programming language to be able to apply all the concepts you will learn (I recommend java because it is used by most web services/apps. Android apps are java based). Once you've got the handle on how a program works and how to program you can learn Software Architecture and Design (the advanced stuff for bigger projects). After that it is up to you what you want to focus on. If you want to program games, then focus on Game programming (study directX API C++ etc etc). If you want to create business/web services/apps you should learn Database programming, Databases, Java etc.
http://docs.oracle.com/javase/tutorial/ is a great way to start to learn programming in Java.
http://howtoprogramwithjava.com/programming-101-the-5-basic-concepts-of-any-programming-language/ seems a good site to familiarize yourself with programming concepts.
The rest is up to you since programming is self taught. You can't learn everything from a class and you have to research from many sources and keep on learning, as programming languages are continually developed. Good luck. Have fun
One thing you want to look at is Interaction Design. Interaction design focuses on the experience that an end user will have when using your software. Good design will make your programs easy to use and pleasant to look at.
A quick Google search will return a few places you can look at to get started, like here:
http://www.uxbooth.com/articles/complete-beginners-guide-to-interaction-design/
No real answer but I'd like to know. My daughter's college course uses C# and Python (for a side project using a Raspberry Pi) and I think she'd appreciate any advice going.
Microsoft Press has published many well organized and written books for several programming languages. They are usually written from a computer science perspective, yet straightforward enough for most to follow. Sams "Learn X in 24 hours" (where X is a variety of programming languages) will also help you get started in a new language and introduce fundamentals fairly quickly.
Architecture is a broader and more complex topic. Even the topic you mentioned ("How to pick a programming language" is not a simple as it seems because all languages vary and some are better suited than others depending on the task. For architecture knowledge however, it is best to start a two or four year computer science program.
Before signing up, you may want to consider trying a language to see if you like programming at all. C# or Java are good introductory languages because they are well known, mainstream, well documented, and can be used in many situations. There are numerous books available (even programming for dummies) on both of these languages. After writing your first program, you will at least have a feeling for whether or not you like programming as well as if you have a thirst for more computer science concepts
One book I always recommend is Database Design for Mere Mortals. It's a foundational book that applies to any system that is (relational) database driven.
http://www.amazon.com/Database-Design-Mere-Mortals-Relational/dp/0201752840
I've bookmarked some solid design resources on my Springpad as well:
https://springpad.com/#!/cheesewz/notebooks/netdevelopmentresources-5e21/blocks?query=design
https://springpad.com/#!/cheesewz/notebooks/netdevelopmentresources-5e21/blocks?query=design%20patterns
I'm on the same path, trying to look the best source of free way to learn STEP BY STEP how to program.
The actual recommendations that I have received are:
Windows: C Sharp
WEB: PHP
Mobile: JAVA
I would like to go with C# if someone could add some good source, good course (free) that we could pick to start from 0 learning programming will be good :)