13 things to look for in programmers you want to hire

Being a Cocoa/iPhone developer, I've had a lot of recruiters come out of the blue and contact me about this or that job. Quite a change from the days where uttering the words "Cocoa", "Apple", or "Macintosh" in a job interview would instantly put a disappointed look on the face of a hiring manager (and your resume in the waste bin). The other day I got an email from such a recruiter named Vikram (names have been changed to protect the innocent). Vikram's e-mail included a very lengthy list of requirements. So lengthy that not only could no programmer likely satisfy them, but so long I would be forced to put the list at the bottom of my blog posting for the sake of brevity. 

I could spend the next hour writing a long tirade castigating Vikram's requirements, and complaining about the excessive emphasis on advanced degrees and buzzwords and ability to remember who you took to your high school prom (I went stag, BTW). But instead, I'll put a list of thirteen criteria I can immediately think of that define whether a programmer is someone good who you want to hire (not to says there aren't other criteria):

1. Understanding of programming-as-strategy. 90% of software development is actually strategy. Once and a while you might just get the chance to write code.
2. Direct-to-brain upload functionality. In other words, when handed a book about an unfamiliar programming language, a reasonably skilled programmer should be able to learn enough to write a "Hello World" application within the first hour.
3. A sense of "should". All programmers have a highly over-developed sense of "can", but only the good ones have that voice in their head that says "I know you can cram all the code for it on one line of assembler, but should you really do this?".
4. Ability to find and reuse existing code on the Internet. They should query sourceforge and google code for existing code before starting to write something themselves. 
5. Ability to make his/her own code reusable. This requires putting oneself in the shoes of a programmer unfamiliar with your code looking at it for the first time. A good programmer understands that code has to be "actively designed" to be reusable, and that it's not enough to "passively hope" that another programmer will want to reuse it.
6. Ability to understand the costs, tradeoffs, and potential limitations of using someone else's code, and how those factors tie into the overall software strategy. A good programmer knows when someone else's code will put you ahead in the future, as well as when it will put you behind.
7. Ability to read other people's code, especially if it's messy.
8. Ability to step through code with a debugger. Surprisingly, a lot of people seem to graduate from CS programs without this ability. 
9. Ability to refactor code in a way that promotes code reuse. A good programmer only writes code once.
10. Ability to use source code control systems and to be able to apply a good versioning/release strategy.
11. Ability to stick within the idioms of whatever language he or she is working on. 
12. The ability to read the trends in existing client requirements and at least sometimes correctly predict and deal with all the contingencies the client will bring to you before they've even said anything to you about them.
13. Ability to solve problems logically starting with simple, low-cost solutions and empirical tests and gradually moving towards investigation using complicated theoretical models and high-cost solutions. Work from low cost to high cost, simplest to most-complex.


PLEASE ONLY SUBMIT CANDIDATES WHO ARE AVAILABLE FOR IN PERSON INTERVIEWS WITHIN 1 WEEK OF BEING SUBMITTED TO MANAGER ; CANDIDATE WILL BE EXPECTED TO TAKE WRITTEN TEST FOLLOWED BY POSSIBLE IN PERSON INTERVIEW AFTWERWARDS ; CANDIDATE SHOULD BE PREPARED TO BE THERE FOR SEVERAL HOURS 

On the resume submission Please make sure to list School / University candidate graduated from along with Location, GPA, Year of Graduation, etc. Please dont submit candidates that just have a Masters of Computer Applications (MCA) Degree ; The HMs in Florham Park dont like candidates with this type of education background. 

Job Description: 

PLEASE ONLY SUBMIT CANDIDATES WHO ARE AVAILABLE FOR IN PERSON INTERVIEWS WITHIN 1 WEEK OF BEING SUBMITTED TO MANAGER ; CANDIDATE WILL BE EXPECTED TO TAKE WRITTEN TEST FOLLOWED BY POSSIBLE IN PERSON INTERVIEW AFTWERWARDS ; CANDIDATE SHOULD BE PREPARED TO BE THERE FOR SEVERAL HOURS 

MUST email copy of official transcript s and Education History in PDF format (Candidates Name_Type of Degree) once you confirm Interview. 
1. Complete education history -- All schools, degrees earned. 
2. GPAs 
3. Course list -- Mathematics (post algebra) and Computer Science (other relevant courses as deemed necessary by the vendor) 

Senior iPhone/Web Apps Developer Job Requirements 
- Strong development experience with XCode, Objective C, Cocoa Touch, iPhone SDK, Interface builder, iPhone App Dev Experience, Google Maps API 
- Knowledge and experience developing location based apps and services for mobile telecom network- SOA experience, and ability to develop iphone apps that can manage data packets stats including length (in Bytes) from each of the IP packet headers, packet count, byte count, etc 
- Ability to Track GPS coordinates, cell and sector ID, IMEI, app identifier, OA&M packets, etc for iPhone apps. 
- 5+ years of web database application development experience using MVC Architecture 
- Must have experience developing with Struts/Spring framework and Hybernate 
- 3+ years of experience using JSP, Servlets, Beans, EJBs, J2EE, XML 
- 5+ years of Oracle SQL and PLSQL experience 
- Experience with developing web graphical reports using server-side Java packages (JFreeChart, etc) 
- Ability to develop basic images/icons for web pages using any graphical dev. tools ( Adobe, etc) 
- Sun Java Certification 
- Oracle SQL/PLSQL Certification (desired but not required) 
- Strong front-end development skills in HTML, DHTML, JavaScript, Ajax, CSS, XML, XSLT 
- Must have used JBuilder, Eclipse or JDeveloper, SQL Navigator/TOAD, Apache, Tomcat, Unix (Solaris), Oracle 9i/10/11G for production-level projects 
- Experience using Tomcat, Apache, or Web Logic 
- Strong Reporting/OLAP/DataWarehouse experience and skills in developing custom and ad-hoc reports. 
- Good verbal and written communication skills, ability to interact with clients and business users 
- MS/Ph.D. in Computer Science/Information Systems or related major 
- Ability to take lead developer/architecture role for different systems 

Skill Experience Need 
1) XCode, Objective C, Cocoa Touch, iPhone SDK Expert Required 
2) Interface builder, iPhone App Dev Experience Expert Required 
3) Google Maps API Expert Required 
4) HTML, DHTML, JavaScript, Ajax, CSS, XML, XSLT Expert Required 
5) JSP, Servlets, Beans, EJBs, J2EE, XML Intermediate Required 
6) Oracle, SQL and PLSQL Intermediate Required 
7) Spring/Hibernate Intermediate Required 
8) Dev. of location based apps Intermediate Desired 
9) MS or Ph.D. in Engineering or Computer Science Expert Desired 
10) Track GPS coordinates, cell and sector ID, etc Intermediate Desired  


 

The Disappointment That Is Squeak

Screen_shot_2009-10-06_at_1

I'm going through a phase where I want to write software that very small children would find entertaining. Entertaining enough to spawn a few extra neuron connections that could bring them to the next phase of development just a little bit sooner. I had thought about using Squeak, which I mess with every several years when I lapse into forgetting how bad or non-existant the documentation is and how frustrated I feel that the Squeak development community doesn't consider this to be a problem.

How I am taunted by such wonderful interactive possibilities as etoys that no other programming environment has which are so permanently undermined by a level of community support that users of no programming environment would ever tolerate. I wish that the Squeak Community would take the enormous energy spent boosting Croquent http://en.wikipedia.org/wiki/Croquet_Project and write a true "Baby Steps" document that provides instant gratification of a graphical sort. And it would be great if they could avoid using the first 10 pages of said document to explain theentire history of Smalltalk (going back ten generations in Alan Kay's family tree) and proclaiming just how great it is.

Something etoy-ish written in Cocoa using a system of connections akin to IB's outlets and actions would rock.

An Outlet

It is apparent I need a creative outlet. My 9-5, which I do diligently and makes me almost enough money to live on, isn't quite fitting the bill. I need something more, where I can express my ideas. Where I can paint tech ideologies on the canvas of bits that passers-by might pay attention to in the way that one pays attention a piece of somewhat interesting graffiti. 

I live in Buffalo.

Described by some, such as Paul Graham http://www.paulgraham.com/siliconvalley.html, as an antithesis to Silicon Valley. This should be the last place where interesting ideas about technology should come from. I hope to prove the peanut gallery wrong.