Tutorial to be a good programmer

What sets piecemeal the really great programmers?

As we all know, great programmers make amazing features, websites, apps, and the suchlike. But what do they've in common?

In my exploration, it’s not just about knowing a language really well or having a particular educational background. It’s that the really talented programmers have learned the fundamentals. That foundation is what enables them to make great effects and come up with advance ideas.

Think of a aggregate. It has a large base, but gradationally gets lower and thinner toward the top. Learning the fundamentals of programming forms that base. Everything takes off from there.

So what are those fundamentals? Grounded on my experience and the programmers whose backgrounds I ’ve delved, I see programming fundamentals as a two- part approach.

Problem Solver Extraordinaire

First, you have to be an effective problem solver. This is an important place to start since programming is problem- working.

Although there are numerous ways to break a problem, there are a many corridor of the process that stand out to me. Programmers who are also great problem solvers distill a problem to its substance, in order to identify their overall end and begin a problem with purpose. Also, they break each problem into small, manageable corridor — attacking each part in turn, and occasionally in visual terms by drawing a picture to make it “ real world.”

The process is harder than it sounds. When I started to program, I hit a wall like numerous others, I noway learned how to problem break in academy; it’s a skill that’s not readily tutored. I was given a problem set in calculation class and just dove in, which is what I did when I started to program. Commonly, I was spinning my bus unnecessarily and hitting roadblocks on the simplest of problems.

Effects began to change when I began learning about the problem working process, and how to problem break effectively. I now begin a problem with intent. I've George Polya’s book, How to Break It, to thank for that bit of advice.

I ’ve acclimated some of Polya’s ideas to programming, like understanding the problem. “ The problem must be understood,” Polya writes. This includes being suitable to “ point out the top corridor of the problem, the unknown, the data and the condition.” For each problem, I pull out a distance of paper and write answers to these questions what am I working for or trying to find? ( unknown); what am I given? (data); and what constraints or details do I need to be apprehensive of? ( condition).

Understanding the problem may feel egregious, but the egregious is fluently overlooked. On further than one occasion, I ’ve poured hours into a problem only to realize much latterly that I missed a small, but critical detail in the problem statement. Writing out problem details slows me down mentally, and helps me suppose through exactly what I need to do, which is half of the battle.

From there, I make a plan, which is another of Polya’s suggestions. It makes sense. I write an figure before I write an composition. An artist makes a sketch of the oil before working on the oil itself. A builder uses delineations and arrangements to make a house. It’s no different with programming. Rather of rushing into doing, I need to start by allowing about what I ’m setting out to do and make a plan of attack.

There are numerous ways to go about this. Occasionally I outline the way I need to take in numerical order first do this, second do that. Other times I make the problem visual. When I was learning about for circles, I pulled out a sprinkle of almonds and physically dinned through the pile. It’s a silly illustration, but it helped me suppose through the problem.

I ’ll also draw filmland or plates. For a recursive problem, I ’ll draw a illustration of what’s passing on each recursive call until I hit the base case. Nearly always, still, I find a way to simplify the problem to make it more manageable and to help me spot a pattern. Above all, the end for me is to enter a problem with purpose, and maintain that sense of purpose throughout.

Despite the stylish made plans, problems are still hard and I still get wedged. Getting a great problem solver takes time; it’s a skill I ’m still working on and it’s surely worth the trouble. It’s a difference you can see.

When I read law written by a great problem solver, it’s clean and easy to understand. Variables are well named. Functions are short and crisp. Each line of law has a specific purpose; the fluff is removed. The clarity of the law glasses the programmer’s study- process I can read the program from top to bottom and know exactly what’s going on. That’s great problem working, and that’s what I ’m seeking for.

What about your Computer?

Learning computer wisdom is the alternate programming abecedarian. I lately started learning computer wisdom, and love it because I ’m moving beyond face position. I ’m going “ behind the scenes” to learn what happens when I use a erected-in function, for illustration. I ’m also learning about memory and run time, among numerous other motifs. In short, I ’m learning why a computer does the effects it does.

Knowing the “ why” enhances my contextual knowledge and makes me a more informed programmer. As a result, I ’m more thoughtful with the law I write. Now that I know a bit about run time, for case, I ’ll conclude to use a double hunt rather of repeating through each element in a list.

It’s also perfecting my understanding of how core programming generalities work. For illustration, I was working on a recursive problem and I was n’t getting the result I anticipated. After close examination, I learned why it had to do with the prosecution of the call mound, an idea that would ’ve escaped me just a many months agone.

Or take classes. I plodded immensely with classes for the longest time, and was scarified to use one. I knew how to write a class, but was n’t confident when and why I ’d use one. That changed when I learned what actually happens in my computer when I produce cases and call styles. It eventually clicked, formerly I had some environment. For both recursion and classes, computer wisdom bridged gaps in my knowledge.

All too frequently, the fundamentals get pushed away. Progress can be slow, and people tend to pick further “ fun” stuff to work on when given the option. That’s a shame. Programmers who master the fundamentals feel to decode with confidence they know the “ how” and “ why” of their programming choices, which improves their work and builds their credibility with others.

Plus, a solid grasp of the fundamentals makes learning new languages and technologies easier to do. For illustration, taking the time to really understand core generalities like replication, recursion, and abstraction with one language will help when learning another. Simply put, there’s a lot to gain and little to lose by learning the fundamentals.

Post a Comment

Previous Post Next Post