13

About five weeks ago, I began an internship at a small (~ 35 total employees) software development company. I am a non-traditional CS student in that I went back to school after starting a family and a most interested in work and gaining experience. This internship is the closest thing I've had to a "real job" (previously I waited tables, etc).

So far, I've only been reading lines of code for one of the company's products. The three developers and my boss are always pretty busy and aren't really "available" to teach me. I don't really feel like I'm doing anything, the benefit of being immersed in professional code notwithstanding. I do know that the expectations for interns (in any field) are quite low.

Since my goal is to find full-time work at the end of the summer, my biggest fear is that this internship won't provide me with the experience I need as leverage for landing a job. I'm hoping that my experience is normal and that any interviews I have for entry-level developer positions won't feel like a meeting with "the Bobs" from Office Space ("What exactly would you say... you did there?").

What should I expect from my internship?

Edit: to clarify based on some of the answers, I do believe generally that this job is basically going to be what I make it out to be. I can create opportunities to learn and grow if I choose. My question is not so much "I'm not writing 5-star apps, does anyone feel sorry for me?" but more along the lines of "Is what I'm experiencing within the range of "normal" for development internships (mostly independent, lots of reading existing code, not really writing anything), or should I start creating more opportunities for myself?"

Thanks for the responses.

UPDATE 8/12: At the conclusion of the internship, I was offered a full-time position with the company. So, overall, a success story.

  • 1
    So you aren't fixing bugs, putting in enhancements or new features or clarifying requirements at all? – JB King Jun 24 '14 at 18:53
  • I wrote this answer programmers.stackexchange.com/questions/103758/… on programmers a while a go. It's not a direct answer to your question. But I feel if you do what it says then you're likely to be doing exactly the right thing for your career. – Preet Sangha Jun 25 '14 at 2:17
  • @JB King: I am literally reading code most of the time. Lately my boss has been taking some time to explain some of what the company does (it's fairly specialized), and so I'm starting to get the sense that I probably won't be doing much writing for a bit. I just don't want to be in a position where completing tasks in the internship gives me skills that the broader industry doesn't really care about. Since I'm new in the field, I have no way to evaluate whether this is happening. – Joseph Jun 25 '14 at 16:08
  • @Joseph Good news, Congratulations! – teego1967 Aug 13 '14 at 18:28
13

To answer your question without getting preachy and condescending: yes, what you are describing is within the range of "normal".

Some places are better at working with interns than others. The success of an internship depends on a lot of things, mostly the intern, but also the aptitude of the senior folks and their ability to mentor people that are new.

You might have dropped into a busy shop that isn't used to having interns. That's OK. Find something to make yourself useful. Recognize that you might end up doing things that you did not think were "development" but which are vital to the process of shipping a product. As others have mentioned, there is testing, but there are other things like bug tracking, supporting end-users, performance metrics, requirements capture, and perhaps a whole lot of stuff dealing with data for the application: entry, manipulation, reporting, storage.

  • 2
    I appreciate that you did simply blame me for not trying harder or offer trite conventional wisdom rhetoric. You addressed my chief concerns, and I appreciate your point about learning skills that are vital to the process but aren't necessarily directly "development," because I am doing quite a bit of that kind of thing. Thanks for your thoughts. – Joseph Jun 25 '14 at 15:59
5

You can come on top in this situation but it's primary up to you.

Take advantage of your situation

There are three developers and you have the privilege to read their code. Most of the time when people start to learn on their own they sink themselves in guides and tutorials, most of which are written by people who do not necessarily have the correct background to be writing about the phenomena. You can do a small research about the developers' experience and if they fall under the criteria of being senior developers then you can try to get your head around how they write their code.

Every time a developer in your company is solving a problem in code you should question the code, How could this be written in a better way? If you can think of a solution that would probably be better then you should write emails to the specific developers, asking them questions like

Why did you use method X instead of method Y to solve this problem Z?

It's likely that you'll begin to see how you may have been looking at problems from a wrong angle or you might even find ya self in a situation where the developer could have done something differently. Sometimes you'll get replies like "Maybe it could have been done like that", in many cases it'll mean that you were right but they're too proud to admit it, you'll have to read between the lines.

The developers are busy, but using email or some kind of a messenger (some companies use Lync is probably the most efficient way to get answers from the developers without disturbing them. If the developers can't even bother to reply to your emails then you can at least do a research on the internet to find in which cases method X or method Y makes more sense to be used.

Give it some time

Five weeks it not a long time at all, most new developers require a year to become semi-comfortable around a system they didn't write. The company probably wants you to become comfortable with the structure of the system before you start implementing something that could be too big for you. If you show decent understanding on the structure of the system then you might get a chance to do some coding.

If nothing changes soon, and you'll be feeling like you have enough knowledge of how the system works, then you should schedule a meeting with your boss (he can probably schedule a week or two ahead) and discuss the matter with him, ask him for a small project or a sub-project so you can prove what you can do.

Write unit tests

One of the best ways to understand how a system works is to test all the public classes and functions available in the system, that way you get a perfect overview of what the system is suppose to do and you'll even have some code to show to your boss and the developers, you'll bring something useful to them as well.

Don't count on the workplace entirely for experience

Being new in IT is rough, getting into software-development with no experience is very rough. Many people (including me) develop small projects at home to gain experience and understanding of how to create full working systems that you can even show and discuss in interviews, even during the time they're still learning CS. You should do this, develop some projects at home, ideally for the web (they are easier to show-off and easier to share) but not necessarily. You'll run into furious errors and problems that you'll be glad to run into at home, instead of at your future workplace, and you'll be able to use that experience as an advantage in your interviews.

Capture your current environment and learn what's right and what's wrong

Having experience of good workplaces and bad workplaces is good, it's important to bring it up in interviews and compare that to the working-environment that you're applying for. If you can say something like

I didn't like working at company A because ...

then the interviewers will see that you have an idea of what you want and you're less likely to be leaving the company. Just make sure to be not too harsh about your old company.

3
  1. Who is responsible for setting your expectations, you or them? If you think it's them, you just gave the wrong answer.

  2. Who is in charge of making sure that your internship is a success, you or them? Again, if you think it's them, you gave the wrong answer.

  3. You ask us, "did I set my expectations too high?" But then, you did not tell us what your expectations were. Just What were your expectations? Nobody can answer your question unless they know what your expectations are.

  4. OK, your management doesn't give a damn what you do. The question is:do you give a damn what you are doing in this internship? If you do, then the next question is, what is it you want to get out of that internship - I am assuming here that you don't want to walk away empty handed - What is it that you want to have learned?

80% of developers' time is spent maintaining code. This means reading someone else's code and making sense of it. Hopefully,you are NOT going to change code that you don't understand. So, in light of what I just said, what's the most critical skill you should pick up from your internship? Can you tell well written code from poorly written code? If not, how important to your career to tell the difference? Can you tell well architected code from poorly architected code? If not, how important to your career is it that you can tell the difference? Here is a hint: if you have to rummage all over a very large code base to make a small change, then the code could be architected a lot better.

Internships are like university - You get out what you put in. You put in nothing, you get out nothing. If you expect a lousy professor to spoon feed you the knowledge, don't be surprised if you have trouble graduating. It looks like these people have abdicated any responsibility toward you. The ball is in your court. Take control of your internship. Take control of your life. Because if you don't, no one else will. Unless they are looking out for themselves, at your expense if push comes to shove.

Coming back to where your expectations were too high. If you expected someone to take care of you including setting your expectations for you, then your expectations just got dashed. It's time for you to step up to the plate, set your own expectations and make that internship work for you. Starting with developing the ability to read someone else' code and not only not being shy about asking for clarifications but being aggressive about asking for them when necessary.

I learned how to write code. But for every line of code I wrote, I read ten lines. Before you can write code, you have to learn to read code. And you can't write well written, well architcted code unless you have figured out what well written, well architected code looks like.

  • With all due respect, I'm not really asking people to "spoon feed me" or "take care of me" or anything like that. I'm really more interested in whether people with experience in the field can testify to the value and marketability of the experiences I've described (or if I need to do this or that thing to gain such and such a skill that is more useful). – Joseph Jun 25 '14 at 16:12
  • All I mean is that I'm not looking for conventional wisdom about "stepping up" and all that. I'm asking about a specific experience and wondering if the industry will find it valuable. Such feedback allows me to 1) adjust expectations and 2) adjust the scope of the work I take on to either a) be more well-rounded or b) reinforce what I'm already doing. Hope that clarifies things. – Joseph Jun 25 '14 at 16:19
  • @joseph YOU are going to have to step up. Unless you want to look back at your internship as a total waste of time where you can't point to a single thing you did or accomplished. If you can't point to a single thing you did or accomplished, don't worry about industry finding your experience valuable - It's not. If all you did was read code without being able to make any sense of it,you did not accomplish a thing. – Vietnhi Phuvan Jun 25 '14 at 16:26
  • " All I mean is that I'm not looking for conventional wisdom about "stepping up" and all that. I'm asking about a specific experience and wondering if the industry will find it valuable." – Joseph Jun 25 '14 at 16:30
3

Not sure what your question is.

To become programmer you need to write code. If developers are too busy to give you tasks to solve, try finding them yourself. If no-one has time to you, go to http://en.wikipedia.org/wiki/Project_Euler and start solving puzzles. No amount of reading code is replacement for writing and debugging your own code.

Afterwards debugging your own programs, you will have better idea why you need coding practices and other rules.

Ideally, as a result of your internship would be to say: I understand (some) business terminology of area X and solved problems A and B, and our process was like XYZ.

Edit after OP's edit: Yes, you always have to create opportunities for yourself, for two main reasons:

  • Only you know what is important and interesting for you, in which direction you want to enhance your skills
  • Nobody else cares.
  • 1
    I agree with finding work yourself if none is given to you. I disagree about Project Euler. That site is more about mathematics than programming. – Radu Murzea Jun 25 '14 at 7:21
  • Many times beginning programmers asked me for training tasks to solve. Project Euler is exactly such collection of tasks. Mathematics is the problem area and that is OK, because everyone understands that area and can start solving problems. – Peter M. - stands for Monica Jun 25 '14 at 12:27
1

Internships can vary pretty widely. Some are do-nothing type jobs (like what you have at the moment), and some can be fairly meaty.

This internship can be a great opportunity if you show some motivation and make it one.

I would do this. Seek to understand the code. Figure out why and how it does what it does. Find problems, potential problems, or ways to improve the code. Show them to the relevant person with suggested fixes and offer to fix it yourself.

Once they see that you are competent and will be a net positive for the team I would be very surprised if they didn't let you handle all the work you are capable of doing.

0

I agree with much of what has been said, having recently been in a similar position I can empathize with your circumstances. That being said it is definitely up to you to make the most of your situation. Much of the benefit and expectation of being in a professional industry is the ability to work without a lot of direction or supervision (not always the case, but perhaps in your situation).

When I realized my situation I started trying to shadow others (look up Pair-programming), and looking for challenges or problems no one else has been able to solve. Having proceeded through a very tough degree and come out the other side, you are more than capable of solving the tough problems they have there as well. The ability to take the initiative will speak volumes to potential future employers and give you experiences that you can share.

Working on both of those I discovered I was pretty good at automation and developed several scripts for their use and learned a great skill, something that later landed me my full-time job now.

Hope this helps. =)

  • The fact that you did not simply blame me is helpful. I did decide to do some Pair Programming with one of the contractors, but he's gone now. Perhaps I can try with one of the other guys now. Thanks again! – Joseph Jun 25 '14 at 15:56
  • Glad it was helpful. :-) I hope all the best for you! – Stephen B. Jun 25 '14 at 15:57
0

Software development at many, many firms is like 70% reading code. Let's be clear on that - what you are doing is much more similar to what a professional programmer does day in and day out.

Secondly, all you really need from the internship is a win. An accomplishment you can put on your resume and interview from. This means you need to write code and put it in production. It can be a project, but it sounds like you're going to need to be proactive. Find a bug in the UI or some system that is not too important so no one has bothered to fix (and therefore plausible that you can fix yourself). Bother your manager or colleagues enough to get their blessing that it's a right-sized project for you - be some bother, because if you are not a bother at all you will have nothing to show for this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.