Last Verified/Updated: June 15th, 2011
Resume: http://philmcrew.com/resume.html doc pdf
I enjoy hearing, thinking and discussing possibilities. All even semi-reasonable email inquiries will be answered.
However, almost all employment inquiries ask a number of fairly similar questions about my experience, skill set, goals and so forth. This FAQ is here to make it easier and simpler to pass these answers on rather then having to wait for me to respond by email or even phone. And since there are an unlimited number of skills - many of which I have but most of which I don't - this faq details out as exactly as I can, what I can and am willing to do. It also tries to describe the types of opportunities that would interest me including skill set, duration, location. If there is any doubt feel free to send me an email.
As new questions are asked, this FAQ will continue to grow. I also take particular pains to try to keep it accurate and current.
Questions and Answers
As of July 2011, I am NOT looking.
However I am always interested in networking and hearing of interesting things going on. So feel free to make inquiries. But please don't call me on the phone.
I am generally interested in a lead programmer/software architect/data architect/senior software engineering type of position. At some point in time I can see taking on the responsibility of Chief Software Architect again. But I like to write and debug software so strictly being a software engineer is something I'm very comfortable doing. I like the product management side of software development and have strongly considered taking on a technical product management role - what stops me is that I would have to give up writing software. So there should be no doubts as to whether I'd be happy in a senior software engineer position.
I am primarily a Java (I switched from C++ in June of 2001) software developer specializing in the server side of client/server, especially in support of mission-critical 24x7 service offerings. I've also worked on the client and server side of a packaged solution (in the distant and recent past), as well as software packaged as hardware and integrated with a service (in the recent past).
I've had the opportunity to work with quite a bit of open source, especially Jakarta, and would hope that any position I have, would take advantage and give back to open source.
I enjoy the environment of cross-platform development and would relish the opportunity to work across multiple-platforms and multiple languages. However any contacts towards permanent employment as part of an on-line service or packaged software would be interesting to me.
In addition I have spent an awful lot of time doing informal data mining of internal systems and would find a position that was more internally data focused interesting as well. For that matter, I just plain like working with large quantities of data.
For the last 20+ years I have been a professional Software Engineer, paid to design and implement software in over 15 languages, on 7 platforms and across 9 DBMS's and for 6 companies.
I have a B.S. in Computer Science (minor in Math), and a B.S. in Psychology (minor in CIS). I have also had additional training throughout my years, especially in software architecture, software methodologies, J2EE and database.
For most of my professional career, I worked at Harbinger (for 13 years), a major Electronic Commerce company, which had 19 people when I started and 1100 people when it was acquired 11 years later. I also was a founder of nuBridges, a next-generation electronic commerce followup to Harbinger for almost 4 years. I have been a Senior Software Engineer, Lead Programmer, Project Lead, Software Development Manager, Tech Lead, Development DBA and Software Architect.
I have been working the full software development life cycle since 1988. I have been working with event-oriented design since 1991, and object-oriented analysis and design since 1995.
For most of the last 10 years I have concentrated in creating enterprise software in java. This has included full design including UI, using a mixture of both RUP and Agile (including Scrum) methodologies. My implementation experience has been almost exclusively on the back-end, including a heavy concentration of Data Modeling, JDBC and JMS (and RabbitMQ), but with a strong smattering of relatively simple html in JSP, PHP, Cold Fusion and Blender (a Harbinger proprietary language for which I was Lead Designer/Implementer)
From June to December 2007, I was involved with bringing a software project back to life. The application itself was written in a mixture of C, C++, Delphi Pascal and C# for VMware. As such it was an interesting challenge in software archaelogy. But it also was an opportunity to work with aspects of my skill set that I had not touched on for quite some time.
I am a quick study of others data schemas and code bases. I am a fast but careful developer and a firm believer of JUnit/TestNG unit testing, reuse of code, refactoring, source control, nightly builds and javadocs. I am a talented and rapid debugger. I am an experienced Development DBA. I have a proven track record for taking others ideas and early implementations and greatly extending them through many iterations, versions and releases and my own ideas. I believe in order to be a good leader or architect, you must also be able to implement, so have constantly gone back and forth between team lead (including implementation), and tech lead (concentrating on design/implementation).
If you are looking for someone who has all the answers, you might want to look elsewhere. I do not have a consultant's mindset - I am not looking to impress and be rehired. I have an owner's mindset - I am looking for my designs and code to be used, liked and paid for - and improved and replaced over time.
After a good length career as a permanent employee, I had the chance to work two contracts. I would consider both contract and permanent work - but I do prefer permanent.
I completed a relocation from Atlanta, Georgia to Portland, Oregon in August 2006. I don't expect to consider a move from Portland any time soon. At this point I don't expect to move out of the Portland area any time earlier than June 2014. And likely not even then.
I would love to work for Google. Or yahoo!. Or Amazon. Or Microsoft. Or even Intuit. All of which have contacted me more than once. Or even work for cnn.com again. But not enough to leave Portland.
I have been working with Java since 2000 and before that C++ back to October 1995 (as welll as half of 2007) and I would be reluctant to go back to a non-object oriented language. My preference would be Java or C++ or even C# (for which I have only limited experience) or even Smalltalk (which I know even less about). I have also done a little python which was interesting - so I guess you'd say that I certainly don't mind the challenges of a new language (having worked in 15+ of them).
Before I switched to C++, I programmed mostly in C (over 10 years). I could see doing additional work in C for a sufficiently complex application (such as a DBMS or kernel) or as part of embedded systems.
I have some background in COBOL and BASIC but none in Visual Basic or Powerbuilder. And none of those sound at all appealing. I worked with ColdFusion since June 1999 and as a Certified ColdFusion Developer, that was interesting to me at one point. However, I believe ColdFusion has had its day. I have done a couple of years with PHP and a bit with JSP, though at this point I would prefer to concentrate on something like GWT (Google Web Toolkit).
I quite like working in SQL and could see focusing pretty heavily on it alone. So pretty much just not COBOL or Cold Fusion or Powerbuilder or Visual Basic.
As you may have noted I have worked for an EDI software and services company from 1988 until 2001. I did know quite a bit about EDI (especially ASC X12 and EDIFACT), but from the point of view of a vendor and not that of a user. I have attended, participated and taken a leadership roles in the related standards body. I have analyzed and created software and services to work with EDI, including loading and manipulating the standards as well as processing EDI transactions. Working for a company which sold software or services for which EDI knowledge was helpful or even integral would be a good fit.
However, I am not an EDI coordinator/EDI consultant, EDI mapping expert or anything of the like. I have only a minimal bit of knowledge and experience in these roles - nor do I have desire to gain more. So I would NOT be interested in a job as an EDI coordinator or EDI consultant or EDI mapping expert.
If you do have a fully qualified EDI position, I would suggest announcing it on the EDI-L mailing list with <JOBS> as a subject prefix.
For what it is worth, I also know absolutely nothing about any of the Peregrine products.
I find database work very interesting. But DBA needs vary. According to Craig Mullins' Database Administration: The Complete Guide to Practices and Procedures, there are multiple types of DBA's. I have concentrated on the development side - especially as a Database Architect and Application DBA - and certainly as a database programmer.
Others would be better at being a Backup and Recover DBA or Performance Analyst. I would be an interested but inexperienced Data Warehouse Administrator.
I have had several years each with a number of databases including: PostgreSQL, Microsoft SQL Server, MySQL, Sybase, Enscribe and just a little DB2 and Oracle. I also have had the opportunity a number of times to take over a working and active existing database system with no documentation - and have developed techniques and skills for quickly helping others get the necessary information out of these systems - you could think of this as simple informal data mining.
I have depth of experience with working with database and data layers with multiple languages and methodologies including: Java (JDBC, Hibernate), C++ (Rogue Wave dbtools.h++), C, PHP, Cold Fusion, Tal, PERL.
I would be quite satisfied with a job strictly focused on the data/information side of the world.
I am not a UI expert. I have done a quite extensive amount of HTML connected to a Database backend in a number of languages including PHP and ColdFusion and most lately JSP. I did quite a bit of Swing for a couple of months (at cnn.com). I have not worked with any Java frameworks - so no Struts or Tapestry or the like.
Most of my career has involved a certain amount of prototyping experience. It is hard to go through as many languages and platforms as I had without doing quite a bit of trail-breaking. Whether it was writing the first Tandem C programs, Tandem SQL queries or Unix programs for the Harbinger VAN Service, or bringing Harbinger on to the Internet or writing some of the first java, jdbc and php for nuBridges - I've been at the forefront of bringing new technology into my companies.
The standard structure of prototyping for me usually involved working alone or with a small team, doing a certain amount of research; followed by some small utility programs to prove out the capabilities. From there the goal would be to deliver a small system all the way to production - working out the source control and build and test and deployment facilities as well as operational support and overall documentation. Assuming success, the next step would be to fully document the process and start design on a major piece of work with the technology - integrating that technology with existing development plans - and perform training of a larger team. Afterwards I would be mostly out of prototyping for awhile, usually leading a project team as a lead developer or software architect. And this process repeated at no less frequency than every two years. At Harbinger this covered in addition to the above: C++, RogueWave, C++ on HP, C++ on NT, the web, Cold Fusion, RUP, java and J2EE. At nuBridges this further covered java, PHP, PostgreSql, JMS, JDBC, JMX - as well as smaller proof of concept internal systems.
Twice the prototyping experience was completely entrepreneurial, actually looking at a particular business/technology with a small team as a whole and trying to figure out what kinds of products and services should be brought to market. The initial outputs of these two ventures were business plans with product, service and technology plans as well. Which lead directly into more typical prototyping as described above.
At cnn.com, the entire purpose of the project had been to create a prototype of a system. As such there was a very limited set of requirements and a lot of exploration. This particular prototype was implemented in Java, JDBC, Oracle, Swing, JSP, Jakarta Commons, Log4J and JGraph using IDEA, JUnit and CVS. The intended primary output is a white paper, but also a research blog as well as various swing and jsp applications that allow the data gathered to be visualized.
If you are a sports superstar it would seem like you would know. You would be called a superstar regularly, you would make lots of money, endorse products and causes and show up in the statistical record. With programming, it is not so obvious.
It had been a long time (pre-Tripwire) since I worked with anyone who was a significantly better software person than I am. I often work with people of similar general skill but more skill/experience in a particular way, and I try to make the most of it.
It seems to be a given that various bits of research has been done, indicating the best programmers are somwhere between 4 and 40 times better and faster than the second tier, and there is supposed to be a similar gap between 2nd and 3rd tier. The thought is that if you could get a top tier person, you could afford to pay them 2 to 3 times what you'd pay a 3rd tier person, and they would still be a bargain. Lately I have seen ads for positions that basically ask, "Are you a programming superstar?". Which would seem to indicate that they are trying to find themselves one of these top tier individuals. Sure I can claim to be a programming superstar - but why would you believe me?
Have I worked on anything recognizable? If you are in the EDI community the answer is probably yes, or if you have a Harbinger Corporation alumnus on staff - then perhaps. At Tripwire I was part of a small team (and did most of the non-ui code for) two free tools: OpsCheck and ConfigCheck. Have I done any open source work? I've done some, mostly database related bits in multiple languages, but nothing really all that substantial. I have tremendous references - people who will claim that I have remarkable skills - probably even that I am a superstar programmer - but why would you believe them? I would like to be considered a superstar programmer - and if you are the kind who can be convinced over the phone or by email - than by all means talk to my references and read my endorsements on linkedin. That has been enough at least once, perhaps twice in the past.
But still the question of substantiating the issue is out there. I can describe my thought processes, this document and others on my web site are a definite example. I can make claims, like the ability to remember large quantities of code and related programming project minutiae - which has been unique among my former coworkers. I can indicate experience with large numbers of languages and systems and you can see if I sound like I can talk the talk. I'm a harsh grader. I can't point at software or a site that everyone uses and say I wrote that. I didn't win big in the Internet boom. I am not quoted in the texts or journals. By my definition I am not a superstar. But I seem to have been the best or one of the best software programmers (except at Tripwire between 2007-2011 in which all the senior staff were pretty much at the same level - which means they are all better than me in some way - what a heck of a team!) of just about all the people I've worked with for the last 20 years or so. Who are also not superstars by my standards - though a number of them I consider quite good.
I suppose you could decide that you would rather have someone who might be a superstar with a long and varied set of experiences on their resume - than to have someone with a shorter track record. Or with no record of superstardom.
And if it isn't clear - I don't consider this an ego issue at all. I prefer to work with a varied team of individuals - differing background, skills, experiences, focuses. I am not a prophet - though I have been ahead of my time a number of times. I am not a master on high. I learn from and with as many people as possible - if your idea of a superstar is someone who will tell you what to do and not listen in return then I don't we are thinking of the same concept at all. I expect my team to make minor and major changes to anything I touch - big and small, ideas, designs and implementations. And I expect to do the same with the work of my team. And my goal is shipping code that people use and in some manner pay for.
But am I programming superstar? You read all the above and still want a yes or no answer. Okay. Yes I am a programming superstar. And have references who are willing to vouch for me.
My most up to date resume can always be found online at resume.html in html format.
I also have a Microsoft Word version of my resume.
I would be available immediately.
References can be provided as required, including references local to Portland, OR.
Neither my home number nor my cell number is especially hidden or secret. But I strongly suggest you contact me by email first. It is certainly simpler for me and I am much quicker then when responding to voice mail. For that matter if you manage to call my work phone number and leave a message, I will delete it without calling back. And even if you use my cell number, I am almost always unwilling to discuss an opportunity during the work day. Most general questions should be answerable by this page and anything that isn't, I tend to add. If the opportunity looks to be a good fit on both sides, a phone call can easily be arranged. Also the sooner we verify the fit on both sides in regards to skill set, duration, compensation and location - the less time wasted.
|Little or No
Apache 4yr BASH 3yr C 10yr C++ 5yr DBA 5yr Design Patterns 5yr Eclipse 18mo EJB 4yr Hibernate 10mo HTML 9yr IDEA 3yr J2EE 4yr Jakarta 3yr Java 10yr JBoss 3yr JDBC 7yr JMS 3yr JMX 1yr JSP 3mo JUnit 7yr Lead Programmer 13yr Linux 5yr LOG4J 5yr MDB 1yr Management 3yr MSFT SQL Server 5yr Multi-threading 4yr MySQL 4yr OOA/OOD 8yr PostgreSQL 4yr Project Lead 9yr SOA 1yr SOAP 2yr SQL 15yr Software Architect 6yr Sys Dev Life Cycle 16yr TCP/IP 13yr TestNG 2yr Tomcat 2yr UML 2yr Unix 5yr VMware 2yr Web Services 2yr WIKI 10yr Workflow 2yr XML 3yr
AS/400 4mo awk 3mo AXIS 1yr B2B EC 16yr C# 2mo Client/Server 12yr csh 2mo CSS 1mo CVS 4yr Data Mining 6mo DB2 1yr Electronic Commerce 14yr ExtenXLS 3mo IPMI 6mo JAAS 3mo Jabber 6mo JCA 1mo JGraph 3mo Jython 1mo ksh 2mo MQ 6mo NT 4yr Oracle 18mo Out Sourcing 1yr PERL 2mo PHP 2yr POI 2mo Python 1mo QA 1yr Red Brick 1mo RogueWave 5yr RUP 2yr SAS 1mo sed 3mo sh 6mo SNMP 6mo Sun 6yr SVN 18mo Swing 4mo Sybase 5yr
ASC X12 13yr BASIC 4yr COBOL 1yr Cold Fusion 2yr Delphi 5mo EDI Mapping 1yr EDIFACT 4yr Fortran 3mo ODBC 3yr Pascal 2yr Tandem 4yr Unix Admin 2yr
ACF/NCP ACF/VTAM CICS Customer Support IMS DB/DC MVS OS/390 Peregrine Service Center Powerbuilder RPG Sales