I’m a Scientist. Doesn’t matter what I do, I always will be one.
There’s still another -
Architect - Develops overall product direction and design. Uses whatever tool will get the job done to generate proof of concept applications. Works as a principle on the design team and as the main buffer between product management and engineering. Usually the team lead and senior member over engineers, developers and coders. In smaller organizations may be known to wear any or all of the other 3 hats AND act as lead QA and principle coffee maker.
In China, many developers call themselves “ma nong”, meaning “programming farmers”. They think that software development is a low-end profession, like farmers toiling in the field.
Kinda figures; I’ve heard that it’s really easy to get a job on the main land, simply hammering out code for VC based companies who want a quick product to sell on the App Store. Although there are still many jobs available for skilled developers who would like to work for companies that are more future focused.
Here in Taiwan many refer to themselves as “???”, “Software Engineer”. I got a bit confused, for a long time I thought it “???” as that’s what I had heard others refer to me as, turned out that just means “Computer software”.
To Sam, approximately since 2000, many universities (in Mainland China) established their computer faculties. The consequence is: software developers are overmuch now. If a company need a developer, there are probably 100 people participating the interview. Some are excellent, and some are banal (for example, they can’t write a simple regular expression RegExp).
There’s a simple regular expression?!
I can’t write anything in RegEx, no need to guess where that puts me then <takes off “Master of Mac” crown that Timi gave him>.
In our hiring process, we are looking for self starters. Since we’re advertising for Unix-literate people, we sit them down at a Solaris system with the basic Solaris shell access and ask them to create, from scratch, a simple “Hello, world” app in ANY language they want to use. 8 out of 10 don’t even know how to start an editor (and we’ve installed vi, pico, and emacs on the system), let alone choose their coding language. I’ve been mostly impressed with two who sat down and simply use the shell’s “echo” command with some ANSI sequences to print the two words in two different colors - both of them were musicians, not comp-sci.
Really makes me wonder what are our colleges are teaching in the Comp-Sci programs.
Granted, it’s been a few years (graduated in 2003) but Solaris was nowhere to be found in the CS department where I earned my degree. The freshman and sophomore classes were focused heavily on Java, and they provided both Windows and Linux (RedHat, iirc) machines that you could use for labs / homework. Upper level classes switched to C / C++ in lecture, but let you use whatever you wanted for assignments for the most part. The thrust of the entire program was “here’s a bunch of theory about how/why things work the way they do”, not “let’s learn the intricacies of a specific system or language.”
In fact, once I was up in the 400 level classes (senior year) pretty much all the assignments were language / OS agnostic. I remember class titled “Information Retrieval” where we had to implement our own compression algorithm, similar to Zip, but tweaked a bit. The professor didn’t care what language you wrote it in, or even what OS it ran on, as long as you could take his various sample input files and compress them in a way that met the criteria he was looking for.
Similarly, we were taught a bunch of SQL, but not from a given database engine - i.e., we didn’t learn anything specific for MySQL, Oracle, MSSQL, etc… rather we focused on the algebraic notation and manipulation of tuples for a given query, expressed in vanilla SQL (SQL92, iirc).
It was more or less assumed that if you needed to know how to use something specific, you would be able to teach yourself. If you could not handle that, you were in the wrong degree.
That’s what my test is for - if you can’t get started, how can you be expected to work in an environment where we’re looking for experience, not interns?
However, of the Comp-Sci grads that have answered an ad for “4+ years Unix development experience required” I’ve looked at over the past 17 years, I’ve had exactly ONE that could start a new C project in vi on a Unix platform. As I said, my last two hires were musicians who knew computer programming as more of a hobby than a training.
Sure, and I’m not saying that your interview approach is a bad one… just that modern CS programs don’t teach specifics of systems or languages.
I have had interviews similar to yours - “Here’s a computer (it was a mac). Please write me a program that calculates the prime numbers between 0 and 100. You can use whatever’s on the computer already, but there is no internet access. You have 15 minutes. Go.”
Luckily I had been using a mac personally for many years at the time of this interview, and calculating prime numbers is not all that difficult to figure out - even a brute-force approach works fine for the purposes of this interview. As I recall, I used vim in the terminal to write java code that I compiled on the command line. DIdn’t futz around with seeing if they had an IDE that would make life a little nicer. I also recall that I didn’t actually finish in the 15 minutes that they allotted, but I made it clear that I knew enough about what I was doing that I got the job.
Getting back to the meat of this thread: I think a coder is someone who knows how to program in a given language. A developer is someone who is capable in several languages, and an engineer is someone who does not even really consider the language, but instead worries about overall design. Implementation is left for develpers/coders.
I guess that would make me a serial coder… I’ve successfully used a number of languages over the years, but only one at at time… if you asked me mow to write fortran ,Pascal or Datatrieve etc code now for example (anything besides Xojo and basic SQL), i would need to go to the docs on the specific languages to relearn them.
I dont like the options as none of them apply to me 100% (or even 90%). What my boss (that just left me a few months back) would refer to me as the big geek in the corner, that you break the glass when the shit gets real bad, let scott fix it, and then send him back to his corner and several of our clients didnt believe him and then when stuff hit the fan, I went in and fixed a bunch of stuff that they didnt know was broken on top of what was broken. Now all those clients say that description fits me well.
my current boss just calls me a big geek. When people ask him if he has anyone with a particular skill set, if he doesnt have it, he will tell them that he doesnt think he has it but to ask Scott as he has all sorts of skills that no one knows about.
now when it comes to programming I am more of a programmer vs a coder, but I cover all the bases.
I worked with somebody older than me who once said: “I have just written one program but I have modified it 10,000 for other purposes”. I think we all do that to some degree but sadly as we age memorizing tons syntax is not as easy. It is more “efficient” for us “old folks” to grab a chunk of code and re-purpose it if the algorithm is a reasonable match or use it to remember the specific syntax of a few lesser used statements. If you are really clever you will write the code the first time in a re-usable fashion or at least re-write it when you need it a second time to be more re-reusable.
I am like Karen. A few decades ago I could use lots of languages with some degree of fluency. Over time I have gravitated to things with BASIC like dialects and now Xojo is almost my exclusive choice. Using something else takes lots of trips to the documentation.
In terms of my skill set I think of myself as an Engineer. Primarily because of a single skill attributed to a Dilbert cartoon called “The Knack” … it’s a rare condition characterized by a extreme intuition about all things mechanical and electrical. For me now it is not so much as having all of the syntax memorized but to conceive of solutions in a bit more abstract design then put that to code.
I think to create good software it takes some degree of “The Knack”. Debugging especially takes “The Knack” … how many times have you jumped to a bug in your code and really did not have any conscious thought of why until you see the bug?
But maybe I am an “artist” … a “software artist” … To paraphrase the commercial for a sandwich store … remember … “sandwich artist”.
I think I do everything. As a matter of fact this can be proven in reality, since when it all goes wrong, I tend to get blamed for everything, proving my point.