Developer

Solo developer seeks development skills

Justin James offers career advice to a developer who lacks real-world experience and is looking for a mentoring program and assistance with code and documentation standards.

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:

  1. Learn another language
  2. Learn advanced search techniques, tactics, and strategies
  3. Help others
  4. Be patient and keep practicing
  5. Leave your dogmas at the door
  6. Learn a few advanced ideas in-depth
  7. Learn the basic theories underlying your field
  8. Look at senior developers' code
  9. Learn good habits
  10. 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.

Conclusion

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

J.Ja

Disclosure 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!

About

Justin James is the Lead Architect for Conigent.

24 comments
Morwane
Morwane

this topic is highly on point for me " I 'm 33 years old love to be a programmer currently working as a Network engineer and eager to change my career for the love of programming in C++ and already started my studies on that with lots of C/C++ ebookz "Accelerated C++" good book for me as a beginner but having a knowledge of VB.net. What I need to know is "Am I late for changing my career or NOT

jefferyp2100
jefferyp2100

There is a lot to learn here, but a programmer should learn how to break a task down into smaller units. First, naming conventions different from language to language. Using .Net and C#? Microsoft has published naming conventions. Hint: no Hungarian notation. Microsoft also has various Dev Centers and many resources online. When it comes to development methodologies, project management, version control, etc., these things don't vary from vendor to vendor or language to language. I found a local public library system offers free access to Safari Books Online. This is a great resource and is highly recommended. The programmer's best friend can be Google. I can find examples, tutorials, videos, etc., for any topic. Don't stop learning and don't try to learn too much at once.

Tzekov
Tzekov

I was in such position at the beginning of my carrier. I know how it feels. At that time the biggest help for me was the external consultants/contractors that implement some bigger projects. Negotiate with you boss, that these external consultants/contractors/programmers (what ever) have in there contracts something like "mentoring" for you. The other big thing that I have missed was the organisation of the development process. In big companies there are dedicated persons for that, but as a solo developer you must think about that. Your code must be supportable ? coding standards and version control are only a part of that. Document you work ? not only the written code, but everything starting from the request for a software, discussions with the stack holders, with the persons that will use your programs, architectural concept, shortcuts, how you program will be integrated in the business processes, FAQ, Error messages and so on? Somebody call it "software engineering". It will not be on the full beam at your place, but without that you will have big troubles. Have luck :)

wsargent
wsargent

Read the Great Books: there are too many to mention them all, but the classics: "Code Complete" "Pragmatic Programmer" etc. Join a user group, and/or get involved w/open source project. Look at published coding guides / style guides. Zend has an excellent PHP coding guide. IBM, Sun and possibly HP have high-quality programming tutorials. Understand the difference between educational/sample code and production code. It is much easier to judge the quality of the former. Learn something about the history of language and technology development to understand the problem they were intended to solve. Know that your attitude - your desire to do a good job - is a major factor in the quality of your results.

ivank2139
ivank2139

Study the online ebooks and learn to use PMD, Findbugs and maven for the reports.

Lasea
Lasea

Sometimes being thrown in the deep end is just what you need to pick up skills quickly. It forces you to learn. Make use of forums when you have a specific challenge, you will be surprised by some of the quality these can give.

jfisher
jfisher

This is why I have strongly urged a few students, friends of my kids, to take a look at engineering schools with a co-op requirement. The University of Cincinnati, (yes,yes...my alma mater), has been requiring co-op for all engineering students since 1906. Professors I have met from several universities are both knowledgeable and dedicated, but they cannot provide the experience that a real-world job does. Unfortunately, many students are loathe to sign up for a 5 year program when they can get a BS in 4 years elsewhere.

thelalj
thelalj

Don't be afraid to make mistakes - but only in an environment where you can control the consequences. From experience, one learns best from one?s own mistakes ? but it?s better if it doesn?t lead to being shown the door. Also, get a development methodology you?re comfortable with ? you may have to handpick small parts from differing methodologies.

mdlawrence
mdlawrence

I am a big fan of the book "The Pragmatic Programmer: From Journeyman to Master" - it's centered around the programming craft in general rather than specializations. I have recommended it to junior level programmers I've worked with over the years, and they usually seem to enjoy it: http://www.pragprog.com/the-pragmatic-programmer

Mike Page
Mike Page

I have been in the same situation for the 22 years since graduating from college. What helped me evolve as a programmer was reading a lot of books on subjects such as object oriented design, project management, UML, etc. Then I applied what I learned in my job. Also, I have a very experienced programmer friend. We discuss software architecture and help each other solve problems over the phone. Being a programmer is a long journey, and continuous learning is very important.

David Stratton
David Stratton

One of the best resources on the web is Stack Overflow (http://www.stackoverflow.com) This is a community forum where you can ask questions and get points for asking good questions, and also for giving good answers. The point system seems to be a very good thing, as it plays on our desire for status and reward, so the community is very active. I strongly encourage anyone without guidance and tutoring to become familiar with the site, as you'll have a whole community of developers eager to help you along.

jvansanten
jvansanten

I second y0shi's comment. A lot of developers at all skill levels have typically been involved in these (when they're not working 90 hour weeks). For many in your situation is the "gathering around the water cooler" that's missing from solo work -- either as a consultant or an FTE. Those are all the right questions!

y0shi
y0shi

Join a local development/programming user group. Learn and use naming convections, formatting, and version control.

mjstelly
mjstelly

"When it comes to development methodologies, project management, version control, etc., these things don't vary from vendor to vendor or language to language." I'm not sure what you trying to say here. Every one of these vary within their respective areas. Agile vs. Waterfall (dev), SVN vs. Perforce (version control), CCPM vs. Extreme (pm methods). I find it best to have a passing understanding of each, but spend your effort learning just one in-depth. Remember, employers / clients have little interest in an IT "jack-of-all-trades". "... don't try to learn too much at once. " Boy, I wish this were true. I had to laugh at the irony of this last point. In my experience, many of the available tools DEMAND that you learn them nearly in their entirety to create anything usable in a production environment. For example, try learning a little C or .Net. You won't get very far before you realize that the learning curve is nearly vertical. But, don't let this stop you. A high barrier to entry is a good thing for those who can persevere.

mjstelly
mjstelly

To extend Tzekov's metaphor, a solo developer must think of her/himself as a sole proprietor of a business because you are. You are in the service-provider business. Just as a small business owner must be owner, bookkeeper, and "chief cook and bottle-washer", I, too, must be programmer, business analyst, customer service rep, help desk staff, and sales rep for my company of one. Remember that before taking off on your own. If you've only ever worked in an established business's IT department, you may not realize how much work occurs outside the walls of your cube.

Jaqui
Jaqui

gnu.org to the list of sites with good documentation for code standards etc. They also have a plethora of free software / open source software* projects you could do some volunteer coding on. :D * Free Software and Open Source Software are not necessarily the same. Free software isn't a cost thing, it's a freedom thing. The term Libre Software came into being to help differentiate Free software from Open Source Software. This caused the term F.L.O.S.S. [ Free / Libre Open Source Software ] to start being used.

Justin James
Justin James

I heard of this book ages ago, but I never read it. I'll add it to my "to-read" list. I also have a copy of "Rapid Development" on my shelf that I've been meaning to read... J.Ja

mjstelly
mjstelly

After being laid off in June '09, I had no choice but to fly solo. It hasn't been easy or lucrative BUT it has been enlightening. It seems my efforts have begun to bear fruit. Someone gave me the break I needed. I took it and ran! Here's what I learned from that experience: basic PHP, Zend Framework, Zend Studio, jQuery, SVN, #zftalk and #php on IRC, stackoverflow.com, and how to keep asking even though you feel like an idiot sometimes (oh, and that some childish netizens love to pounce on newbies, but that's another story). To whomever asked the original question, I found some other outstanding resources if you find you need to leave that place out of fear of stagnating: mashable.com, nobjob.com and oDesk.com. In fact, I got my current gig through nobjob and I'm billing time through oDesk. They rock! Good luck.

Insuranceman2
Insuranceman2

It's a good suggestion, but only if you're a big city programmer. If you're the lead developer in a branch office in a small-market town, or in charge of a small college IT department, chances are you're an hour or more away from a wider group of folks who can help you advance in the field. There ought to be an online mentoring option posted by some ambitious ITer out there to help in this situation, but I don't know any myself.

Rideastar
Rideastar

One of the best ways of learning almost any language / skill / you name it is by joining a team that is doing it. Go to http://sourceforge.net/ and look for a project that might interest you in whatever language. Nearly every OS project needs help - at every level. While they will not hold your hand - most of them are tolerant of mistakes. Once you start working with the code - maintain the same formatting standards they use. Don't get me wrong - there will be a lot to learn - but you will be learning from some of the best in an international team. Many have a dedicated IRC channel for communicating where you can get/give help when stuck or about anything. Obviously - you do not want to join a team that has only 1 developer or something that has not posted anything in a year - so pay attention to the projects specs.

DaemonSlayer
DaemonSlayer

nobjobs.com is as well, A WhoIs at domaintools.com states: NobJob.com is for sale The owner of the domain you are researching has it listed for sale. ...and going to the site doesn't give what you'd expect. (Advert/search page) The other two seem to check out as still good.

donsw
donsw

I fully agree, join an open source team and you will learn a lot and be able to contribute at an ever increasing level. All of the things you just talked about will be there. Most open source use subversion and have coding standards. Once you go through a few teams you will see they all have the same processes.

mjstelly
mjstelly

Now that is weird. I just used it a week ago. That's how I got my current gig. Don't know what to say. Thanks for pointing that out.

Editor's Picks