Programming Basics: It’s Not Just About the Coding

programmingbasicsIf you have committed to learning programming and you plan to become a great developer, you may be getting ready to dive right in to learning specific languages and platforms. That’s great! But while you are doing it, don’t overlook the importance of a solid foundation in programming basics.

Aside from the code itself, there are overarching processes, ideas, and concepts that developers use in everyday practice. Getting a clear grasp on them will help you take on projects with a better idea of the big picture and get the job done more quickly and effectively. Rather than learning these little by little, or even missing some of them in language-specific courses, you can get a grasp on them all at once with a fundamentals course in programming for new developers.  Then you will have the concepts to help guide you as you take on learning and mastering languages.

And to give you a head start, here is an overview covering a few terms and concepts:

The Development Process: Waterfall vs Agile

Programming teams take a structured approach to development of software. There are two major schools of thought: waterfall and agile. You can learn about both in the basic programming course mentioned above, and if you take a specific interest you can learn all about agile development in a dedicated online course

The waterfall approach is comparatively traditional and linear, moving through sequential phases: analysis, design, implementation, then evaluation and maintenance. Critics of the waterfall approach contend that it is not adaptable enough. If a fundamental malfunction comes up, the argument runs, the path toward resolution becomes impractical, requiring the team to start over.

The alternative, agile development, really refers to a collection of approaches. These approaches are designed to be adaptable and make it simpler for teams to make changes as needs change and issues arise. The overall structure is iterative, rather than linear, so you might think of it as running in cycles rather than steps.

Critics of agile development have various objections, including that it is inefficient in large organizations, a management fad, and untested. While debate can get heated over the two methods, each might be considered as more suitable in certain contexts.

Planning: Pseudocode and flowcharting

In the planning process, experienced programmers use a simplified language that looks somewhere between natural language and generic code. However, If you tried to run it, nothing would happen. This is called pseudocode.

On the surface, this intermittent step might seem inefficient.  Why use “mock code” rather than simply writing it out as you go?  But if you really want to build a great program, using pseudocode allows you to pull your thoughts together and see the big picture. You are able to undertake thorough planning work without shifting focus toward the details of a language.

Writing out pseudocode typically follows after a higher level process called flowcharting. Using a chart drawing tool like Visio or simply a set of objects available in Powerpoint, programmers create a visual representation of a program’s planned operations. There are standards for which objects are used for which part of an operation. For instance, if a programmer wants to indicate a point in the program involving a decision, they would use a diamond shape.

The standards in both pseudocode and flowcharting help programmers easily communicate ideas, so you will want to get familiar with them as you start out. You can get a start with a course dedicated to flowcharing and pseudocode.

Picking the language: Object-oriented and procedural languages

While you may specialize in a particular language, there are differences in major languages that make them more or less appropriate for specific programs and purposes. Of course their compatibility and frameworks are a big part of the decision, but there are more characteristics that will shape your choice of a language as well.

One of the major characteristics defining a language is the difference between object-oriented and procedural languages. Describing these differences thoroughly gets a bit complex because the definitions rely on some specialized terms. It is a good idea to really understand the differences, which you can learn in a course on how the programming business operates.

In short, an object oriented language works by grouping data and functions together into an “object.” To process the data, a program needs to call on the object’s functions. Procedural does not contain this grouping. It simply takes an input, runs arguments, and produces an output.

These differences make a major impact in regard to which language you should choose for a specific program.

Doing the work: Editors and IDEs

You have many options when it comes to the integrated development environment (IDE) you will use to code programs. In most cases, you will learn within one environment, based on your instructor’s preferences. And this is often identified within a course’s description.  For a given language, you might look for the environment that will work best for you and what you are trying to accomplish.

If you are typing code straight into a text editor, you also have options. There are usually standard options in whichever operating system you use, but if you find them unsatisfying, keep in mind that you can shop around for others. Often, add-on editors will include a range of advanced features that can be helpful for specific jobs.

Summary

By no means is the list provided here exhaustive. Before you write a single line of code, there is a lot of information you can take in about programming basics and how to create great programs. Of course, you do not have to know it all before you jump in.  But it can help to get an understanding of the big picture before or during your immersion into the code.