Programmers with network engineering skills

programming is not being able to write a hundred lines of unreadable
perl.

a real programmer can be productive in networking tools in a matter of a
month or two. i have seen it multiple times.

a networker can become a useful real progammer in a year or three.

randy

I agree. Programmers aren't born understanding some fields and not
others. In my case, I didn't have a clue about networking coming out
of school but picked it up because I thought it was neat, and there
was something intoxicating about the smell of the printed out RFC's.

Mike, weird i know

But my point is that each person who is capable to do so generally chooses their life's work, after working in and trying out several capacities, and this is extremely common in IT environments where a person could have cycled through programming, system admin, dba, networking, security, etc. For me, I prefer networking, and even a substantial raise would not get me to design and write computer programs again. Life is short, networking professionals generally are in high demand, and are in networking because they like it. Yes Perl scripting may become a temporary, necessary evil at some point, but if the subject of coding comes up, many will move on.

a real programmer can be productive in networking tools in a matter of a
month or two. i have seen it multiple times.

a networker can become a useful real progammer in a year or three.

Thank you! I always wonder when someone distinguishes between a networker and a programmer as if they came from completely different worlds. I find these fields to be highly related. They are algorithmic at the core and you need a good understanding of architecture and design to successfully make the concepts work. If you have ever tried to find a bug in a badly structured network, you should be able to understand that implementing all of your application's use cases in one module is not a good idea. After implementing a good serialization scheme for your class data, network protocols are not that strange anymore (I know I'm exaggerating on simple examples here, but I hope the idea comes across).

My point is, if someone has a good understanding of applying architectural patterns to a problem and isolating error causes while debugging, it shouldn't matter if he wrote mostly software the last years or if she administered a large scale network. A good sysadmin can learn to write software and a good programmer can learn to love the datacenter.

Yes, a theoretical understanding of algorithms is a common element in programming and networking. But the thread seems to assume that highly capable programmers/network engineers are mere serfs, unable to forge their own destiny, at the beck and call of whomever they work for, instead of independent beings who are doing what they are doing because they like it and choose to continue doing so, even at the expense of foregoing substantial financial gain.

Hello All,

i have been looking for quite some time now a descent coder (c,php) who has

Just a practical comment here; part of your problem may be offering c
and php together. I don't want to start a war, but I know that at the
very least all the c programmers I know would considered php to be ...
"horribly offensive". So, maybe seperating out these two roles (c and
php programming) will help you.

It is definitely true (speaking as a programmer, C# for several years)
that seeing +PHP would instantly turn me off. Further, I'm sure that
almost anyone who is still programming in c these days would have the
level of networking knowledge you care about (and can train on top
of).

Noon Silk said:

Just a practical comment here; part of your problem may be offering c
and php together. I don't want to start a war, but I know that at the
very least all the c programmers I know would considered php to be ...
"horribly offensive". So, maybe seperating out these two roles (c and
php programming) will help you.

It is definitely true (speaking as a programmer, C# for several years)
that seeing +PHP would instantly turn me off. Further, I'm sure that
almost anyone who is still programming in c these days would have the
level of networking knowledge you care about (and can train on top of).

PHP tends to mesh well with things like perl programmers. It is basically a scripting language. Anyone using D ?

Owen, I can only say it is my opinion, based on some years of experience
and working with people who have come from both sides. I have seen more
people successfully move from programming to networking than the
reverse.

Ralph Brandt
Communications Engineer
HP Enterprise Services
Telephone +1 717.506.0802
FAX +1 717.506.4358
Email Ralph.Brandt@pateam.com
5095 Ritter Rd
Mechanicsburg PA 17055

Rodrick, give me the name of one of those firms. :slight_smile:

Ralph Brandt

The smaller more elite hedge funds are - Getco LLC, Knight Capital, SAC Capital Advisors, Jump Trading, Wolverine Trading, Chicago Trading, Citadel, Sun Trading

A list of larger firms are here - http://www.nasdaqtrader.com/Trader.aspx?id=topliquidity

The core skill sets most look for is core Linux, C/C++, multicast, multithreading, IPC, and low level kernel drivers. FPGA and CUDA is also becoming more relevant.

<rant>

I would wholeheartedly agree with this, but I believe its worse than
just that. I used to categorize myself as a full developer, now I'm
slightly ashamed to be tainted with that brush since there's so many
people using the term who don't know the first thing about programming.

It used to be that when you were taught programming, you were taught
concepts (when to use a for loop, while loop, Boolean algebra), then
you built on the foundations by learning advanced concepts (data
structures, how to program concurrently using semaphores etc etc), you
would then pick some optional classes to make up for some non
programming specific knowledge (networking, linux admin, etc etc).

I now have a lot of friends who work in academia and they are worried
by a decline (as am I when trying to hire new talent). Currently the
teaching process is one of learning to program like a monkey, monkey
see monkey do. People are no longer taught to think for themselves, but
instead taught to program in a specific language (PHP, Java, rarely C
or C++ any more, C#, or VB) and that is all they know. I don't believe
this is a failing with the lecturers but with the fundamental change in
attitudes to programming.

One of the tests I give all interviewees is write a very short program
in a language they have never ever used before ( personally I recommend
http://en.wikipedia.org/wiki/Brainfuck ) since this gives people a
chance to show they can program rather than being able to tell me "I
know PHP" or "I know C", suprisingly very few newer programmers can
make it through, or even try it, because the concept of thinking for
themselves is so last year.

</rant>

The right tool for the right job.

PHP (and the LAMP stack) can result in very quick development of systems
that will run on any vanilla Linux server. In my experience, that has
turned out to be a huge benefit.

If you have a developer who knows C well, then they will more than likely
be able to use PHP properly. I use both C and PHP myself, and have no
conflict. I think they compliment each other nicely. C for performance,
PHP for web applications or quick scrips.

C# and any .NET language on the other hand . . . now /that/ I question.

; )

William Herrin [mailto:bill@herrin.us]

+1 on both. Senior network guys learn programming/scripting as a way to
automate configuration and deal with large amounts of data. It's an
enhancement for us and most network people are willing to expand their
programming skills given the time. On the other hand there are way too
many jobs where programmers can just be programmers for many of them to be
interested in expanding their networking skills even if they have prior
experience. If they become interested in the "hardware" world they usually
go toward systems administrator and OS's. Some of them are big enough
geeks to want to learn both or all three, but those are few and far
between. It's very likely that such programmers frequent this list so
hopefully I won't get flamed for posting this. EIther way it's just
semantics, but it is generally easier to find a network guy that wants to
learn how to program or get better at it than to find a programmer who is
dying to learn about networking. Not sure if I agree with the opinion
about generalists. There are alot of people who view technology as both a
job and a hobby and become experts in what pays their bills and then slowly
learn something about everything via osmosis. There are alot of people
that never saw a book or trade rag they didn't like.

While what you say is true (heck, I'm one of them), my point is that a great many
network engineers have relatively strong programming backgrounds and if you
could convince one of them to go back to writing code (sufficiently interesting
project and/or right $$) you'd probably have better luck than finding a programmer
that has networking skills.

Owen

This problem is not limited to programming.

Education in general has moved from teaching conceptual knowledge
re-inforced by practical examples and exercises to teaching methodological
and/or procedural knowledge without any effort to convey concepts.

It's much like the difference between teaching a man to buy a fish using
cash vs. teaching a man more generalized economic skills and money
management.

In the former case, you get a man who can eat fish as long as he still
has some cash. In the latter case, you get a man who can keep cash
coming in and use it to obtain a varied diet and other things he may
want.

Today, the indoctrination mills (hard to call them education centers
at this point) churn out people who are good at repeating the same
process and solving the same problems over and over.

Unfortunately, when faced with a problem that doesn't look like something
from their text book, they either become completely lost or they take
the hammer approach (when the only tool you have is a hammer, every
problem looks like a nail).

I'm not sure how to solve this. Teaching methodologically is much much
faster than teaching conceptually and the endemic lack of patience makes it
hard to get people to sit still long enough to learn conceptually.

Owen

I just about spewed my chai tea seeing 'SCI' and 'generalist' in the same post... isn't that mutually exclusive?

Mike Hale wrote:

If you're located in a major city, I'm sure you can find a community
college that has a networking certificate program you can send your
developer to, along with an in-house training program.

Oh come on!!!1
Investing in your employee by sending them out to courses, for crying out loud, that's way too practical and effective to even consider.

And to add insult to injury you suggest a low cost alternative such as a community college. If an employer was going to do such an outrageous thing as sending an employee to a course at least let it be an overpriced corporate course. Gees.

</sarcasm>

Education in theoretical concepts is definitely a problem in general, but I've found it's particularly noticeable in the technology field which has become increasingly commercialized (or commoditized); where once a "sysadmin" was a long-running process, grown from a person with the mindset of "how does this work?" and "let's build cool stuff!", eventually culminating in someone who knew operating systems, networking, and programming inside out (see: "UNIX greybeard" types), nowadays people haul off to a 5 day course in "Advanced System Administration(TM)", write a certificate exam or 15, and call themselves a "sysadmin".

There still are people with the "greybeard" mentality -- all of the very best sysadmins I know are of this type, and many know real programming (that is, data structures, algorithms, etc) better than the mass-produced developers our there -- but unfortunately, they're relatively rare, and usually very hard to recruit. You have to have a very interesting project first and foremost -- salary is important, but building new, cool stuff is usually the #1 factor for top-notch generalists.

- Pete

Owen, you nailed it here. Even the ACM recognizes that a 'Software Engineer' and a 'Computer Scientist' are different animals (ACM recognizes five 'computer related' degree paths with unique skill maps: Computer Engineering, Computer Science, Software Engineering, Information Services, and Information Technology; see https://www.acm.org/education/curricula-recommendations for more details).

A true 'network engineer' will have a different mindset and different focus than a 'Computer Scientist' who has all the theoretical math skills that a Computer Scientist needs (a reply to one of my recent posts mentioned that math, and was somewhat derogatory about engineers and timeliness, but I digress).

Coding and development can bridge across the differences; but it is very useful to understand some of the very basic differences in mindset, and apply that to the position being sought.

It boils down to whether the OP wants strong engineering skills with the accompanying mindset, or strong CS skills with the accompanying mindset. Given the other clearance issues, I would be more inclined to say that the OP would want a 'Software Engineer' with some network engineering skills rather than a CS grad with some network guy skills. It's a different animal, and software engineering teaches change control and configuration management at a different depth than the typical CS track will do (and that sort of thing would be required in such a cleared environment). On the flip side, that same 'Software Engineer' isn't nearly as steeped in CS fundamentals of algorithms and the associated math.