What is
Programming
Computer
Programming is the process
of designing, writing, testing, debugging,
and maintaining the source code of computer programs. This source
code is written in one or more programming languages (such as Java, C++, C#,
Python, etc.). The purpose of programming is to create a set of instructions
that computers use to perform specific operations or to exhibit desired
behaviors. The process of writing source code often requires expertise in many
different subjects, including knowledge of the application domain, specialized
algorithms and formal logic.
Why We
Need Programming
Programming helps
automating lot of time consuming activities and reduces the human errors. Every
computer program needs to be written in one of the multiple computer languages
which are available. One such programming language is Java.
Note the following
points about Java
- Before Java was invented there were other
languages like COBOL, FORTRAN, C, C++, Small Talk etc., these languages
had few disadvantages which were corrected in Java.
- Java is related to C++, which is a direct
descendant of C. Java uses C syntax and many of
the object oriented features are influenced by C++.
- As with every programming
language, Java also innovated many new features to solve
the fundamental problems which the previous languages could not
solve.
Please note that
the art of programming and the programming languages are
different. As the environments change and as new problems arise, there will be
new programming languages and new technologies which will be created. But the
art of programming might not change so radically. As computer
programmers or would-be programmers, it is really important to learn
the programming skills along with languages. When we have strong programming
skills, learning new languages or technologies will be far easier.
Two important points about Programming Skills and Languages.
Two important points about Programming Skills and Languages.
- If a programmer is excellent in one language, he
can naturally excel in any other language. Learning new
technologies should be easy.
- Learning one language thoroughly is better
than having limited knowledge in multiple languages.
How to
Become Excellent Programmer
Learning a computer
programming language is very easy compared to writing good
programs and using the language effectively. For a beginner, it might
take 4-5 months to learn a new Programming language whereas perfecting the
programming skills including the design, debugging and maintenance might take
more than 3 to 4 years. To become an excellent programmer, one need to work
hard.
Some
important tips to become good programmer.
- Problem
solving skills and aptitude: Every
programmer must constantly strive to improve the problem solving skills.
Since every program we write will be a new problem and without proper
problem solving skills, we cannot effectively solve those problems.
Aptitude is not just for clearing the rounds of job interview, but it is
something which has to be practiced continuously even after getting the
job. It is really important to keep them sharp throughout the programming
career. There are good books like RS Agarwal for Aptitude and websites
like indiabix which help in improving the problem solving skills and also
keeping them sharp.
- Ability
to learn new things and be ready for change: With aptitude and problem solving skills comes
the ability to learn new things. As you all know the world is
changing fast, but programming languages and technologies change even
faster. It is really important that we are willing to learn new
technologies and methodologies and improve upon our existing capabilities
to become an excellent programmer. If the real-time problems demand, it is
necessary to quickly learn the new technologies and use them effectively
to solve those problems. Also note that every new technology will not
solve all the problems and be cautious while choosing
whether the technology is suitable for your needs or problems.
- Keyboard Typing skills: In the initial days of programming, please focus
also on improving your keyboard typing skills. Typing properly will really
help in writing the programs faster and help in not losing or forgetting
the ideas we just thought. Typing skills once learned wrongly or
improperly, will make it even more difficult to correct it
later. So it is better to learn typing properly in the initial days. There
are many good tools and websites online which help in improving the typing
skills or even more better would be to go to proper typing institute at
your location, Typing skills help you to become a good programmer.
- Work on Basics: As
it is true for any industry and any job, the conceptual understanding is
the key for success. Unless one has strong conceptual foundation, he/she
can never be a good programmer. The core conceptual understanding helps
you in designing and implementing the best solutions in the best possible
way. If still you feel gap in core computer science and your programming
language specific concepts, it’s never too late to go back and review the
basics.
- Start putting question tags (how, what) with every set
of code you write One
thing that I realized creating a clear separating line between good
programmer and rest is that zeal to know what and how it is happening.
There is small group of people who can never leave a code without knowing
exactly what is happening when it executes. I understand that in tight
deadlines, we don’t get this liberty always and hence have to leave the
code just knowing that it’s doing its job. Although this is a bit
different topic of how to handle such situations, but as a programmer one
can always try the level best to dig into as much as one can. And believe
me, this becomes a habit with time and then you do it unknowingly every
time.
- You learn more by helping others:
Most of us have a common tendency of turning our
heads towards forums or groups only when we need help. And again a clear
separation between the good programmer and rest that the former visit these
places more often to help others. This makes them learn more then they learn
getting their problem solved by someone else. Within a team as well, help
others to solve their problems. Believe me, understanding others’ problem in
their context, investigating on that and providing solutions; will leave you
much more learned than before.
- Write simple, understandable but logical code
As in almost every
aspect of life, the formula of KISS (Keep it simple and short) works in
programming as well. Write more logical code and avoid complexity. Sometimes
people do write complex code just to prove their capability to write such
codes. My experience says that simple but logical codes always works well,
resulted in fewer issues and are more extendable. I remember an excellent quote
Good code is its own
best documentation. As you're about to add a comment, ask yourself, "How
can I improve the code so that this comment isn't needed?"
- Spend more time in analyzing the problem, you’ll need
less time to fix it
Spend more time in
understanding and analyzing the problem and designing solutions for it. You
will find the rest of the things quite easily doable. Designing not always mean
using modeling languages and tools, it can be as simple as looking at sky and
thinking solution in your mind. Those who have habits of pressing keyboard (for
coding) the moment get the problem, usually ended us something different than
the requirement.
If you cannot grok the
overall structure of a program while taking a shower, you are not ready to code
it.
- Be the first to analyze and review your code
Although a bit
difficult, but try to break your own code before others can and with the time
you will learn to write close-to-bug-free code. Always do a close and unbiased
review of your code. Also never hesitate to take others view on your code.
Working with good programmers and taking their feedback's will surely help you
become a good programmer.
- Don’t dismay yourself by looking at changing technology
world
Over these periods in IT
industry, I met with many people who are either disappointed by their work or
even left it to search new job saying they want to learn and work in latest
technologies. I don’t see any problem with this aspiration but the very first
incorrect word is the ‘latest technologies’. What we are hearing every day and
mean here is new tools, APIs, frameworks and others means coming up every day
to make the programming easier and quicker. This anyway will continue in
technology world. But what needs to be understood is that the core and basic
technologies changes with much lesser pace than frameworks, tools and APIs
around it. This is like the sea where the surface water moves very rapidly but
the deep water is relatively calm and concentrated and most of the aqua lives
survive here. So, feel yourself in that deep water and close to core
technologies. For e. g. in Java enterprise world, lots of web frameworks exist
and new ones coming every other week. But the core concepts of request based
client-server communication, MVC pattern, filters/servlets/JSP, resource
bundling, XML parsing etc remains same. So spend more time in learning these core
concepts rather than worrying about ever changing frameworks and tools around
it. Believe me, with the foundation of core concepts, you will always find
easier to learn new frameworks, tools and APIs.
- Read documentation
One of the essential
habits of good programmer is that they read lots of documentation. May it be
specifications, API documents, tutorials etc. Reading documents helps you
creating that essential foundation based on which you program in best of the
way.
- You can learn from others code as well
I interacted with some
excellent programmers who actually have java source project inside their IDE
all the time and read/refer that in daily work. They do it not only to fulfill
their appetite of knowing the basics but also to learn ways of writing good
programs. Reading and referring reliable and known open source code or your
senior’s code, can also help you making your programming better.
- Ability to learn new things and be ready for change:
With
aptitude and problem solving skills comes the ability to learn new things. As
you all know the world is changing fast, but programming languages and
technologies change even faster. It is really important that we are willing to
learn new technologies and methodologies and improve upon our existing capabilities
to become an excellent programmer. If the real-time problems demand, it is
necessary to quickly learn the new technologies and use them effectively to
solve those problems. Also note that every new technology will not solve
all the problems and be cautious while choosing whether the
technology is suitable for your needs or problems.