In recent columns we've discussed the current job market, rates and salaries, and different kinds of Java engineers: those who know Java and those who understand Java.
What separates a good, solid engineer from a senior engineer who's on top of the industry and in the highest demand? It's the experience and skills in the hottest technologies.
To become a senior engineer you need to have solid working experience with J2EE, XML, EJBs, and EJB-based application servers such as WebLogic, WebSphere, iPlanet, or Enhydra, as well as experience with servlets.
This doesn't mean simply reading a book or taking a course or working in a peripheral way with these technologies. You need to spend at least six months to a year working directly with them.
J2EE has a very high learning curve, so a lot of experience is required of an engineer who claims to be at the senior level. It's still a brand new technology with a brand new infrastructure. There are still a lot of truths and half-truths around J2EE and immature applications to work around. A senior engineer with more than six months to a year of experience knows where those problem areas are and how to get around them.
If you name-drop skills such as J2EE on your resume and don't really know the ins and outs of them, you'll be quickly found out at the interview. You may fool the recruiter, but you won't fool the hiring manager. Worst of all, you stand the chance of risking your credibility and reputation with everyone.
At an interview for a senior engineer position you'll need to know the difference between container and bean-managed persistence. You'll be expected to discuss the known shortcomings of CMP versus BMP and why one tool is better than the other.
Most important, you should be able to talk about specific instances in which you've used these different versions on different projects, as well as problems you've encountered and how you solved them.
As current technologies move from browser-based applications to wireless applications, a senior engineer should be able to describe the difference between writing an application for a cell phone with six lines of text versus a Web browser.
XML is becoming an increasingly critical skill as applications move from browsers to independent devices such as cell phones, palm devices, and thin clients (those devices that give you directions from inside your car and will enable your refrigerator to tell you when you're low on milk).
"XML connects application servers to independent devices like thin clients," explains David Young, chief evangelist for Lutris Technologies. Lutris has partnered with Nokia and Motorola to develop applications and enterprise solutions for next-generation wireless phones.
"XML is powerful because it's an agreement by the world of how to format raw data," says Young. "XML does for portable data what Java does for portable applications."
Young also stresses the importance of J2ME, a tool that will be very important for writing lean, mean applications for both smaller and wireless devices. Senior engineers also need XSL, XSLT, and wireless technology skills such as WML (wireless markup language).
If you don't have experience with these technologies, you need to get it. But where do you get it? There are many good books and courses available on J2EE, XML, EJB, and wireless technologies that are, of course, the best place to start.
Working as a contract consultant or with a consulting company is still the fastest, most effective way to pick up real-world experience with a variety of new technologies. B2B companies or those doing business over the Internet can provide that experience, but perhaps not as quickly or broadly as contract consulting gigs.
Hands-on experience with application servers may be hard to come by for the engineer-in-training who doesn't have thousands of dollars to buy a proprietary app server such as WebLogic.
Enhydra, the open-source Java/XML application server, can be downloaded for free at www.enhydra.org. This free site provides engineers with the tools to build Java, EJB, and wireless applications (the alpha version of Enhydra 4 includes J2EE). You also have free access to the experience of some 3,000 developers in the international Enhydra community.
One final note: in the engineering world there's often confusion regarding the difference between a senior engineer and an architect. An architect is someone who meets with management/clients, does white-board meetings and design, and then draws up the models that are needed. The architect needs high-level vision, diverse industry knowledge, and great people skills.
The architect's work is then delivered to senior engineers who are responsible for taking the architecture and making it work. The senior engineer must solve the hard problems and ultimately be responsible for the project.
If you're building your skills toward the expertise of a senior engineer, be careful not to oversell yourself in the short term, and take time to gain hands-on experience with these cutting-edge technologies.
Bill Baloglu is a principal at Object Focus (www.ObjectFocus.com), a Java staffing firm in Silicon Valley. Prior to that, he was a software engineer for 16 years. Bill has extensive OO experience and has held software development and senior technical management positions at several Silicon Valley firms.
Billy Palmieri is a
seasoned staffing industry executive and a principal of ObjectFocus. Prior to that, he was at Renaissance Worldwide, a multimillion-dollar, global IT consulting firm, where he held several senior management positions in the firm's Silicon Valley operations.