Where can I get started with learning software design?

Brantley A February 22, 2014

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

  1. dragonmouth
    February 24, 2014 at 3:36 pm

    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.

  2. Jake
    February 23, 2014 at 11:11 pm

    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.

  3. Brooks Wilson
    February 23, 2014 at 8:30 pm

    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.

    • dragonmouth
      February 24, 2014 at 3:48 pm

      Programming is like the game of GO, it takes a short time to learn the basics but a lifetime to master. :-)

  4. Mat
    February 23, 2014 at 9:09 am

    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.

  5. Imran Ali
    February 23, 2014 at 7:09 am

    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.

  6. epiquestions
    February 23, 2014 at 1:38 am

    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

  7. Tyler
    February 22, 2014 at 10:34 pm

    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:

  8. Martin W
    February 22, 2014 at 9:07 pm

    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.

  9. Ed Sullivan
    February 22, 2014 at 8:42 pm

    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

  10. Shawn Gorrell
    February 22, 2014 at 8:38 pm

    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.


    I've bookmarked some solid design resources on my Springpad as well:



  11. Xeon
    February 22, 2014 at 8:06 pm

    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 :)

Ads by Google