Tools Experience
Bob is often asked in interviews what it is he'd like to be doing. Having done many interviews on both sides of the table, Bob knows that the thrust of the question is most likely Here's the tools we're using - interested?. Many companies use this to attract and hold workers, and that's fine. But having used so many different tools in his professional life, Bob is convinced that a tool is just that - a tool, and no one tool is so much better than another that it overcomes the short-comings of the rest of the job.
However, there still needs to be a listing of the products, languages, tools, and such that Bob has used in his professional life:
- Operating Systems
Linux (RedHat, Ubuntu) - The initial attraction was the GNU compiler tools for some continued work on his thesis simulation. It is the very best server platform, in Bob's opinion.
Windows (3.1/95/98/NT/XP) - since 1991 at his own company, Port-to-Port. While fine for certain audiences, this is not the platform a business should run critical server/back-end processes on.
Solaris - since 1987 in grad school. Most of the administration work has been with 2.6 and 7. Lots of development work, and certainly one of the top four platforms in his opinion.
NeXTSTEP/OPENSTEP/Mac OS X - since 1996 at First Chicago NBD. much of it in the Development, but quite a bit as an administrator/owner of two NeXT machines and several Macs at home.
- Development Languages
Node/JS, Typescript - these have become quite popular with web services and systems, and there is a lot to like about the fast execution, good tooling, and a thriving ecosystem. It's also available on almost any deployment datacenter in the world.
C/C++/Objective-C - these are the traditional languages of the developer. Lots of experience in each. While Obj-C seems to be confined to the Mac, it's nice to know that the same C and C++ code on Linux works fine on Mac OS X.
Swift 4 - starting with Swift 1.0, Bob had a look at Swift, but the class library wasn't where it was for Objective-C, and it took until Swift 4.2 to come back to it and do a nice port of an app from Objective-C to Swift. With the future of Apple apps being Swift, it's just good to know.
Clojure - lisp on the JVM and one of the hottest functional languages of late. Primary experience on 1.4 through 1.10 along with several of the public domain clojure libraries: clj-time, clj-http, compojure, etc.
Ruby - arguably the language of Web 2.0 - the foundation of such sites like GitHub, Groupon, and others, this language has certainly garnered a lot attention in recent years, and while it's not everything to all people, it's got both OOA&D and Functional components and presents a nice balance when building distributed systems.
Java - the tool of the dot com age. Bob has worked a lot with JDK 1.1.8, 1.3.1, 1.4.2, 1.5.0, 1.6.0, 1.7.0, 1.8.0 due to their larger acceptance and general stability of each of the major releases. While there are specific things to be gained in each of the releases, the base objects can be made to do a lot of the work, just maybe not as easily as the new features in later versions.
Python - the tool for data science and lots of glue for FRONT ARENA, Bob used this extensively at O'Connor when they migrated to FRONT ARENA, and has taught several folks how to program in it because they wanted to get started with a simple language.
FORTRAN - the simulator in his thesis was written in FORTRAN, and he still maintains it from time to time. It's not meant to write GUI apps in, but what it does, it still does extremely well.
Pascal - wrote a circuit simulator in this back as a Master's student at Purdue. Nice language, but not one that he's found a need to keep with him.
VB and VBScript - Port-to-Port based almost all it's business on this language with a database back-end and Bob has written more than his fair share of VB code.
16-bit ASM - did a lot of this as a student at Purdue, but haven't transferred the knowledge to more significant platforms due to the power and speed of C.
Scripting Languages - while not necessarily suited for large-scale deployments, languages like ASP, PHP, csh, bash, perl, Python, etc. are all very useful and have been used by Bob in more than one project to glue things together.
- Tools (Source Control, Mail, etc.)
Git - excellent source control for almost all platforms. Bob runs one server with a web interface just for his home network. In addition, the hosted GitHub service is an excellent supplement to the base Git toolset.
CVS - excellent source control for almost all platforms. Bob runs one server with a CVSweb interface just for his home network.
Subversion - the successor to CVS, it was the standard at UBS O'Connor and Chicago Trading Company and it's certainly fine for most applications. It's limitations are architectural - server-based.
PVCS - the standard at First Chicago NBD, Bob was the lead developer deployment contact in Captial Markets. Not as nice as CVS and a lot more expensive.
SourceSafe - defacto standard for Microsoft Visual Studio development. No better than CVS, and available on a lot less platforms and costs more.
MQSeries - nice middle-ware from IBM, primarily used by the Java client. It's a nice product that does exactly what it's supposed to do, which is a real treat.
Sun One Message Queue - nice Java-based middle-ware from Sun, primarily used by the Java community, but opened up by Sun recently to include the C++ API. It's a nice product that just works.
cc:Mail - as a network-wide admin of cc:Mail, Bob learned that he'd rather not use this product again.
- Databases
PostgreSQL - the best database for sub-10 GB databases. This is fast, secure, Open Source, and in about every way better than SQL Server, Sybase and Oracle. When the database gets too big, you do need to look to another solution, but that's not very often.
CouchDB, MongoDB - the standard NoSQL databases of the web 2.0 world, Bob has used both - all the way up to their limits, and knows when each makes sense and when to switch to something a little better suited to the job.
Hadoop - one of the original Big Data database, Hadoop has the familiar map/reduce structure that exists in CouchDB, but has far greater scalability, but sacrifices access speed. There's typically a need for some front-end database to achieve decent responsiveness with Hadoop.
Microsoft SQL Server - primarily 6.5 and 7.0, Bob has used these databases for many projects. There are a lot of reasons not to do this, as Bob can certainly explain.
Sybase - this is a reasonable database, but not significantly better than SQL Server or Oracle.
Oracle - not a bad database, but not cheap either.
H2 - very impressive 100% Java database that can be both flat-file like MySQL, and in-memory. Very sleek if you are doing a Java project.
There are certainly more technologies that Bob has been exposed to, but these are the ones that have formed the cornerstones of the projects he's been doing for the last couple decades, or so. While we could list tools like Lotus Notes, DB2, Visual Age for Java, and a host of others, Bob's level of expertise in those tools is only as a casual user, and not as a serious developer.
Which bring us to a point. We have found that there's a danger in focusing on specific tool experience. And it is often seen at it's worst in the interviewing process. When it comes to most resumes, most people load up on the things that they've only been exposed to for a short time - just to make the resume look better. While it's not immoral, not quite ethical, either. We have chosen to list only those things Bob has intimate working knowledge of. So his resume list is correspondingly shorter. And that is the crux of the problem - others with much less real experience will appear to be better qualified than Bob.