Log in

No account? Create an account

Previous Entry | Next Entry

The nature of software engineers

In a response to why programming sucks, CuriousCat suggests that people who are unhappy with a programming career pick something that is compatible with their own nature. I was thinking about this while reviewing some Perl regular expression (regexp) man pages. There is a lot of detail in Perl regexps; many ways of doing the same thing, but there are subtleties, and it is easy to make mistakes. There are entire books that deal only in the subject of regexps. Some people spend inordinate amounts of time studying the fine art of regexp programming.

I'm not one of them. I tend to try to write programs that are simple to implement and understand. I don't like to use the very obscure features of Perl unless it's absolutely necessary. I'd rather spend time up front designing things so basic language features can be used, and it doesn't take a lot of time (especially for someone who's maintaining my code while I'm not available) to understand how it works.

I get the feeling, based on interviews I've read about, and some I've had, that there are more software engineers who dwell on these details now than when I first entered the field. Moreover, because managers tend to favor the opinions of the software engineers over their own impressions, if the engineers interview candidates based on these details, otherwise competent people might be passed up.

In The Mythical Man-Month, the individual who spends a lot of time on the details of languages is identified as the "language lawyer." (Why do I remember this?) This is a specialization of a programming team that is built on the "surgical model." This seems reasonable to me; it helps to have someone who knows some of the finer points of a programming language because there may be better ways of doing something. But does every team member need to be a language lawyer?



( 6 comments — Leave a comment )
Dec. 4th, 2007 07:38 am (UTC)
But does every team member need to be a language lawyer?

I get the feeling that it's not because they want everyone team member to be a language lawyer that every job description is for a languague lawyer. I think it's because that language lawyers are so very, very rare, that almost every team still needs one.

Maybe it's just the circles I run in (MITish, heavy on the MB N-type personalities), but most programmers I know try to argue the line about it being fundamental principles that are important, and knowing the nuances of individual languages is for, well, language lawyers. Who are !me. Nobody wants to be the language lawyer.

And it doesn't help that with the learning churn in the industry, there's a... convenient pressure not to attain mastery with any one language, not to take the time to do so.

I've never worked with a designated language lawyer, but I get the feeling there can be some very... interesting... interpersonal dynamics around being the person to correct everybody else's code style. I wonder if there's an additional pressure from the job sucking.
Dec. 4th, 2007 08:32 am (UTC)
I would probably be engaging in spamming if I suggested that you learn Python. ;-)
Dec. 4th, 2007 10:40 pm (UTC)
I programmed in Python for a couple of months at Nominum. I wouldn't say that I "know" it (in the "new order" of "knowing"). If someone asks me about the work I did at Nominum, I'll mention the Python programming projects, but I'm always careful to state that I need reference material to answer language-specific questions, because I don't remember a lot of the implementation details.

Speaking of language lawyers, note the "Language Reference" bullet item on the Python docs page. Also, as noted in the Indentation section, the rules for Python are somewhat different (and potentially annoying) as compared to similar languages. I remember reading about this, and experiencing it when first using the language, but it's not something that I'm likely to remember on an interview if the subject came up. (In particular, if I weren't writing about it now, I'd have no particular reason to think about it, so it might come in handy to have been reminded of this in a situation where I'd otherwise say I couldn't think of anything about the language that I or anyone else would find annoying.)
Dec. 4th, 2007 10:45 pm (UTC)
My experience is very different from that of professional programmers, who are required to know multiple languages - I only know Python, and I only know it to the level required to co-write a Dummies book. But my experience was that Python's rules and guidelines helped simplify matters, so that once I knew them, I could stop thinking about them and focus on developing the code. Also the Python community encourages reuse and somewhat discourages coming up with multiple different ways of doing the same thing, which also removes complexity.
Dec. 4th, 2007 02:31 pm (UTC)
I don't think that you have to be a language lawyer to get a job in software engineering. Maybe it's different out West.

Honestly, you bring up a lot of good career-related points, but the sheer quantity of your posts which say "It seems like in the modern world, software engineers are expected to be foo, and I'm not foo," make me worry that you're undermining your own confidence in your ability to get a job by harping on the things that you are not.
Dec. 5th, 2007 06:53 am (UTC)
In general, I want to understand the mindset behind requiring people to know the fine details of languages, APIs, etc. I wonder what it is that makes people believe that this is better than other ways of testing competence in interviews. Is it based on something they've always felt to be true, or is it something that they came to believe based on some other experience? Some people say that it's a result of the dot-boom, when people were getting hired for programming jobs but had almost no experience (and were unwilling to or couldn't learn). I interviewed people throughout the dot-boom, but never felt as if I had to change my beliefs about interviews.

It seems to be more of a west coast thing. Maybe my luck would be better looking for jobs elsewhere. Unfortunately, I have a lot of ties to the community, local professional contacts, etc.

Edited at 2007-12-05 07:01 am (UTC)
( 6 comments — Leave a comment )