17

I been contacted to do some work remote controlling LEDs displays over TCP/IP, but my experience and preparation is mostly about high-level programming language. I said that to the person who contact me about the work and he told me that:

"if you call yourself a programmer you should know all these things"

Should a programmer really know the details of low-level programming? Or can I treat it as a black box concept, as theoretical knowledge but not necessarily doing it or implementing low level language solutions, having in mind that low-level programming is not my expertise?

ChrisF
  • 38,948
  • 11
  • 127
  • 168
job
  • 183

10 Answers10

37

Your contact does not know what they're talking about. There are many languages, methodologies, technologies, and so on that a single person cannot possibly know all of the necessary details very well. What you do have to know as a programmer is how to learn what you need to get the job done and have a problem-solving approach that you can apply to arrive at a solution, no matter what programming language you need to use.

Admitting what you don't know is okay, but you can also prove that you are able to learn enough to achieve the desired result, no matter what you are faced with. Good programmers are simply good problem solvers that can implement their solutions in various programming languages.

I would not be working for someone that has the attitude your contact does.

Bernard
  • 8,869
22

"if you call yourself a programmer you should know all these things"

I strongly disagree with this statement. This would be like asking a chef to cook anything, a driver to operate any kind of motor vehicle, or a doctor to know all diseases, which is a ridiculous assumption.

To be a programmer, one has to know how to give write software in some language in order to perform some task in an automated fashion. The languages and tasks will vary from programmer to programmer just like what dishes a chef knows how to make, a driver knows how to operate, or a doctor knows how to diagnose will vary depending on how specialized one wants to be in each profession.

JB King
  • 16,775
8

Spoken like a person who never wrote a line of code in his life. This will be the same person who will feel you should be able to do it in half the time you quote. Don't argue with an idiot.

You showed much more knowledge and character by knowing your limitations. This person talks about things he knows nothing.

I guess every carpenter should know how to carve an ornate piece of furniture. If a pilot can fly one plane, she can fly them all.

JeffO
  • 36,956
6

I really despise it when people say "You need to know X to call yourself a programmer." Really? Well some people work on COBOL all day and LOVE IT. They may have gotten so good at it and their problem domain that next to them we're all pretenders.

Seriously, give people respect for solving the problems they're faced in cool and interesting ways. Understand that great problem solving comes from a diversity of backgrounds. Not whether they've mastered a supposed "checklist" of skills that everyone's supposed to know so they can all think the same way. That's the EXACT OPPOSITE of what we want. Everyone's "checklist" is and should be different. The more different the better. Programming is problem solving these days. Respect those that do it well and understand that everyone comes to the table with different strengths. That's the only way we're going to help each other work effectively as a team. Just because knowing "C" or something really helps this one guy be awesome, doesn't mean that because you don't know it you automatically fail.

Doug T.
  • 11,737
6

Most CS programs in school will give you some knowledge in low level programming. I, for example, had assembler classes using the 8088 processor (OK...so that dates me a bit). I think, however, that a lot of trade schools these days bypass that knowledge - pipe up with a comment if that is not true.

Bottom line, it is always good to know what happens on the chip level - besides, your high level languages will eventually end up there when it is run.

However, to have someone tell you that you are not a programmer because you currently don't know low level programming is ignorant. If you need to have those skills for the current project, then you should have enough smarts or motivation to learn the skills you need and then apply them.

I would have to seriously consider not taking that project if the client is already talking to you that way - you never know where that could go.

Catchops
  • 2,539
3

I suggest that you read this :

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

As explained, when you use an abstraction, what is lower level always has an influence on what you are doing. This can be performancewise, cause of failure, security reasons, and so on.

So definitively, you should now about these stuffs. Not especially being a specialist of asm or CPU architecture. But knowing enough to document yourself when you need to know more is, indeed, a must have.

deadalnix
  • 6,023
2

His argument is a good example of the No True Scotsman logical fallacy.

However, the difference between low and high level programming isn't the language, it's the application knowledge domain. Assigning a value to true could mean turning on an LED or enabling mouse click events on a widget. The language doesn't care.

For example, take a look at this library for working with an LED matrix on an arduino. It's not rocket science here, and really any programmer would be able to understand it with a little effort if they didn't put up a "low-level oh no!" mental block.

Karl Bielefeldt
  • 148,830
1

Each Programming Language has its own pros and cons. Learning a few, would give you a great perception on what to use and how to use it effectively when given a project.

As a programmer, you can specialize on a specific PL, using it as your only tool to solve any problem, you can also know a lot of PL but specialize on nothing and a lot more in between these extremes.

Maybe person who told you that "Phrase" is frustrated, perhaps you were not the only contact person he has spoken to.

knowing the problem and knowing what skill set is needed to be able to solve the problem effectively is one good trait of a programmer. Alas on your case, since you do not have the required skill set, you may perhaps refer your contact person to another programmer with the necessary skill set.

cheers,

wardy

1

Having the theoretical knowledge is good. Being able to learn the low-level language when necessary is very important.

But as for "if you call yourself a programmer you should know all these things", who can know everything about everything? Before they even do them?

-2

I will re-phrase

"if you call yourself a programmer you should know all these things"

TO

"if you call yourself a programmer you should know enough that you can quickly learn all these things"

Parag
  • 95