Click here to Skip to main content
15,897,187 members
Articles / All Topics

Things Every Programmer Should Know

Rate me:
Please Sign up or sign in to vote.
4.67/5 (3 votes)
14 Jan 2015CPOL4 min read 14.9K   5   10
Things that every programmer should know

Learning process of developers never ends. It is in our DNA to continuously feel the need to learn and self develop. As much as we learn, we have even more to learn. The technology world is moving so fast that to keep the pace and be up to date with cutting edge knowledge, we need to embrace learning as part of our daily activities. Whenever we say we learned to use a framework, we see that 7 other frameworks have become famous and we need to take a look at them. One of the most frequent questions of my students is the question “what should I learn to be a good programmer?”.

Luckily, nowadays, learning resources are so vast, we have difficulties to chose which one to pay attention first. We have plenty of books available (free and paid), free magazines, blogs, video tutorials, MOOC courses, etc. However, cutting the line what one should learn to be a good developer is not an easy task. As doctors have chosen to specialize only on one part of the body, developers too need to decide on a specialization, be it system developer, web developer, business application developer, etc. The specialization is something which comes to question when you reach a steady state of development knowledge and experience, but what do you need to learn to get there. What could be a good developer knowledge path?

Over time, I have come to the conclusion that developers need to know the whole stack of code execution in order to succeed.

What Do I Mean By This?

The computer literacy starts with using the computer and perhaps some basic configuration and application usage knowledge. If you advance in configuration skills, you learn perhaps also about servers, monitoring, user management, etc., you start learning system administration. Then you need to network the computers and servers to work together, and start learning networking, which builds on top of administration skills. Then, you feel the need of automation, and that’s where you start with learning programming.

Why Do I Think This Model Works?

In early times of software development, we used to have only desktop applications which performed certain functions. Today, the whole view is different. We rarely develop single computer applications. We either create a web application or have a network aware app. Those applications often may face problems of a different nature, especially if they are running inside a corporate infrastructure where proxies, firewalls, and other infrastructure components interfere with the traffic and environment. Most of the time, problems caused by those components will not demonstrate themselves very clearly and often it will look like the application is failing. Finding the root cause of the problem requires good troubleshooting skills and that requires understanding of system administration and networking which are the layers above which your code runs. If you fail to have the understanding of underlying platform, you will be left alone to find what is the problem with your code, as most of the time, system administrators/network administrators will not be able to identify why your application is failing (and perhaps it is not their fault as they do not know the ins and outs of your application), therefore the judgement will be that the code is faulty. :)

What Should You Focus To Learn?

Do you need to be a system administrator and network administrator before you start to learn programming? No, I am not saying that. My suggestion is you get at least the basic understanding of operating systems (perhaps not all of them but those which are in your environment), learn how user management is working, the privileges, and the connection to central user management like Active Directory. Learn how to read system logs, that is the place you will most often find valuable information about what is happening with your code and find the clues about what is going wrong, how to list running processes and see who is consuming the memory and who is consuming the processor. Learn a little bit also about system security, to setup and configure your production environment and its subtleties and the basics of how the computer networks operate. In the long run, you shall benefit from this knowledge for sure.

I do believe that a “complete developer” is not the one who only knows to write code and nothing else. You should know the whole picture of the environment you develop and the environment your code runs, and this requires you to get a little bit out of your zone and see what you have around. I would like to explicitly clarify one point here. I do not think that developers are above or more valuable than System Administrators or Network Administrators. Everybody in this ecosystem has his/her importance and value. I just want to point out that if you want to know the full stack of execution of your code, you have to have a clue what happens beneath and these are the things every programmer should know. Troubleshooting problems of your applications will most likely come to you as the last line of support, and finding faults in system or network requires a basic understanding of how those function.

The post Things every programmer should know appeared first on arian-celina.com.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect
Albania Albania
I am a Software Architect, a web developer, and a Computer Science lecturer. I enjoy solving business problems by providing software solutions to them. My favorite technologies and fields of interest include ASP.NET, C# programming language, Java programming language, Javascript, jQuery, AngularJS, Web Services, REST, and mobile application development

Comments and Discussions

 
GeneralMy vote of 3 Pin
Bsiil16-Jan-15 23:50
Bsiil16-Jan-15 23:50 
GeneralRe: My vote of 3 Pin
Arian Celina17-Jan-15 0:51
Arian Celina17-Jan-15 0:51 
QuestionBecause this code works? Pin
Jose A M Pacheco16-Jan-15 5:15
professionalJose A M Pacheco16-Jan-15 5:15 
AnswerRe: Because this code works? Pin
Arian Celina16-Jan-15 5:21
Arian Celina16-Jan-15 5:21 
GeneralRe: Because this code works? Pin
Jose A M Pacheco16-Jan-15 5:28
professionalJose A M Pacheco16-Jan-15 5:28 
GeneralRe: Because this code works? Pin
Arian Celina16-Jan-15 7:30
Arian Celina16-Jan-15 7:30 
GeneralRe: Because this code works? Pin
Jose A M Pacheco16-Jan-15 7:41
professionalJose A M Pacheco16-Jan-15 7:41 
GeneralRe: Because this code works? Pin
Arian Celina16-Jan-15 7:44
Arian Celina16-Jan-15 7:44 
GeneralRe: Because this code works? Pin
Jose A M Pacheco16-Jan-15 7:54
professionalJose A M Pacheco16-Jan-15 7:54 
Mr Arian, thank you for helping me understand a little more about this subject.
GeneralRe: Because this code works? Pin
Arian Celina16-Jan-15 7:55
Arian Celina16-Jan-15 7:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.