Step I - Mastering Programming Fundamentals
In order to get a good job in software development, you must first learn a good programming language like java or python. Learning a programming language means mastering few core programming concepts.
The central concept to programming is to manipulate data to generate some meaningful information. In order to be a good programmer one must understand how computer understands data – be it a number, text, sound or image. In a programming language data is stored in the form of variables, arrays, strings, objects and data structures like lists, stack, queue, tree or graph. A weak understanding of this fundamental concept will eventually lead to nothing but failure.
Data Capturing – In order to manipulate data, a program must capture data from some source. It can be a keyboard, microphone, web camera, file, database or a URL. Real world problems demand us to read data from any such source. Reading data from a keyboard is easy but a programmer must be confident to capture data from any source.
Data Processing – Once data is received by the program, one must be able to manipulate it using the right logic. Logic building is one of the most creative sections of programming. It not only requires you to solve some equations but also demands good understanding of decision making and looping. Logic building requires patience. The only way to build logic is to solve as many problems as one can. During this phase only one understands about good and bad algorithms, time complexity and space complexity. During this phase only many programmers quit. As I said this phase requires patience and practice.
Visualization – Once we have processed data, it’s time to present the information to the user. This phase can also get tricky. We may have to display some information on to the monitor but our program might require us to present the information in the form of a chart. It is also possible that we have to store the information to a file or to a database, upload it to a web server or send it as an email to some person.
The core skills don’t stop here. One thinks that this is enough. NO. The list goes on.
Smart Coding - A programmer must learn to write flexible and reusable code. This is where functions and Object Oriented Programming comes in. Without this skill a programmer will not be able to use Libraries and Frameworks. Today software development is not just coding, it’s an art which can only be learnt by understanding the design principles behind software development.
Robust Coding – A program should not only be accurate but also be able to handle any abnormal situation that might arise during its execution. Exception Handling sits right at the core of software development process. A programmer must have command on this aspect of programming.
Parallel Processing – Today most of the programs deal with large amount of data. Threads help us in performing different tasks in parallel at the same time. Threads reduce the time taken in processing large amount of data. Threads sit right at the core of Big Data Analytics and Cloud Computing. An aspiring programmer must learn this skill to be a good software developer.
-- A program interacts with OS and Hardware to perform its task. A basic understanding of Computer Architecture and OS is a must in the journey of being a successful software developer.
-- As mentioned earlier, a program deals with different data sources like files, database and web. So a good understanding of file handling, SQL and HTTP will be needed to write real world applications.