Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a software Engineering student having my internship this summer.

The company asked me to choose one or two skills that i want to master and they will coordinate me and give me small tasks to medium projects to master them.

Should I continue with web development and learn .NET given that I've been working with PHP for 2 years OR look at entering the mobile development world and learn Android.

Any advice guys ?

share|improve this question
This kind of question is off-topic for this site. See meta.stackoverflow.com/questions/38854/… and maybe take a look at careeroverflow.com – Cameron Skinner Jun 28 '11 at 6:47
2  
First of all, learn to use upper case not only for programming languages but also for the first word of a sentence and the "I"... – WarrenFaith Jun 28 '11 at 8:12
Read about as many technologies as you can until you feel exited. – user2567 Jun 28 '11 at 8:50

migrated from stackoverflow.com Jun 28 '11 at 7:58

3 Answers

You might want to take advantage of learning what the company you are interning at can best teach you. Their staff will probably be most familiar with the development tools, languages, and methodologies that the company uses, so learn those and take advantage of the ability to interact with people with a good deal of industry experience.

I would highly suggest that you meet with the HR department and/or the person/people you will be working with on your internship. Try to find areas where the needs of the organization and your interests meet, or at the very least, have something in common. Try to focus on those areas - it'll not only be of a benefit to the organization, but you'll learn something and have a better chance of liking the work you are doing.

share|improve this answer

To be a good programmer, there's three things you need to be good at:

  • Programming languages and technologies
  • Theoretical background (math, algorithms, data structures, design strategies, etc.)
  • 'Meta' tasks: organizing your work, written and oral communication, estimating time and complexity, trading development speed against code quality, etc.

Programming languages and technologies change fast, and most of them can be learned in a few weeks as required; while it is good to know more than one of them, it's something you can learn in your own time, or on the job. I wouldn't spend the limited time you have on this (not as your main target at least).

Theoretical background, you should have learned an impressive amount of that by now.

The third part however is something that cannot be taught in school, and it is hard to learn these things on your own. IMO, that's what you should focus on.

share|improve this answer

The main things you're going to learn in a real world environment are hard to state in this way.

They're about working within constraints (timescales, requirements, technologies) that aren't idea and working on a scale that you won't have experienced before. University projects are at most a hand full of people part time for a few weeks or a couple of months - that simply can't compare to the compexity you'll see in a system which has had ten developers working on it full time for a year, or something that's been kicking about for five years having bits and pieces bolted on.

It terms of things you can easily state, I'd pick one or two solid technologies and say you want to work with them. Pick one core programming language you already have a grounding in (Java, C++, .NET would all be good) and one application of that (so databases, web or mobile). Personally I wouldn't start something completely new as most of what you're going to learn is not strictly technical so you don't want to have the learning curve of a language on top of that.

But other than that I'd say you want to work on something with other programmers (who you can learn from and learn how you interact with) and work with larger systems - either enhancing something that already exists or interfacing with something else.

That's the stuff university can't teach you so that's the stuff I'd try and learn on a placement.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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