Does the above picture include one of the programming languages you are planning to learn or have started learning? I have come across many a newbies frequently looking for answers to some of the following questions:
- Which technology will be most suitable for me from career perspective?
- Which technology will help me secure high-paying job?
- Which technology will I love to work with?
- Is development (coding) good for me or, I could also explore testing career?
- Should I go on to learn one of the programming languages such as Java, C#, PHP, RoR etc, or should I learn one of the application packages such as that related with ecommerce (ATG, Hybris, Magento) or ERP (SAP etc) or Database (Oracle, MySQL, SQL etc)? Which one will be more challenging and fulfilling?
- How soon I expect to start doing good in IT job?
- Is it good to join large IT company or a startup shop?
- Should I attend some training courses or subscribe for elearning and focus on self-learning?
- Who should I look out to be my mentor who could help me in my first few years of programming?
All valid questions. Lets look at some of the criteria which can be considered for making choice of technologies.
- Programming languages are just a way to talk to computer: As far as you consider programming languages such as Java, C#, PHP, RoR, Scala etc as a way to have your instructions understood by the computer, any programming language would look similar to you.
That said, the point that certain programming languages have got large number of job openings can not be ignored. But, the fact that getting into some specific programming language such as Java, C# would secure high-paying job for you is also not true. Also, it is very unlikely that you will stick to one programming language for always. Usually one can expect to learn more than two programming language in his/her entire career. And, if you get involved with one of those web application projects, be sure to embrace multiple programming languages. Thus, you may want to be open to learning any programming language.
- The focus should be on learning rather than…: In the start of the career, the focus should be primarily on learning rather than anything else including the salary. In the starting of career, it is of key importance to understand some of the subtle aspect of application programming including some of the following:
- Plan to understand business requirements: Embrace the fact that, most likely, you will be writing software to fulfill one or more business requirements which involves end users including customers and internal users.
- Syntax is important and also Semantics: You may plan to focus more on semantics of programming. For example, the whole notion of conditions such as if/then/else, switch should be learnt very well. The syntax, however, would differ with programming languages. Similar is the case with loops such as do..while, while, for.
- Testing is equally important: If you are a developer, you tend to give less importance to testing and easily get into conflicts with test engineers. 🙂 This is quite common with newbies programmer. Believe that testing is equally important and plan to collaborate with the test engineers. If you are on to learning one of the programming languages, you may want to learn the unit testing your code by making use of one of the XUnit test frameworks such as JUnit (JAVA), NUnit (C#) etc.
- Plan to read more & experiment: In my experience, I have found that self-study is the best form of study. Thus, plan to buy a couple of books in relation with your technology and read and experiment. Identify top websites and subscribe to their feeds.
- Job satisfaction can be much more rewarding: If you get on to some technology which you do not want to work with but still get paid very handsomely, believe me, in no time you would start to run away from such situation and rather work in a job which gives you greater job satisfaction even at the cost of salary. Thus, you may want to focus on having job satisfaction rather than anything else in the start of the career.
- Focus on key programming principles: If you are on to one of the programming languages, and if that is object oriented language, focus to understand key principles of object oriented programming language such as SOLID principles, YAGNI, DRY etc. Out of all the principles, I am fan on “Single Responsibility Principle” which helps you in various different phases of software development including architecture, design and development.
- Joining startups/smaller companies could lead to faster learning: Should I join startup or should I join one of those bigger companies? This is also one of the interesting questions I came across. Generally speaking, things move a bit at slower pace in larger companies. Also, it may take some time for you to make great impression in front of your managers. However, in smaller companies or startups, you tend to learn at a great pace. You get attention and mentorship of senior developers much more than larger companies. And, if you perform good, there is a very high chance that senior management recognizes you faster than in larger companies. My two cents.. you may want to consider smaller company/startups over larger companies.