How to write a Technical Resume
I update this post every few years, because things do change and it’s a popular topic. Writing a resume can be challenging, and you probably get tons of varying advice from lots of different people. I’ll say it again, but there really isn’t one way to write a resume, but there are a lot of ways to write an incorrect one. Take bits and pieces of the advice you get, and mold that advice into your own style and resume. I’ll cover the basics again, but feel free to add your own touch beyond the basics.
I don’t receive them much, so I haven’t put a lot of stock into them. However, I do think they can add value if written right and put into the correct context. Some online career sites set aside a space for you to enter one, so why not do it. When emailing a resume to a potential recruiter or company, the email itself could and should be the cover letter. Why not? A cover letter should mimic your professional summary in your resume, but be a bit more personal, detailed, and specific. If you’re applying for a certain position, tailor that cover letter and summary to that position. I’ve gotten cover letters as long as a full page, and as short as 3-4 sentences. Just don’t overdo it.
The summary is very important, I’d say the most important piece to your resume. It’s the first thing people see on a resume, and when someone is looking at multiple resumes for an opening, the first thing they see should stick out. Spend a lot of time on this, make it shine. Afterall, it’s your sales pitch. You are technically a product, learn to sell yourself. The summary helps you do just that.
It should be a 4-8 sentence knockout punch that screams hire me! It should cover your overall background, strengths, experience, personality traits, and education/certifications (if relevant to the job applying for). DO NOT USE AN OBJECTIVE. A little kitty dies everytime you do. Seriously though, do I really care if your objective is to “Use my skills and abilities to work at a forward thinking progressive organization as a Sr. Software Engineer”….or something….blah blah blah? Nope, I don’t. I care about your specific background and experience relevant to the position I have open. Use the first paragraph of your summary as your general background statement, then use the bullet points as the part that you tailor based on what you’re applying for.
Check out this example, I just grabbed it out of a few resumes I looked at recently, and it’s good. It’s very detailed, and is borderline too long. But man, I feel like I don’t have to read any more of the resume after reading this. Isn’t that what we’re going for here? He tailored it to the Grails opening I had, why would I not talk to this person after that summary? Geeze, I’m thinking about hiring him/her without even an interview.
- Senior Software engineer with a proven record of team leadership, system analysis, design, and development, with an expertise in object-oriented software development using Java (JEE, J2SE) and Groovy/Grails. Passionate about agile software development practices and quality improvement through the effective use of knowledge, information, and communication. Recently, have taught, led teams, and have successfully displayed the maintainability advantages of Groovy and Grails to both industry professionals and clients.
- Grails experience started in the spring of 2006, while working on a graduate capstone project. Introduced the framework to a team of C developers, and led them in the development of a Web application.
- As a Senior Java Developer at University of Minnesota, introduced Groovy to the development team by hosting a series of brownbag lunches on the language. As a pilot project, we converted a dozen Perl scripts over to Groovy, thereby greatly increasing the maintainability and test coverage of those scripts.
- Very recently, spent nine months working in one of the first Grails only development shops in the country. During those 9 months, our team produced two high quality Web applications on time and on budget.
- M.S. in Software Engineering from the University of Saint Thomas.
Here’s another example I just ran across. It gets the job done, but a bit simpler. Again, it tells me fairly quickly if I should interview this person or not.
- Experienced with Groovy/Grails and its underlying technologies, Spring and Hibernate.
- Strong background with page layout using HTML and CSS.
Here’s a very mediocre, borderline bad one. Ick.
- I am seeking a programming position where I will be involved in the software design, new technologies, and java centric work. I also desire an environment that has a good supporting structure for developers, business analysts, project managers, architects, developers and a quality assurance team.
The Technical Skills section should be a laundry list of applications, languages, databases, methodologies, or whatever other tools you use or have used to do your job effectively. This can be applied to Accounting, Finance, Engineering and many other professions. If you’ve touched on a particular tool/software/language, put it in here. If you’re not an expert with it, that’s OK, you still should mention it in the chance that your resume pops up in a keyword search. If you’re really good with one particular skill, it should be mentioned in your summary as well as your professional experience multiple times.
If you want to get really crazy here, you should order the skills based on relevancy, expertise, and importance. For example, you might have “Languages” as your first list. If you’re a Java developer and you’re applying for a Java developer role, you should have Java/JEE as your first “Language”, and so on. You should also keep in mind the position you’re applying for. If it’s a Grails position, you can put Groovy/Grails as your first technology listed. The first skills list should have the most importance. If you’re a developer, “Languages” and “Tools” should be first, and “O/S” and “Database Platforms” should be last. Here’s a standard example of a technical skills section, nothing ground breaking here.
- Technical Skills
- Languages: Java (J2SE, J2EE), Groovy/Grails, Ruby/Rails, Objective-C, Clojure,
- Development Tools: IntelliJ IDEA, Eclipse, BEA Weblogic, Tomcat, MyEclipse, JUnit, Ant, Ivy, Maven, CrusieControl, Hudson, XMLSpy, Subversion, CVS, Git, Fit/FitNesse, Selenium, Toad, RapidSQL, Checkstyle, PMD, FindBugs,
Cobertura, Emma, easyb.
- Methodologies: Scrum, XP, Test Driven Development, SDLC, OOAD.
- Application Servers: BEA Weblogic, Tomcat, Glassfish, JBoss.
- Database Platforms: Oracle, SQL Server, MySQL, Sybase, HSQL.
- OS: Windows, Linux (Red Hat, Ubuntu), Unix (Solaris, Mac OS X).
Obviously the Professional Experience section of your resume is important. You need to be able to paint a clear picture of what you did, but also what you accomplished. I think a lot of people forget about the accomplishment piece, and just explain their daily tasks. But, adding accomplishments will tell the hiring manager you deliver. Mention that you were on a critical project that built an application that ultimately saved the business 10k per month. Mention that you were selected by your manager/peers for outstanding performance (or whatever). Now there’s always exceptions to this rule. If you played a fairly insignificant role and were purely a taskmaster, well then it’ll be tough to explain accomplishments. Also, if you’re a technologist, make it technical. It always sucks when I get a resume that has all these fancy bullet points but no specific technical detail in it. An example would be “Worked on a team do develop a large scale accounting system.” That’s great and all, but it should read “Worked as a developer on a team of 10 building a large scale accounting system using Spring, Hibernate, JPA, Maven, blah blah (you get the picture). You should also have the last bullet point be a list of the types of tools/technologies you worked with. In conclusion, for each position, use 4-8 bullets of your daily detailed tasks, but also 2-4 of your accomplishments.
Here’s a decent example I ran across, it’s a little longer but explains things pretty well. There are definitely better examples out there, I just didn’t spend a ton of time finding something suitable. This gives you a good idea at least.
- Professional Experience
- Lead a team of 5-10 developers through stand-ups and iteration planning meetings.
- Architected the application’s technology stack including Spring-MVC, Spring, JPA/Hibernate, and Acegi.
- Setup development environment infrastructure including an HSQL in-memory database to facilitate unit testing.
Evaluated several Ajax toolkits including YUI and Dojo.
- Implemented numerous Agile User Stories for the HR application.
- Worked with business owners and analysts to define and implement new requirements for a more scalable and stable data processing application.
- Re-wrote existing batch processing framework that processed complete insurance information for roughly 300,000 members.
- Added a variety of functionality to existing eligibility web application, including new workflows, JSP’s, and controllers (servlets).
- Designed and implemented a new generalized SAX-based parsing framework for processing incoming XML files directly into existing hierarchy of Java domain objects.
- Delivered a mission-critical 40% increase in file processing application by designing and implementing a new multi-threaded framework.
- Tools used included: Agile project using Java/JEE, Spring, Spring-MVC, Spring Security, JPA/Hibernate, Ant, Tomcat, Acegi, Sitemesh, Velocity and Postgres.
A Really Really Great Company, Minneapolis, MN 02/06 – Present
Lead Java Developer
Phase 1 for a new concept start-up company. In less than two months built a functional system to address the business need and provide a user-friendly work flow for customers not familiar with the business concepts.
Education, Training, Certifications, etc.
In a technical resume, I prefer Education and the like at the bottom of the resume. The exception is if you’re fresh out of college or fairly new to the industry. Then putting the Education under the Summary at the top is more useful. I always tell newbies out of college to list relevant courses to whatever position they’re applying for. So if you’re applying for a Software Engineer position that requires C# experience, you better mention the CIS class you took that was called “Building Web apps with C#”. I also always recommend any marketable education (which should be easy to know) be included somewhere in your summary at the top as well. If you have a Masters in Software Engineering from the U of M, a Scrum Master certification, or you’re a CPA, put those in a bullet point at the top of your resume in the summary.
Here’s a simple example to give you an idea.
- Education & Certifications
- M.S. in Software Engineering May 2006
University of Saint Thomas, Saint Paul, MN
- B.S in Housing Economics, 1999
University of Minnesota, Minneapolis, MN
- Sun Certified Java Programmer (JDK 1.5)
You can also get as detailed as you want, if the courses are relevant to what you’re applying for. Check this one, I don’t mind it, some may think it’s too much. I don’t (if it’s relevant information).
- Professional degree program focused on established and emerging processes and technologies related to the development of software intensive systems. Core courses concentrated on software specification, design, implementation, verification, and maintenance, as well as project management, quality assurance, and process improvement. Graduated with GPA of 4.0.
- The degree focused on mathematics and computer science, but also included significant coursework in law, physics, and political science. Courses specific to the major included Data Structures, Advanced Algorithms, Artificial Intelligence, Computer Graphics, and Discrete Mathematics. Other activities: computer science tutor, varsity hockey.
University of Minnesota, Minneapolis, MN (1998 – 2000)
M.S. Software Engineering
Amherst College, Amherst, MA (1992-1996)
B.A. Computer Science
Font & Formatting
I’ve heard a lot of people talk in detail about formatting and where the dates should be, how and where your name and address should be, what font and size to use, etc. These things are minor, I personally think very little time should be spent on this topic. If you’re asking me these questions, I’ll tell you what I do (Times New Roman 11 font)….but it’s the last thing that should be discussed when putting together a marketable resume. Put you own flare in your resume, just don’t bedazzle the damn thing.
I also don’t agree with the notion a resume shouldn’t be over a page, or two pages, or whatever. Your resume should be as long as it needs to be. If you’re on page 4, yes maybe you should think about taking some details out of the position/s you had 5 years ago. But if you have a ton of experience and it’s recent and relevant, well than that’s the way it has to be. Just make sure to tailor and customize your resume to each position you’re applying for, take the irrelevant fluff out.
I know as well as anyone, resumes are a pain mainly because everyone tells you something different and it’s tough remembering all the things you’ve done at times. The main point is that if you’re not getting interviews, well then maybe it’s time to take a closer look at your resume. Otherwise, if you’re not having issues getting in front of the hiring manager, I highly doubt there’s much you need to change.