TechRepublic Head Blogs Editor Toni Bowers recently received the following question from a member, and she passed it on to me to respond:
I graduated from university recently and I was hired by the place where I got a job while working as a student. I am the only developer in my unit and I do mostly database applications. My problem is that I lack real world experience when it comes to developing new applications and I don't have any established standards or practices to follow. I literally have to learn everything on the fly and this seems to take forever. Is there some kind of IT mentoring program to help orphans such as myself?
I am looking for assistance with code standards, documentation standards etc. Any suggestions you could make would be appreciated.
Unfortunately, there are no organized programs that I know of that offer mentoring to developers. Most of the existing training is topic-specific and designed to get developers up to speed in new technologies.
To make issues worse, colleges have really been dropping the ball on these kinds of "working in the real world" ideas. Colleges have started spending more time working in languages that are used in the mainstream and less time in languages that are not as common. Also, there are a lot of concepts that you probably were not taught but are expected to know in the workforce, which include:
- Naming conventions
- Tool use
- Version control
- Working in a team
- Time management
- Project management
- Development methodologies (Agile, Scrum, CMMI, etc.)
It's the gradual development of these skills that will take you from an entry-level developer to an intermediate developer and beyond. In May 2009, I wrote 10 tips that will get you on that path. The 10 steps are:
- Learn another language
- Learn advanced search techniques, tactics, and strategies
- Help others
- Be patient and keep practicing
- Leave your dogmas at the door
- Learn a few advanced ideas in-depth
- Learn the basic theories underlying your field
- Look at senior developers' code
- Learn good habits
- Have fun
In terms of finding specific details about these things, good luck; I haven't seen a good book that collects all of this information in one place. (I have been very, very slowly working on a book like this, but I would not hold my breath for it.) One book that I think does a good job of discussing the code writing process is Code Complete by Steve McConnell. While he did not touch on all of the things you want to learn about, I think this is a must read for any developer who takes pride in their work.
I find that the best way to become better at something is to keep doing it; therefore, the more you write code, the more you will learn what does and does not work. You will also want to read as much of other people's code as possible, especially if you have the chance to ask them questions about how or why they wrote it the way they did. Getting involved in an open source project or perhaps volunteering to work with a local charity may give you the opportunity for just this kind of experience.
Another idea is to ask someone in another department to spend a few hours a month performing code reviews with you and explaining what you're doing right and where you could use improvement. You might also want to look for a local developers' group; the time before and after the meeting is a great opportunity to talk to more experienced developers and ask questions. Working with more experienced developers will put you on the fast track towards learning what you need to know.
It is great that you were able to find work right out of college, and it is nice that they have the confidence to hire you despite your lack of on-the-job experience. At the same time, it has put you in a bad position in terms of learning what you need to know, and it can hurt your career and the quality of your work in the long run.
Keep an open mind and recognize that there are things you need to learn, and seek out books and information online about topics that you hear others discussing but do not know much about, and you will be able to learn the necessary development skills. Best of luck!
More programming resources on TechRepublic
- Three ways to gain programming experience
- Tips on choosing a programming language to learn
- How do I... Get started using the F# programming language
- How to Think Like a Programmer: Part 1
- How to Think Like a Programmer: Part 2
- How to Think Like a Programmer, Part 3
- Five HTML oddities that you may not know
- Confessions of a mediocre programmer
J.JaDisclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.
---------------------------------------------------------------------------------------Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!
Justin James is the Lead Architect for Conigent.