Java vs. C/CPP for competitive programming

java-vs-c++-which-ones-for-you

 

If you’re here, chances are, you’ve decided to enter the world of competitive programming. And now, like every other fresher, you’re confused about the language to pick, right?

Java vs. C/CPP has been an ongoing debate since the advent of the competitive program. None of these languages trump the others, and it’s all about your preferences and needs. However, if you’re an absolute beginner, these key points will help you make a more informed decision:

  1. C/CPP:
  • C++ does not force object-oriented programming:  Unlike Java, the C++ language doesn’t force object-oriented programming, it merely supports. It. CPP provides useful extensions that can facilitate object-oriented programming thus allowing you to enjoy the best of both worlds.
  • Parameterized types: The “template” keyword in C++ allows the coder to write generic implementations of algorithms which can come in quite handy in the long run. In C, one could write a generic list implementation with an element like:

struct element_t
   {
      struct element_t *next, *prev;
      void *element;
   };

C++ allows you to write something like:

template <typename T>
struct element_t
{
   element_t<T> *next, *prev;
   T element;
};

  • A vast standard library:  C++, being a successor of the mighty C, allows the full use of the standard C libraries as well as the advanced libraries of C++. The most useful library is the Standard Template Library (STL). The STL contains some valuable templates like searching and sorting routines and implementation of most-used algorithms. It also includes useful data structures like maps, sets, lists, trees, graphs, etc. All of the STL routines and data structures are tailored to specific programmer needs – all the programmer has to do is fill in the types.

For example, to implement Binary Search, Java requires us to write a custom function. Whereas, in C++ Binary Search STL  routine is defined as

binary_search(startaddress, endaddress, valuetofind)

The above routine can be used without spending a lot of time on the logic behind something as trivial as binary search, thereby saving the coder’s time.

  1. Java:
  • STL vs. containers: C++ provides well designed STLs, whereas Java has Containers. The benefit of containers over STLs is that there are a few situations where STL doesn’t have a direct solution. For example, in case of priority_queue in STL, it doesn’t support decrease-key operation which is required for implementations of essential algorithms like Prim’s and Dijkstra’s.
  • Exception Handling in Java is incomparable: Java is known and appreciated for being exceptional in exception handling. It trumps C/C++ in this aspect. For example, it’s a lot easier to trace an ArrayIndexOutOfBound segmentation fault in Java.
  • Time Limit Exceeds: This is where Java comes second to C++. If you’re using Java, you might come across a TLE error due to Java being slightly slower.
  • Big integer and Regular Expressions: One of the biggest advantages of Java over C++ is the availability of libraries like Biginteger, Regular Expressions, and geometry library. These libraries make day-to-day competitive programming challenges easier to tackle.

C++ vs Java

  • Java requires more lines of code: Writing codes in Java uses a lot of syntaxes. This makes Java a great tool by providing the developers with granular control over their code. But, competitive programming demands speed, so, it’s recommended to pick Java only if you have some prior knowledge of coding in Java.    
  • STL vs. Containers: As we discussed above, STLs are tailor-made for competitive programmers, but some programmers still prefer containers.
  • C++ is more Popular: Be it the origin year or the comfort of use, but C++ outstands Java regarding the number of users that use the language.
  • C++ saves time: Java is no doubt slower than C regarding compilation and execution of the code. Couple that with the verbosity of Java codes and you’ll realize the amount of time you can save if you opt for CPP. During coding contests, you need to compile and run programs many times before you reach the desired output. Java takes a lot of time in this aspect, while C++ is a lot slower. Therefore, in limited time contests, C++ can help save time. However, many coding contests today provide different time limits for Java and C++ with that for Java being on a slightly higher end than C++. So, even if you choose Java as your sword, you won’t lose out on too much. Just be thorough in whichever language you choose.

Wrapping it up, C++ is till date the most preferred language followed by Java for competitive programming. However, ardent Java coders still use Java and beat other coders fair and square. C++ being more popular doesn’t make it the one for you. Eventually, it all boils down to your comfort and your needs. If you’ve been coding in C/C++, you shouldn’t switch to Java just because of its exception handling capabilities. Similarly, if you have a Java background and are competent at it, C++ shouldn’t be your choice only because of its benefits. Being confident in what language you chose is the key along with rigorous practice. We at Coding Ninjas make sure you don’t lack in either – come, join us, and see yourself excel!

Online vs. classroom: Which To Choose?

classroom-vs-online-which-to-pick-when (1)

 

An increasing number of people from all walks of life are waking up the importance of understanding coding and its underlying principles. From teachers, entrepreneurs, managers, inventors, to even students (not necessarily of Computer Science background), everyone is trying to get around the concepts of programming.

In today’s technology-oriented world, the knowledge of programming is an integral part of learning. Technological innovations surround us and make our lives much more convenient and reliable. If you understand the basics of coding and programming, you know how these innovations work. Not only that, but you’ll also be in a position to implement your ideas and who knows, maybe you’ll be the one creating the next big thing?

Like most advanced disciplines today, you can learn to code either by enrolling in a coding boot camp (offline) or an online coding course. Both of them have their distinct advantages and limitations. Let us get a deeper insight into them.

Classroom Coding Courses:

  1. Better guidance

It is a known fact that a classroom or boot camp environment is a highly interactive one – since you are not only surrounded by counselors and mentors, but also by your classmates. If ever you are unable to grasp a concept or are confused about something, you always have others to guide you through your weak points. Face-to-face discussions are possible in such an environment which can be quite nurturing for your coding skills.

  1. Focused curriculum

Classroom coding classes or coding boot camps usually have a stipulated period (12-15 weeks) during which they focus on teaching the basics of coding, and cover all the relevant topics that every fresher need, helping comprehensive knowledge about coding and programming. The syllabus is curated well-planned, making learning much more natural.

  1. Collaborative learning

When you learn to code in a class with fellow students, you learn to interact and collaborate with them as a team aiming to accomplish a common aim. Coding often requires a team effort and stimulates real-life challenges that you’ll face in a work environment. It’s a great experience to have!

  1. Networking

Coders are nothing short of a community. In a classroom coding environment, you get to meet a lot of people from varied backgrounds – and consequently build good connections with them. Making right contacts and expanding your network can open the door to new possibilities. Who knows, some of these people might even be a potential future colleague!

Online Coding Courses:

  1. Flexibility

One of the most significant advantages of online coding courses is flexibility. You don’t need to commute for long hours to reach your class – your class starts right where you are! This makes it easier to learn to code as you can conveniently fit it into your schedule. You get to learn and interact with your mentor at your own pace and convenience. A survey conducted by The Learning House reported that almost 44% of students who took online courses showed remarkable improvements concerning their employment, for instance, obtaining a full-time job just within a year after graduation.

  1. Affordable courses

When you enroll in an online course, you only need to pay an online application fee, the tuition fee, and maybe spend a little more on reference book supplies. It is much more affordable than classroom courses where you have to incur transportation costs, high tuition rates, and a few other additional costs.

  1. Range of options

Online coding courses usually have a vast number of course topics under their umbrella. As you can study at your convenience, you get to choose from an array of exciting subjects – as time and location are not a limiting factor here.

  1. Self-motivation

Online learning courses demand a lot of motivation and dedication on your part. You need to chalk out deadlines for various courses and topics, and you need to fit them into your busy schedule. Gradually, you not only develop time management skills but also become much more motivated and responsible.

We, at Coding Ninjas aim to provide you the best of both worlds through our flagship online courses. From C++, Java, Machine Learning, to even interview preparation, we try to bridge the gap between online and offline learning through our unique pedagogy. Our ultimate aim is to replicate the classroom experience in our online classes. For the same reason, we have created batch walls where students can easily discuss doubts, share notes, and form a network. The teaching assistants (TAs) are available online for 6-8 hours daily to clear any doubts you have, and to help you better, we maintain a strict 10:1 ratio of students to TAs.. Everything from the instructors, course material, assignments, etc., is the same as our offline classes. You just get to learn at your own pace and time, and also earn a certificate along the way. Can’t get better!

Our online classes also provide in-house code sharing functionalities like code pair where students can seamlessly share their coding screen with teaching assistants without using a third-party application. The students can avail the benefits of text and video chat to collaborate in real-time with their TAs and classmates. If you are someone who learns better through interaction, discussions, and brainstorming sessions, then our online courses are for you! Do drop by our course page to know more. To make sure you aren’t in any sorts of double minds, we also provide a free-trial of our online classes, so that you can get the feel of what it is all about!

What are you waiting for? We have early bird discounts, too. Come on in, quick!

The What and Why of Competitive Programming

what-and-why-of-competitive-programming

 

There’s always one coder friend in any friend circle who’s an expert at writing efficient codes quickly. They can get their way across any programming problem because of their grassroots level understanding of things backed by extensive practice. If you, too, have one such friend, and you’re always in awe of them, let’s tell you their secret – competitive programming. More often than not, such sharp brains are a result of patience and perseverance developed through competitive programming. The ability to think on your toes even under pressure is a must have in any coder, and competitive programming helps you master that.

Like every other competitive parallel, competitive programming also aims at subjecting the participants to problem/s under strict time constraints Competitive programming helps you develop quick-thinking skills without feeling the pressure of time. This skill will take you a long way in any career of your choosing.

So, competitive programming tournaments are mind-sports that thoroughly test your logical reasoning skills primarily, and coding skills secondarily. These contests are held all over the year and are hosted by some of the respected organizations. Pioneer and the oldest among them is ACM – ICPC started in the 1970s.

Typically a competitive programming event is centered around a set of problems, presented to the participants (few hundred to a few thousands in number). Nature of the problem is often mathematical or logical. The primary objective of these online events is to have contestant write source code in a programming language (usually of their choosing) to test algorithm construction and implementation capabilities.

To excel at competitive programming, not only do you need to be fast, but also thorough with the basic concepts of programming and algorithms. Even the most challenging problem you’ll encounter can be broken down into simpler sub-problems that can be quickly solved if you’re aware of the underlying algorithms and data structures.

Like we said earlier, competitive programming is more of a stress-test than programming test. So, a few basic concepts other than the knowledge of coding and algorithms that’ll come handy are:

  • Common Sense
  • Complexity Analysis (Often underlooked by beginners, but, if you ignore it, you will understand its importance after a myriad number of TLEs)
  • Number Theory
  • Combinatorics & Probability
  • Geometry & Math in general
  • The art of debugging

Now, from a Computer Science perspective,

  • Binary Search
  • Sorting algorithms
  • String search algorithms
  • Dynamic Programming
  • Linked Lists
  • Trees
  • Disjoint sets
  • Depth First Search & Breadth First Search
  • Dijkstra’s algorithm

Such programming events can be broadly divided into two categories:

  • Short-term: duration being a few hours
  • Long-term: which may last from a few days to a few months. Some well-known examples are Google Code Jam, HackerRank, Facebook Hacker Cup, IOI, CodeChef, and many more.

Because competitive programming is all about applying right logics at the right time, people find it extremely cumbersome. But, there’s nothing that can’t be conquered with dedicated guidance. At Coding Ninjas, we realize the importance of such competitive programming contests for strengthening the logical capabilities of an individual. Not only that but winning at such cut-throat competitions also gives you the boost you need to grow stronger in your career.

Owing to their vastly varied problem sets, competitive programming events are a playground for coders as they give ample opportunity for honing the coding skills, while at the same time offering a chance of gauging their programming skills on a global scale. Apart from providing these opportunities, such events serve as an excellent platform for top scorers for attracting recruiters like Google, Facebook, IBM, and others. So this can be your launch pad in your journey of finding a career in hardcore programming with leading software/product-based companies.

Keeping all this in mind, we have come up with a dedicated and structured course that guides you through the intricacies involved with competitive programming. With the guidance from our expert instructors, students after training are ready to take on such challenges head-on and with confidence. We have both online and offline classes for you to try.

Just by the way – our online classes are just offline classes gone digital. All of the perks of the offline mode of learning combined with the comfort of studying at your time and pace. If you don’t believe us, do check it out for yourself. There are also trial classes available to make you doubly sure.

So put your thinking caps on and happy coding.

PS: There’s also an early bird discount. So, come on in, QUICK!

The best languages for Competitive Programming

best-languages-for-competitive-programming

 

If you’re here, chances are you’ve just set your foot in the world of competitive programming. A few google searches here and there must’ve confused the hell out of you on what language to use, and now you’re in search of a comprehensive guide on the same.

Don’t worry, we feel you!

But, before we proceed further, let’s clarify that language plays only a little role in competitive programming. So, we cannot claim that one language trumps the others. It’s all about your comfort and your understanding of various languages.  

Having said that, if you’re still a beginner in the world of competitive coding, you need to know the things associated with the most preferred programming languages. Other than that, a grassroots level knowledge of core programming concepts like various data structures, sorting and searching algorithms, Prim’s, Dijkstra’s, and more graph and trees-related algorithms, will come in extremely handy during your competitions.

Competitive programming is all about solving in the fastest time and with the minimum complexity. More often than not, even the most complicated problem you’ll encounter can be broken down into smaller chunks, and knowledge of these basics will help you solve those chunks of problems quickly and collate them to form the final solution. Having essential algorithms at your fingertips will save you a lot of time and allow you to focus on more significant problems.

Now, with so much said and done, it’s time to look at the three most preferred programming languages for competitive coding.

 

  • C++:

C++ is the most preferred language for competitive programming mainly because of its STL. Short for Standard Template Library, the STL is a collection of C++ templates to help programmers quickly tackle basic data structures and functions such as lists, stacks, arrays, etc. It is a library of container classes, algorithms, and iterators.

STL is what ensure speed while coding in C++. Providing the basic data structures and functions as templates, STL cuts down a lot of your coding time. The power of C++ is undebatable because not only is it built on top of C (the mother of all programming languages) but also because it provides support for OOPS along with other features helpful during coding contests. Other than that, the verbosity of C++ codes is comparatively lesser than Java which makes it easier to code in.

 

  • Java:

Java is another classic programming language that’s extensively used for competitive programming. The fans of Java swear by the BigInteger class which is used for performing mathematical computations on large integers quickly. It comes in extremely handy during The exception handling is again something that Java is universally applauded for. It’s challenging to find segmentation faults in C++, but it’s easy to notice the ArrayIndexOutOfBound exception.

Although Java lacks STL, it has containers which perform pretty much the same function. Although the containers in Java are not as extensive as STL in C++, there are a few situations where STL doesn’t have a direct solution. For example, in case of priority_queue in STL, it doesn’t support decrease-key operation which is required for implementations of essential algorithms like Prim’s and Dijkstra’s. Java also has extensive support for geometrical problems. Its jawa.awt.geom package includes stuff like line-line/segment-segment intersection and polygon segment intersection. It comes in extremely helpful during some of the complicated problems of competitive programming that require you to deal with geometrical shapes and figures.

 

  • Python:

Over the years, Python has seen tremendous growth in the number of the people who use it. This can mainly be attributed to the fact that it takes very little time to come to grips with the (barely existent) syntax of Python – which is not the case with the other two languages we mentioned. One more reason that programmers are switching to Python is the REPL support. REPL, or Read-Eval-Print-Loop, lets you test your ideas under time constraints. Something that can come in quite handy during programming contests. Just like Java, Python too has a BigInteger class helpful for working with large integers.

However, if we talk about compilation speed, Python stands third in the list. Many times you might get a TLE (time limit exceeded) error for an algorithm in Python, but the same might get cleared if you code it in C++.   
To conclude, let’s reiterate that there’s no absolute best programming language. Each has a set of pros and cons and to be expert at competitive programming; you’ll need to have an extremely logical approach irrespective of the language you choose. At Coding Ninjas, we offer you an extensive course in Competitive Programming. Through that course, we aim to inculcate in you a sense of logical reasoning and problem-solving. From discussing the most important concepts involved in competitive programming to providing practice material, we’ve got it all.

Preparing For Your Next Coding Interview

preparing-for-coding-interview-blog

 

The feeling of bagging a job is terrific, but the thought of being interviewed can make even the best of us sweat! With so many thoughts running through your mind, things can often go awry in an interview if you haven’t planned!

Usually, an interview is a highly stressed situation where you have got to perform well within the limited time and also make your thoughts crystal clear to the interviewer. Now, this calls for a whole new skill set altogether.

We know it can be challenging and so, let us guide you through this.

Generally, in coding and programming interviews, the emphasis lies on your logical reasoning skills along with the fundamental computer science concepts such as data structures, algorithms, design patterns. Basically, the skills that’ll come in handy during your job as a software engineer.

If you have interviews piled up in the near-future and despite being confident of your skills, you find yourself sweating merely at the thought of it, worry not – we’ve got you covered. Let’s help you not only tackle the interview but also ace it.

  1. Pick your sword – choose a language

In almost all software companies, the interview process is the same, that is, they allow you to code in your preferred choice of programming language. The most common languages preferred for interviews are Python, Java, JavaScript, Ruby, C#, and C++. We recommend that you go with the language you are most familiar with.

Choosing dynamic languages such as Python, Ruby or JavaScript can be beneficial as these are permissive languages with compact syntax, flexible typing, along with the list and hash literals. However, these languages can become a liability when writing complex programs.

It’s a better idea to educate yourself about the products and services of the company you’re interviewing for. The more you know about their workings, the more you’ll know about the technologies they use. That ways, you’ll be able to guide yourself through the basics of their technological stack, the knowledge of which will surely make you stand out of the crowd.

  1. Brush up on the frequently-asked interview questions and concepts

It is a known fact that a major part of the interview questions is based on algorithms and data structures. Knowing some of the basic interview concepts can be extremely helpful for a coding interview. So, having good knowledge about the following list of algorithms and data structures will come in handy for the interviews at most companies:

  • Searching and sorting algorithms
  • Concepts of arrays
  • Linked lists
  • Hash tables
  • Trees (notably, Binary Search Trees)
  • Breadth-first search, depth-first search
  • Dynamic programming
  • Complexity analysis
  1. Practice makes you a better coder!

The more you practice, the better you get! Make it a point to practice algorithms and data structures in your preferred choice of programming language. Nowadays, running and testing codes has become very easy with the availability of online judges that allow you to practice questions online. Try to learn and understand the complexities of time and space in the operations of the programming language you choose to use. With such useful information at hand, you can minimize the mistakes and who knows, you might even earn bonus points from your interviewer!

So, keep on practicing!

  1. Be logical, always.

Rome wasn’t built in a day. The journey from being a beginner to being a pro in coding takes time and it won’t work out till you’re willing to give it time. Computer programming languages are often difficult to grasp in the first go. After choosing your preferred programming language, select a particular area of this language. Now, try solving at least coding problems per day and keep on increasing the difficulty level as you progress. Set aside one day in the week to review the problems you’ve solved, see what errors you have made and try to learn how to avoid those mistakes again.

Coding is no less than an art. It requires a perfect sync of both heart and mind and is no less than writing poetry in that sense. There are two ways to go about preparing for an interview

  • Google “most asked questions”, cram them up, spit it out: You might or might not fail your interview, but you’ll definitely fail as an engineer if you choose this approach.
  • Be patient, take baby steps, enjoy your learnings, soak things slowly. The journey through the world of programming is beautiful and if you choose to rote learn instead of understand, you’ll be devoid of the beauty. Well, the rest is your choice.

Keep in mind at all times that when it comes to programming, cramming is never a solution. The interviewers always look for logical skills. Let’s, for instance, say that you were asked to derive the binary search algorithm. Now, if you’re from the lot who chose the first (easier) way out, you might or might not remember it – in any case, it won’t make a difference. The interviewer isn’t interested in you throwing the answer in his face. They’d rather have you come to the answer in front of their eyes. That ways, they’ll be able to gauge your problem solving skills too. And, if you impress them in this front, you’re pretty much in.

Therefore, at every step in your journey – right from you taking your first steps to you working as an expert software engineer, always choose the most logical route.

We at Coding Ninjas are here to make sure you live your dream of coding a product. Therefore, we like to help you all along the way. Whether it’s getting a hang of the programming languages to making you outshine your competition during interviews, we’ve got it all. Oh, and our flagship online programs are like nowhere else. You get the benefits of offline class combined with the comfort of studying at your time and pace. Don’t forget to drop by!

 

Here’s Why Everyone Should Learn Programming

everyone-should-learn-programming-blog

 

Before you even blurt it out loud that programming and coding are boring, let us stop you right there! Each of us enjoys the perks of technology. In fact, technology dominates our lives today. Technological innovations are what have made our lives so much more convenient and comfortable. Don’t you agree?

If we’re all benefiting from apps and other software tools, then wouldn’t it be great to understand the intricacies behind these? Today, we’re going to break the myth that programming is just for coders and software engineers!

A famous saying by the visionary Steve Jobs captures the essence of it perfectly:

“Everybody in this country should learn how to program a computer… because it teaches you how to think.”

Yes, programming teaches you how to think! It is an incredibly versatile tool that allows you to accomplish things quickly and seamlessly, that would otherwise be cumbersome. Here are the reasons why everyone should learn programming.

It encourages structured and creative thinking.

Programming essentially teaches us two important things:

  • To prepare a proper sequence of instructions to solve a problem
  • To break bigger problems into smaller bits for easy management.

This approach can be used for everyday tasks too. So, you won’t be overwhelmed at once. Instead, you’ll learn how to tackle your problems one thing at a time.

Logical thinking, organization, and problems solving make up the essence of programming. When you code, you start utilizing the “left” part of your brain. By applying a structured pattern to solving your problems, you’ll find yourself coming up with much more creative solutions than before.

It teaches you to be persistent.

As you become habituated to coding patterns, you begin to view your problems similarly – every problem is solvable. You begin to break down your problems into parts and start thinking of ways to solve each facet of a particular issue. You become a solution-driven being.

No matter how big a problem comes your way, you will always be ready to face it head-on. Coding requires a lot of patience and perseverance and eventually, it makes you persistent individual who will find a logical solution to every problem.

Helps you understand the workings of software applications

Programming helps you understand the basic concepts of the applications that are always around us. It helps us see the logic behind these apps which you can put to good use to create something new and advanced.

The better command you have over coding, the more comfortable your life will get. For instance, instead of meticulously typing out email and text responses each time, you can write scripts and codes to respond to generic emails and texts automatically.

Increases your worth in the job market

Let’s face it – software applications are increasingly dominating almost everything around us. Those who don’t know how to code stand at a higher chance of being left behind in the race that’s fast progressing. Today, there is a high demand for coders, programmers, and software developers. The entire IT sector depends on them. Even if you are not directly involved with coding or programming in your career, learning coding will still increase your experience arena and open the door to new prospects. Knowing how to code will give you an edge in the competitive job market.

Coding is fun!

Once you get the hang of it, you’ll see that coding is a fun hobby! You’ll use your active imagination to solve problems efficiently and believe us when we say; it is addictive! Programming encourages computational thinking and transforms the way we look at obstacles.

So, whether or not you choose to make a career out of it is entirely up to you. But learning how to code is definitely worth it. Jeff Wilke has aptly said:

“Coders change the world. They build new, amazing things faster than ever before. Anyone with imagination can learn to write code.”

Coding is a skill that can be easily acquired by one and all alike. All it requires is a little sincerity and dedicated guidance. We, at Coding Ninjas, are dedicated to transforming you from a beginner to a pro. Our courses are designed keeping in mind the absolute beginners. If you, too, want to experience the thrill of coding something and watching it in action, don’t forget to get yourself enrolled in our courses. We also provide trial classes to make sure you’ve had your share of satisfaction before you jump on-board.

Best Coding Practices for Hassle-free Programming

best-coding-practices

 

Just like with any other activity, the world of coding is also governed by informal rules. Most of these rules are formulated over decades. Programming languages often remain in usage for longer than their founders expect.

Programmers find innovative ways to recreate these languages for different purposes. Thus, some static do’s and don’ts are always of use in the fluid zone called coding. Normally, a great code has three common features: maintainability, dependability, and usability. It should also be adaptable enough to be efficient even in changing environments. However, before coding even begins, a few prerequisites need to be fulfilled in order to provide a solid foundation on which readable code can be written.

PREREQUISITES

This is easily the most important step of all. In absence of these, a code may be inefficient even if it is completed. The prerequisites that need to be in place for an efficient code covers matters like design and architecture. An important question is how development is structured. What is the specific purpose of the software? The problem that the code is meant to solve must be clear to the developer. What is the design of the individual components? Such basic requirements have to be fulfilled when a good code is being written.

Hoare makes a good point when it comes to assessing software design and architecture. Either a code is so simple that there are obviously no errors, or a code is so complex that there are no obvious errors. Software design is also of importance to clients, who can decide if their needs are being adequately addressed. If there are some things that architecture cannot take care of, then those are handled in the software design phase. A detailed design is a good guide for coding.

The next step is to measure existing programming languages against the requirements to decide on an appropriate one. If needed, a mixed routine can be adopted.

Once these are met, it becomes easier to follow some established good coding practices.

COMMENTING

Commenting is one such practice that is often ignored by programmers, especially for codes that are written by multiple programmers. However, comments reduce the cost of knowledge transfer. Name of the module, purpose of the module, description of the module, original author, modifications and authors who modified code with a description on why it was modified were components of an early commenting practice.

GOOD NAMING CONVENTIONS

Using good naming conventions is the next step to good coding. Often developers use Y1 or X1 as variables, and then do not replace them with meaningful names. To prevent this confusion and utter waste of time, descriptive names should be used.

SIMPLICITY AND COMPACTNESS

The key to a good code is also simplicity. To achieve a certain result, developers may use complex logic but this should be minimised while writing a good code. The next developer who uses the code may use it for a different purpose and may not even completely understand or utilise the complex logic. Simple code does not always depend on the length of the code. The code must also be conceptually simple. An added advantage is if the code is also suitably compact. More code can be viewed on a page and programmer keystrokes can be reduced.

PORTABILITY

Another feature of a good code is portability. If the code contains values referring to ‘absolute parameters’ such as file names, URLs or IP addresses, it will not run on a host that is of a different design. A good programmer will parametrize these variables and configure them so the application can also be run and maintained in a different environment.

TESTING

Testing is also a necessary part in the process of coding. Test cases must be planned while the code is being written, and they are developed while an application is coded.

DEBUGGING THE CODE

While writing a code, it is necessary to check for errors throughout. Though it is fine for smaller programs to be debugged after they have been written, this becomes a bottleneck for longer programmes. The best practice, therefore, is to debug each module as soon as it has been created.

DEPLOYMENT

Once the code has been written, it has to be deployed. The installation files should be kept to a minimum and updated regularly. Unused code or anything that is not necessary should not be installed.

The best practices for coding are, most of all, designed to reduce risk whenever there are chances of it. For a beginner, a few of these will not be completely applicable. But as a hard-boiled programmer writing numerous codes, all these guidelines will come in handy. Since codes can run up to millions of lines at times, outdated advice like ‘keep it simple’ or ‘less is more’ is priceless and should always be remembered.