#1 Programming Is Different Than Coding
Programming takes a lot of planning, preparation and thinking in order to be executed properly. This is why some of the most successful programmers are also some of the greatest thinkers. Seeing “the big picture” is what programming is about. Programmers truly are entrepreneurs in many ways. Once programmers have figured out what “the big picture” of their program is all about – then they must think some more. They have to continue thinking about how their program is going to work. What will be the “flow” of the program? They will have to think about the UI of a piece of software, and all of the little individual pieces that go into building something. This all has to be planned out beforehand, analyzed, and then re-planned.
Coders typically know a particular language extremely well, and excel at pumping out high-quality code in that specific computer language. The big difference here is that coders usually don’t take part in as much of the “planning and thinking” stages which programmers take part in. Programmers will sometimes oversee coders, to ensure that they’re on the right track. So while programmers are more of the “artists” who put together the idea of a program, it’s the coders who typically write a lot of the code. There’s a big difference to be recognized between the two. However, both skillsets are regarded as highly important in the world of programming.
#2 Learning a new computer language by practicing it is faster, but not always better.
We can all become extremely efficient at certain tasks by just diving into them right away. Experts always say that it’s best to go out there and gain real world experience immediately. We’re encouraged to go out and fail immediately at whatever we’re doing, so that we can get up and fail again.
This tends to work in many fields such as sports, work and almost anything else that’s worth pursuing. However, one of the few exceptions to this rule is learning a computer language.
Learning a computer language as fast as possible means that you’ll more than likely experience some shortcomings within your code. You won’t be able to setup semantics as well, or generate a method of creating similar functionality that will save money, time and energy. Learning a computer language over time is what will allow people to develop their own frameworks. You could also learn to take advantage of distinct design patterns and object-oriented principles throughout a length of time. Learning the essentials of a computer language over time is about being a professional.
Sometimes, you won’t have the luxury of completing an entire project by yourself (and receiving all of the credit). Others will usually have to work on a project with you – so code needs to be kept neat and orderly for future improvements.
#3 You get extra credit for avoiding work (automate everything).
The entire notion of generating software is to create wonderful products for the end-users in mind.
Whoever is using a particular piece of software (businesses or consumers) should be able to do so efficiently and effortlessly, while experiencing as few problems as possible. Businesses and consumers should be able to utilize a piece of software in order to reach their desired goals as quickly as possible, while receiving extremely high-quality results in return.
This is what the entire software industry is about. Software is continually being updated and reinvented towards becoming even more simple, effective and competitive. When you can use a piece of software to perform a task that you need done in just a few simple clicks – you’re probably going to prefer using that “simple” piece of software over a more unnecessarily complicated program (assuming each piece of software provides similar results).
What this means is that programmers continually have to figure out new ways of “avoiding work” to remain highly competitive in their industry. When software can be improved into becoming even simpler than before, to where its code and functionalities become even more automated – this makes things easiest on everyone involved in the process. Customers, programmers and coders all appreciate smooth and effortless automation.
#4 Software is released with known defects.
The fact that software is continually released with known defects may bother some people who aren’t too familiar with the programming industry.
What this idea comes down to is that software is essentially a business. It’s a massive, highly successful and profitable business. And sometimes, particular pieces of software have a “release date” or an “update date” that must be held in high regard. When one of these deadlines are fast approaching, it means that the software is going to need to be released at these dates regardless of any non-critical bugs or defects. This is what will many times keep the massive customer bases of software brands happy. When customers know that their favorite software companies are consistent about releasing their software’s updates on schedule, they tend to remain happy
Many times these known defects that come along with software aren’t harmful. The programmers know that there are defects in their software, but the software is released anyway. Programmers absolutely keep a log of all known defects, so that they can be fixed (hopefully) by the next scheduled software update.
Sometimes programmers even decide to work on other aspects of a piece of software, rather than focus on a particular bug or known defect. They tend to work on a cost vs. benefit timeline, like many businessmen do.
#5 Writing good software is 70% about thinking, 10% programming, and 20% rethinking.
Writing great software is like preparing for any other major life event. When you’re preparing to release a piece of software – it can be compared to creating a piece of artwork that is going to be put through a long process of detailed work, sometimes even for years.
When you want something to be the best version that it can be, it’s ultimately going to need a heavy amount of preparation. And what is better for preparation than doing a lot of thinking? This is why 70% of writing good software is about thinking. Thinking is the aspect of writing good software that allows programmers to brainstorm, plan and imagine “the big picture” of their software. This results in a massive part of the process of writing good software.
Next, the actual process of programming what the programmer has been thinking about must take place. Programming the software is ironically the shortest aspect of writing good software. 10% of the process is about programming. This is what coders specialize in.
Then, 20% of the process is finalized through rethinking, which is about reorganizing your software into its final stages. This is the time to make any last minute adjustments that may be absolutely mandatory for the success of the software.
#6 Hacking isn’t cracking. Hacking is coding, in its truest sense. Cracking is “breaking things” under malicious intent.
A mainstream view of programming is that it’s the hackers who generally carry a negative connotation. Hackers are typically seen as the bad guys in movies, who are constantly attempting to break into computer systems to access unauthorized data.
But in reality, hacking isn’t the same thing as cracking. Hacking is coding. Hacking has always been about performing a task efficiently, in the fastest amount of time possible, regardless of how it gets done.
When you can “hack” a piece of software into opening up automatically upon the booting of your PC – this is extremely efficient, if you happen to already open that piece of software everyday anyway. Hacking can actually be a great thing when you want to perform certain tasks or create certain programs as efficiently as possible. Hackers are hired for great software companies every day, because they’re usually highly efficient at their job.
Hacking is often misconstrued as cracking, but it’s actually the act of “cracking” that carries the malicious reputation in the world of real programming. Crackers break things through attempting to bypass security measures. Crackers may attempt to bypass websites’ administrative credentials by “entering” a website or server through illegitimate means. This is often what results in credit card fraud, the releasing of private information, or even identity theft. To be fair – crackers can use their skills for positive purposes, but this typically isn’t the case.
#7 Each programmer knows little in the overall computing landscape. They’re usually just good at a couple of things out of hundreds – but are great at using Google.
Searching through Stack Overflow and Google is a favorite pastime of countless programmers and coders alike.
The reality remains that each programmer knows that they know little in the overall, worldwide landscape of computing. There are too many languages and methods of coding for any single programmer to become efficient at all of them.
It’s the same idea as learning any other language in life. While there are polyglots who can speak five languages, they’ve had to spend immeasurable amounts of hours traveling through different countries to learn those five languages. They’ve spent thousands of hours speaking to different people, attending classes and writing in different scripts. Any polyglot will be quick to tell you that it wasn’t easy to get to the position which they’re at.
Programming is similar to this in many ways. There is Swift, C++, Objective-C, Python, Ruby on Rails and hundreds of additional programming languages that exist. It’s impossible to be great at all of these languages, so programmers tend to specialize in just a few of these. Programmers like to find their “niche” language, and become the best that they can be at that. Searching through Google to find the programming answers that they’re looking for tends to help with becoming great at a couple of those languages.
#8 No encryption system is perfect. They’re just too time and resource consuming to break.
It may worry you when realizing that there isn’t a perfect encryption system that exists. No encryption system is totally perfect. But we have come somewhat close to achieving flawless encryption, because it truly is just too time and resource consuming to bypass quality encryption.
There are hundreds of processes, and millions of pieces of code which encrypt people’s secrets throughout the world. Consumers, businesses, banks, and social networking websites all rely on encryption. Is there a chance that any of this could go wrong?
Possibly. But it’s not likely. The mathematics which create the large-scale backbone of encryption appears to be trustworthy. But some of these algorithms rely on the fact that large numbers can’t be factored correctly in a consistent manner. RSA, for example, is the algorithm that depends upon this notion. If someone could come up with a quick method of factoring large numbers, then it could be game over for RSA.
Cloud computing may also have the future potential to beat encryption due to its massive potential. Video cards also play a factor in the uncertainty surrounding encryption, since they can also be used to help guess passwords fast.
Overall, there still isn’t a surefire way that beats encryption. It is a long and complicated process that is best kept that way for the safety of all.
#9 Size doesn’t matter. A few lines of code can make or save millions.
When you’re compiling the code that makes up a great piece of software – the size of the code shouldn’t have much to do with your overall goal.
Size doesn’t matter (at least when it comes to coding)!
It’s honestly about the quality of the code that you write, which can make or break a piece of software. This of course must be performed in combination with an extremely well thought-out software structure. But the idea remains that the quality of a piece of software doesn’t have much to do with its size of code. In fact, simpler and more structured code is often best for optimization in the future. But we do realize that sometimes software projects can become huge – and so will the amount of code that’s written along with them.
However, a line or two of code is what can potentially make all of the difference in certain software. That one line can be the game-changing piece of code that makes the program “click.” If you happen to mistype a piece of code, it can sometimes be difficult to recover.
#10 Getting computers to do anything at all took 100 years of sustained research and development, on top of humanity’s combined understanding of mathematics.
The computer is an amazing piece of machinery which has taken upwards of an entire century to develop, in order for it to become what it currently is today. The modern day computer is certainly a wonderful oddity that enhances quality of life for all.
Binary code operates off of a series of 1’s, 0’s and many logarithmic algorithms. It’s crazy to think about how fast information can be processed in the 21st century. People and businesses across the world are able to communicate instantly. Families are able to interact more closely together than ever before, even when separated by distance. We can instantly stream music, movies and any other form of media.
There’s rarely an acceptable reason to ever complain about a computer not being able to perform certain tasks – because almost all modern-day computers are wonderful pieces of machinery.
Humans have become connected like never before. Mathematics in combination with years of R&D has led us to where we are. And where we are is a beautiful place. We’re able to live as efficiently as humanly possible. Skype, texting and music are just a few of life’s essentials, which have been delivered to us partly in thanks to the development of computers. Without computers, who knows where we would be?