Wednesday, March 19, 2014

Advice for those just starting out in Software Development

So this is a question that a friend asked me in an email. I though it was worth sharing.

Hey, how are you? I hope everything is going well for you. Im writing for advice or suggestions. I started taking classes for programming. I was wondering if there is anything languages I should really focused on or any reading material you suggest?

Okay here goes....

Rule of Thumb

It depends on what you want to do. However the key thing is to remember when starting out is Depth over Width. With that I mean learn one (or more than likely two) programming language well and its concepts will transfer to other languages. When starting out it is better to just learn how to do one very well that it is to know a little bit of a lot of different programming languages. After you have a pretty solid understanding of the core fundamentals of a language, its inclinations for certain architecture decision, design patterns, data structures, and general methods of code reuse etc..... So in short you can "think" in that language pretty well.

Talkin' Bout Some Relations... Database relations that is.

To add to this, early in your career you will more than likely need to know something about relational database management system. Those bad boys are used to store the data that you would be playing with and unless you are building tools for other developer (even sometimes then) you are going to have to have a fair bit of knowledge about how to preform Creation, Removal, Updating and Deletion queries using a special type of programming language. More than likely this will be a dialect of Sql short for Structured Query Language. As to which SQL there is some debate but I'm of the opinion that MySql or Microsoft Sql would server you well in the beginning as this is what I have seen most commonly in the wild (and are freely available).(this can vary by location so if you have your heart set on a particular location I'd do some research by looking at the job sites and querying for sql or database and see what shows up )In any case you should know something about relational databases.

Major Areas of Specialization

Web of Lies

In some cases just learning one language deeply is not practical. This is especially true for web development. Noting that IMO the additional web languages you work with aren't all that hard in comparison to learning other programming languages. Speaking in overly broad terms and possibly making a number of generalizations I'd say that if you are aiming to be a web developer (even just starting out) I'd expect you to know the following.


  • You should be able to stub out a basic html page with a header, body, form, a couple of input elements
  • Stub out a table
  • Uses for a div
  • Uses for a span
  • Uses for an anchor tag


You should be able to use a class, id and element selector. Create a even layout for a page just with a style sheet and little to no inline css or element attributes on your html.


  • You should know what the DOM is and be able to access DOM elements by id and name,
  • Some jQuery because its so common
  • JSON, What it is and how is it used
  • Ajax what it is and how to use it.

Javascript - bonus

  • Object Extensions
  • the difference between "==" and "===" when talking about comparison,
  • what closures are and what the are good for
  • Prototypical Inheritance
  • General OOP concepts and Design Patterns and how to apply them in javascript. I.E. how do I make a method or property private.
  • What Underscore.js is
  • Common pitfalls in javascript
  • Some basic knowledge about SPA applications. What they are, when to use them, what are some libraries in the wild.
  • General code organization, possibly using tools like require.js

There are a ton of places to go learn these skills if you don't already know them. Additionally you will want to have a good grasp of a server side language like php, java, c#, ruby, python or even node.js (special case)

Other Areas of Application Development

Often Desktop applications are written in a language like C#, vb6, vb.NET, Java, c++ or some other language with a SQL database back end. Not as many as there were in the late 90's due to the growing popularity of the web but are still around.

The Tiobe index is one kind of indicator for the popularity of programming languages
(does not necessarily reflect the industry as a whole but you can't go too bad from learning one or two of the languages on the list)

Mobile development
Mobile development is mainly done with Java ( for Android) or Objective-C (for IPhone) but can also be done with web knowledge to some extent and work on both (

Easy to Hard

I listed some languages in order of easiest to most difficult from my experience,This is highly speculative and just my opinion.

  1. HTML CSS (go hand and hand)
  2. SQL
  3. PHP Python Ruby  (about the same level of difficulty)
  4. C#  Java (about the same) 
  5. Vb.NET  
  6. C
  7. C++
#3-#5 are beyond debatable.
#2  is easy to learn the basics but has more than a fair bit of depth

In any case whatever you decide I'd recommend a few spots

For FAQs
For learning online

For lots of free books


  • Asking Questions Online
    For actually asking questions your best bet might be a chat room like an IRC I don't suggest starting out asking stuff at a place like stackoverflow just because they aren't really that friendly to newbies* and its kind of hard to find places that are. Maybe user groups on facebook or google plus might be better but those are kind of hit and miss as well.....

    *note* Stackoverflow is an awesome resource, just not the greatest place to start out asking questions. That being said if you
    are going to ask about something on SO I'd recommend you look at this on Stackoverflow and this article from Jon Skeet, the record holder for most rep on so

    Remember Remember.....

    Okay so thats a lot to process... but it should be a good start. Biggest thing to remember again is to pick one language and area and stick with it until it becomes easy.... Which takes a considerable amount of time.Also don't just read about the field or language actually make stuff, not big stuff but small simple things..... really small simple things and finish those small simple things and share them so others can critique.

    Best of luck to you in programming....
    Its hard but rewarding both financially and mentally and at times spiritually.


    sriram said...

    It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command.

    web designing course in chennai

    sandeep saxena said...

    The innovative thinking of you in this blog. This blog makes me very useful to learn. I like the information. Good work and keep update more.
    LoadRunner Training in Chennai
    QTP Training in Chennai
    core java training in chennai
    clinical sas training in chennai
    javascript training in chennai
    Spring Training in Chennai
    Hibernate Training in Chennai
    Manual Testing Training in Chennai
    JMeter Training in Chennai

    Aravind said...

    Wonderful blog with great piece of information. Regards to your effort. Keep sharing more such blogs. Looking forward to learn more from you.
    AWS Training in Chennai
    AWS Training
    Cloud Computing Courses
    DevOps certification
    Azure Training center in Chennai
    Vmware Learning
    Best AWS Training in Chennai
    AWS Training institute in Chennai
    AWS Course

    Anbarasan14 said...

    Thanks for your efforts in sharing this post with us. This was really awesome. kindly keep continuing the great work.

    Spoken English Classes in Chennai Anna Nagar
    Spoken English Class in Porur
    Spoken English Class in Vadapalani
    Spoken English Class in Thiruvanmiyur
    Spoken English Class in Chennai
    Best English Speaking Classes in Mumbai
    English Speaking Course in Mumbai
    IELTS Training in Chennai
    IELTS Coaching in Chennai
    IELTS Mumbai

    cynthiawilliams said...

    Fabulous post admin, hats off to your creativity. I got lots of information here.
    Web Designing Course in chennai
    web designing training in chennai
    Web Designing Institute in Chennai
    Ethical Hacking Training in Chennai
    PHP Training in Chennai
    Angular 6 Training in Chennai
    Web Designing Course in Porur
    Web Designing Course in Tambaram
    Web Designing Course in Adyar
    Web Designing Course in Vadapalani

    Sivanandhana Girish said...

    I would like to value the time the author has taken to share this content with us. The author has focused on a single topic and explained it in detail.
    Education Franchise India
    Spoken English Franchise
    Franchise For Spoken English Classes
    Top Education Franchise In India
    Best Education Franchise In India
    Computer Education Franchise
    Education Franchise India
    Computer Center Franchise
    Education Franchise Opportunities In India

    The India said...

    We have highly experienced developer for the best SEO friendly websites for all types of businesses and can help make it profitable at the most economical rates.
    SEO Sydney
    Web Design Company

    Chris Hemsworth said...

    The article is so informative. This is more helpful for our
    best software testing training in chennai
    best software testing training institute in chennai with placement
    software testing training

    software testing training and placement
    software testing training online
    software testing class
    software testing classes in chennai
    best software testing courses in chennai
    automation testing courses in chennai
    Thanks for sharing.

    Naveen S said...

    This is the first & best article to make me satisfied by presenting good content. I feel so happy and delighted. Thank you so much for this article.

    Learn Best Digital Marketing Course in Chennai

    Digital Marketing Course Training with Placement in Chennai

    Best Big Data Course Training with Placement in Chennai

    Big Data Analytics and Hadoop Course Training in Chennai

    Best Data Science Course Training with Placement in Chennai

    Data Science Online Certification Course Training in Chennai

    Learn Best Android Development Course Training Institute in Chennai

    Android Application Development Programming Course Training in Chennai

    Learn Best AngularJS 4 Course Online Training and Placement Institute in Chennai

    Learn Digital Marketing Course Training in Chennai

    Digital Marketing Training with Placement Institute in Chennai

    Learn Seo Course Training Institute in Chennai

    Learn Social Media Marketing Training with Placement Institute in Chennai

    zuan said...

    Thanks for sharing an informative blog keep rocking bring more details.I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite sure I will learn much new stuff right here! Good luck for the next!
    Web Designing Training Institute in Chennai | Web Designing courses in Chennai
    Mobile Application Development Courses in chennai
    Data Science Training in Chennai | Data Science courses in Chennai