Knowledge of interior windows?

I was wondering if any of you know the internal work with windows (kernel, interrupts, etc.), and if you find that as a result you became a better developer?

Do you find that the more knowledge, the better - a good motto as a developer?

I believe that I am learning a lot of things, thinking with great understanding, I will be the best developer. Of course, practice and experience also come into play.

+7
windows
source share
7 answers

This is not easy - absolutely (provided that you are a developer, first of all, on the Windows platform, of course). Working knowledge of how the car engine works will greatly facilitate the implementation of common programming tasks (debugging, performance, etc.).

Windows internal documents are a standard reference.

+7
source share

I think it’s important to understand how everything works under it. CLR / .NET to C ++, native to ASM, ASM for processor architecture, creating registers and operations with logical gates, logical gates from MOSFET, transistors from quantum physics and the latter from the corresponding mathematical apparatus (group theory, etc.) .

Understanding low level makes you not only think differently, but also feel differently - as if you are in control of things, standing on the shoulders of giants.

+5
source share

I do not think that this requires special or secret knowledge of internal components, such as those that can be extended to members of the windows team or those who have initial access, but I absolutely affirm that understanding internal affairs helps you become a better developer .

Take threading, for example, if you are going to create an application that uses threads even in a moderate way - understanding how windows work, how threads work, how memory processes work - all these are keys to being able to do a good job with this code.

I agree with the point with your decree, but I would not agree that experience / practice / knowledge are mutually exclusive. This net of experience is that you have the knowledge gained from this experience. There is also a component of wisdom to experience and practice, but these are usually intangible situational elements that you apply in the future to avoid mistakes. Primary knowledge is the limit of experience.

Think of it this way, how many people you know with 30 years of experience in IT, think about them and take the top two. Now go to this memory bank and think about the people you know in the industry who are super smart, who know so much about many things and choose the two best ones. You now have your last 4 - if you had to choose it to start a project, who would it be with? Invariably, we choose a super smart guy.

+3
source share

More knowledge is always better, and knowledge at many levels is much more valuable than just knowing any level of abstraction that you are working on.

A good rule of thumb is that you should be well aware of the layer below the layer in which you are working. So, for example, if you write a lot of .NET code, you should know how the CLR works. If you write a lot of web applications, you must understand HTTP. If you write code that uses HTTP directly, you must understand TCP / IP. If you are using the TCP / IP stack, you need to understand how Ethernet works.

Knowing the internal components of Windows is really useful if you write native Win32 code, or if OS performance issues are critical to what you do. At higher levels of abstraction, it may be less useful, but it never hurts.

+3
source share

Yes, understanding Windows internals has helped me become a better programmer. He also taught many bad practices, bad ideas, and bad design concepts.

I highly recommend exploring alternatives to OS X or Linux. It will take less time, make more sense and be much more productive.

Read the code. Read a lot of code. Read a lot of good code. jQuery, Django, AIR source, Linux kernel, compilers.

Try learning programming languages ​​that introduce you to new approaches such as Lisp, Ruby, Python, or Javascript. OOP is good, but .net and Java seem to take a brainwashing approach and take it to some religious level, rather than just being a good tool in your tool.

If you do not understand the code you are reading, this probably means that you are on the right track and are learning new methods.

I would suggest getting mac just because you want to make your user interfaces simpler and easier. It is very important to have a good environment if you want to become a great programmer. Surpass yourself as engineers better than yourself (if you can), work with frameworks and languages ​​that use the engineer approach to the experimenter approach and ... use an operating system that contains code better than yours.

I would also recommend Coders at Work .

+2
source share

It depends. Many programmers who understand the internals of the system begin to write optimized code to use this knowledge. This has three very serious side effects:

1.) It is more difficult for others without this knowledge to distribute or maintain code.

2.) Internal systems are subject to change without notice, while interfaces are usually versioned and changes are discussed publicly.

3.) Interfaces, as a rule, are consistent between versions of the platform and equipment, internals do not have such consistency.

In short, There is a lot of broken, unsupported code there that occurs because it relies on an internal process that the seller changed without notice.

+1
source share

The father of the C language said that “you don’t need to learn all the features of the language for writing great codes. You better understand the problem, write code better.” Knowledge is always better.

0
source share

All Articles