Take the 2-minute tour ×
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 recent college graduate (last May!). While I was still in school, I wanted to make sure that I had a job before I graduated, and very early (probably too early) in my job search I settled on one in a region I'd been hoping to move to after undergrad.

However, I've been second guessing this decision for months now, for several reasons. One is that I'm not very challenged at work, and I feel like I haven't improved much at programming since starting here. I can always make time to work on open source (and have in the past) outside of my job, though, so I do have a venue to get around this disappointment. More importantly, I'm worried by the fact that my job is basically to work on a creaky old Perl web application (using Mason and a weird in-house ORM). Am I shooting myself in the foot here by working with a technology that's no longer popular, and won't really help me out getting a job in the future? I rarely see Perl jobs, and when I do, it's usually doing something I'm not interested in (front-end web development stuff). Systems programming, visualisation, network programming, or at least backend web development stuff are the sort of topics that I'd actually enjoy working in -- it doesn't seem like my current work experience is helping me towards positions doing any of these things.

share|improve this question
11  
Are you shooting yourself in the foot, no, of course not. Somebody has to do what your doing, sometimes you have to take these sort of jobs to get experienced, BUT if your unahppy look for other work. It is possible to both like your job and get paid for it. Not every job is going to provide a challenge, thats just how the world is, there is nothing wrong with using in-house tools and Perl. –  Ramhound Dec 13 '11 at 20:49
10  
At least it's not MUMPS ! –  Martin Beckett Dec 13 '11 at 20:52
1  
I am unhappy, not because of Perl (which is actually kinda fun), but because I'm not growing as a programmer. I can work on things outside of work to improve myself -- it's just very hard, since I have little time (I'm also professional musician, so I'm gigging, teaching, recording and studying at a local conservatory for most of the time I'm not working). I guess what I'm saying is I want a job that will work for me in this respect, and I'm afraid of how my current position will affect my ability to find such a job. –  schwern Dec 13 '11 at 20:58
5  
@schwern: The I would not worry AT ALL. Just put those languages in your CV and apply for your next job. :-) –  Giorgio Dec 13 '11 at 21:06
7  
Perl is essentially the duct tape of programming it never hurts to know and can be and is used for pretty much anything. –  Ryathal Dec 13 '11 at 21:19
show 8 more comments

12 Answers

Schwern,

I used to think exactly the same as you in many ways. I came out of University with strong skills in Java and Python. My first job involved working with Delphi. I was immediately worried about this, but as I had no employment and was fresh out of university, I decided to bite the bullet and take the job as I would have experience working as a programmer regardless of the language.

My second job involved working in a large bank doing Smalltalk development most of the time, with a bit of Perl and Java. My friends laughed at me as I couldn't get a job as a core Java developer and told me I was damaging my resume. I'm now looking forward to starting a new job in a few weeks that has all the technologies I want to work with and has a better salary to it.

Obviously, I can't say your experience will be the same as my own, but there are a few lessons you can take away from it to mull over. Firstly, programming is secondary to what you do. If you have good domain modeling skills and can learn business processes quickly, that will pay off more dividends in the long run as opposed to avoiding learning how the business works and spending more time majoring in minor issues, which I've seen in most places I've worked.

The second thing you need to remember is that your on another person's clock. If you want to have your own say on what to do and have full control over everything, then start your own business. I've watched far too many people join a company and moan about legacy tech, I did it myself when I first graduated. Typically these people are viewed as toxic to the workplace and don't last very long. The key thing to remember is that the technology is there to support the business, not the other way round. The best you can do in these situations is create opportunities from them, otherwise, it's time to pack up and leave and seek alternative employment, but your going to find every company you work for has legacy issues of some kind.

Above and beyond what I've brought up, I will say that you don't want to appear to be 'institutionalized'. What I mean by this is that you are stuck to using particular languages and technologies and can't get beyond that. You want to cultivate some flexibility in your career, that includes domain modeling skills. Since your starting off in your career, I will point you at some good material I wish I had available to me when I started:

The Passionate Programmer

The Pragmatic Programmer

Domain-driven Design

The Career Programmer

share|improve this answer
add comment

Dissenting with everyone else, this job could very well be hurting you. I regularly interview candidates who are trying to get away from their first job after college. They usually were stuck using a language that tends to be used for maintenance plus a ton of in-house "frameworks". In other words, they have learned how to use some toolkit they will never have access to ever again, wasted time as far as employability goes.

On top of that, most maintenace shops I've been exposed to do not teach you the skills you need to be part of a real development effort. When I'm interviewing someone coming out of their first job, I want to know they understand:

  1. Some common software development lifecycle
  2. Source Control
  3. How to test code (TDD, unit tests, selenium, anything like these)
  4. OOD principles (For example: In college you hopefully got exposed to design patterns, now show me you have actually used/seen them)
  5. Basic understanding of enterprise architecture (For example, what is a 3 tier system, and have you ever worked with one)
  6. How to work with a team

Most of these skills I picked up on my first job by being exposed to smart people, and working with them every day. If you don't think you are learning anything (about software or business), then start looking for another job.

Edit: As a side note, I remember the job hunt out of college. I was at a career fair, and started talking to some company that worked with law firms. I started asking them about their development practices, and it came out that they doing everything in VBA. I thanked them for their time, and got out of there.

share|improve this answer
    
+ for your VBA story. I don't mind VBA, per se, but making a career out of it? You did the right thing. –  Mike Dunlavey Jan 3 '12 at 20:53
    
I partially agree with you, but I think that most programmers have a lot more flexibility than they exercise, and a lot of the things you mention are things that the poster could bring in himself. Start using source control, even if the company isn't. Encourage others to follow suit. Start doing testing, start trying to improve things. If what you're working on sucks, make it suck less. –  Christopher Cashell Mar 27 '12 at 22:24
add comment

What you call "out-of-style" tech is what the majority of this industry is about. The reason is simple: there is more development done to maintain existing systems than there is developing new ones. And even when developing new ones, oftentimes they will be developed using technologies that are older, but proven and that fit into a larger architectural landscape. This is just the reality of software development. Few developers are in a position that they are always able to work on the "bleeding edge" of technology.

In my opinion, there is less glory in working with [insert super-cool new technology here] than in delivering on time, on budget and according to expectations. That is something you can only learn through experience and that is completely technology-independent. I'd say you are on a good course right now. Keep learning the trade and art of software development on the job and keep up with the technology curve as best you can outside of work. That's how most of us do it.

share|improve this answer
    
+ Technical styles change all the time. What's cool today will be be nobody-does-that-anymore tomorrow. One should just be competent and professional. When every new gee-whiz-bang thing comes along, know how to separate the value from the fluff, and know when to use it and when not to. –  Mike Dunlavey Jan 2 '12 at 17:32
add comment

If you don't want to work in Perl anymore that's fine.

Just because Perl doesn't have a lot of flash currently, doesn't mean that it isn't popular.


I would like to point out that Perl's momentum has increased dramatically in just the past 5 years.

There have been more stable releases of Perl in each of the past 2 years, than there have been in any of the previous years.

Moose is considered by most, to be among the best Perl object systems to date, and it only dates back to early 2006. The next most popular object systems are basically simplified Moose object systems.

If you want proof of how popular Moose is, see how many CPAN modules depend on Moose.

Among those modules requiring Moose is Dist::Zilla, which has always required Moose. In case you didn't know, Dist::Zilla is arguably the single best way to build, and release CPAN modules.


Also there are still some cool new projects that are using Perl. The Lacuna Expanse for one.

share|improve this answer
add comment

First of all, stop thinking that your job is not bringing your further towards your dream job! Every job does! Everything is only up to you!

  • This is your first job after your graduation and everyone can understand that you didn't have a good choice or might have considered some other factors, like moving to the place where you'd like to stay. This is a valid "excuse", you can mention it if directly asked during a job interview.
  • Every programming job contributes to your experience as a developer. There are many language agnostic things every developer has to learn on his own (implementing loosely coupled architectures, debugging and profiling the code, writing unit tests etc...) that can be learnt in ANY language, and Perl is not the worst one to use. I used to practice all three in VBA developing for MS Access and that was much fun.
  • This is not productive, after all: as long as you consider your current job being boring and useless you won't learn much from it. In many cases your future employer would be interested your "learning curve" -- how quick you are at mastering new technologies, not at how boring you last job was!

So, the ways that help you out are the following:

  • Try to master the language you are currently working with as deeply as you can. Watch the perl tag on SO site and try to answer the question people ask there. Read papers on many developer resources etc. Try to become a guru in this area!
  • Perl is a multi-paradigm language, now supporting OOP and many other paradigms. Try to split those from the language and look at them individually. What type of inheritance does Perl have? What are different types of access modifiers are available here for classes and class members etc? Is it strongly typed or not? Many language function a similar way, as long as you know how it works in general you'll easily capture the difference in other languages.
  • Acquire a deep understanding of your current system: why is it implemented in Perl? How are different aspects, like performance, security, reliability solved here? What are unsolved problems, caveats, potential breaches? How would you cope with them? Maybe there there are some reasonable refactoring of the current code base is needed?

And don't stay on this job for long if you are dissatisfied with it -- just enough to learn basic skills, to show your willingness to learn and your will-power to overcome the dullness of your tasks!

When you apply for your second job in more or less near future you still can be treated as a junior developer! You should try to emphasize what you have learned on your first job, how you coped with your problems of maintaining legacy code and brownfield system, how you managed to extend your horizons and what new cool features you have learned there.

Never, never tell during the job interview that you are bored with your current job and that is the reason why you're looking for something else. "Boring" is so subjective and often means that you are just not good enough to stand the challenge of learning the things in your current position and applying them accordingly. Show your willingness to learn, to expand your knowledge and you'll get your dream job, I am sure.

share|improve this answer
2  
+1 for any advice that suggests graduates follow decisions through, even if they regret it later on. I've lost count of the number of candidates I've interviewed who shot themselves in the foot at the interview. If a candidate admits to being bored doing the level of work expected of a graduate, then it sits in the interviewers mind that they'll be satisfied if I employ them. My advice to any new employee, grad or otherwise, is to look for challenges with the job, and to engage fully. At worst they'll have earned a great referral, and at best, advancement and greater challenges. –  S.Robins Dec 14 '11 at 0:17
    
Your enthusiasm just made my day. +1 for very sound advice. –  Raveline Jan 2 '12 at 16:00
    
I regularly interview candidates for one of the largest software companies, and it definately does hurt a candidate to have come out of college into a job that is essentially a holding pattern. –  Chris Pitman Jan 2 '12 at 16:52
    
+1 - Strong people don't sit there and wait for opportunities to come knocking, they get up and create them. –  Desolate Planet Jan 2 '12 at 18:11
add comment

First jobs in the software industry are often crappy jobs. While learning some programming skills will happen, the more important education that you're receiving is how to work in a company.

Showing up on a regular schedule, working 8+ hour days, using source control software, dealing with bosses & co-workers, getting that 3am call because the production server has gone down and it needs fixing... those are the skills you're learning from your first job.

That being said, if you're bored and not enjoying what you do, quit. If you feel this job won't help you get into your eventual career goal, quit. There's plenty of jobs out there for talented people.

share|improve this answer
add comment

Look for opportunities to build and maintain experience in other languages, while showing that you are a dedicated employee who can rise to the challenge. Drive yourself to maintain a steady work output of the highest quality you can achieve, and use any slack time to either take on more work, or if allowed to create things that will allow you to develop skills and knowledge in other areas. Even a simple demo that solves a real business problem in a different way (with a more en-vogue language) will allow you to improve skills, and show your boss that you are actively thinking outside the box. Just be careful to avoid being seen as shirking your other duties simply to work on side-projects.

Dedication is the key. Grads aren't expected to have years of experience in lots of languages. You can always spend a year developing essential communication skills, and showing that you can step up to the challenge, even if the challenge is to look beyond the stuff you feel is "boring". Learn how to up-sell your skills when it comes time to move on. You are expected to continue learning on the job, and to show the next employer that you are actively seeking to improve skills.

Remember, nobody likes to employ a "know-it-all". I've always looked to hire people - even for senior positions - who want to learn and grow further.

share|improve this answer
add comment

Somebody has to pickup the trash, clean the toilets, dig ditches and work at McDonalds. Right now you are doing the software development version of that.

There is NOTHING wrong with recognizing that and aspiring to something greater!

What you do now definitely shapes what you do tomorrow, next year and the next ten years!

Anyone else that says different is trying to keep you down or make themselves feel better for being in the same depressing place!

As for Perl, it is out of style in "Career" sense of the word. As in unless you want to make a career as being the Perl guy, start learning something newer and more en-vogue. Python, Java, C# will open more doors and be more marketable or something that is on the cusp of hitting it big in a few more years like Erlang.

share|improve this answer
    
-1: Somebody has to pickup the trash, clean the toilets, dig ditches and work at McDonalds. Right now you are doing the software development version of that... What you do now definitely shapes what you do tomorrow, next year and the next ten years! - Great... So if I'm cleaning toilets or flipping burgers at McDonald's, where will that leave me in ten years? :? –  Jim G. Jan 2 '12 at 4:59
    
There is nothing wrong with that work, you can't start from the top with no foundation. Someone has to do that work, the important takeaway from my answer is, there is nothing wrong with aspiring to something greater, which you completely missed. –  Jarrod Roberson Jan 2 '12 at 8:00
add comment

I'll consider different aspects of your question separately:

  1. Your first job is never going to be very challenging. The reason is that university is teaching you stuff you'll need in 30 years, while companies must work with technology that is already available. It's hoped the 30 year stuff is more advanced than the current state of the art. The half year timespan also causes work to be different than what you're used to in university.
  2. Learning is pretty much done on your own time. This is unfortunate fact, but the cost of people is just so high that they must always be doing something productive. Best alternative would be if can combine learning and productive development, but then you'll be working with tech you don't know yet, and it can cause problems simply because you don't understand the tech you're using. If you want to create stuff that actually works, the learning has to be done outside of production environment. In many companies this just means it's your free time.
  3. You should consider perl just as a challenge -- how to improve your work practices so that those will be useful not only to perl, but any new system you're going to encounter in 30 next years.
  4. When learning new things, focus on the fundamentals. Perl has regular expressions, hash tables and many good data structures. All knowledge of how to make best use of them is useful in the future.
share|improve this answer
    
Point 2 scares me somewhat. I've always had a pretty good knack for programming since I started when I was very young -- it wasn't something I had to work very hard at, even at university. Playing music, which consumes the vast majority of my free time (practicing, teaching, studying, recording, etc.), seems to be in the way of my career aspirations. Does a job in which I can still learn a lot (not just about process, but hard skills) exist anywhere? In academia, perhaps? –  schwern Dec 13 '11 at 21:29
1  
Of course there are jobs that provide learning opportunities. Not only are good developers expensive, they're also rare - many places will look for people to train up to higher levels when recruiting. This could be either in-house via mentoring or with external training (or both). –  FinnNk Dec 13 '11 at 21:39
    
The music stuff is also going to be useful. You might not notice it yet, but it'll teach you accurate timing and stuff that people outside music circles need to use heavy math to solve. Advanced programming is very heavily dependent on both aspects. –  tp1 Dec 13 '11 at 22:11
2  
@schwern The key is to find a job where you work with smart people. Then you will learn just from being exposed to them, as you go about your day to day job. –  Chris Pitman Jan 2 '12 at 17:13
add comment

Code a bit outside of work, but I don't feel you're hurting yourself just yet. You're a recent hire so you're an entry level developer - at this stage of the game you should be learning things like Development Cycle and how things "Should" be done.

Pursue some things outside of work so you can pad your stats. In my opinion, you can either code or you can't. Language and syntax can be learned - but the ability to think and solve problems on your own can't.

share|improve this answer
add comment

There is still plenty of demand for people good with perl. You will find that the networking industry, and many *nix based sysadmin jobs use perl extensively.

That being said, I echo others that suggest pushing your own boundaries. Even if you are just working with perl, find ways to optimize and streamline the programs. For example if you see a linear approach taken with a program (often the sign of an inexperienced programmer), can you find a way to modularize the code to improve maintainability? The basic ability to read a bit of code, regardless of language, and optimize and transform it into better code is a highly sought after skill.

share|improve this answer
    
To be fair, he didn't knock Perl, he was just saying that's not the kind of work he wants to do in the future. So the fact that there are Perl jobs out there is secondary. –  R0MANARMY Dec 13 '11 at 21:06
    
@ROMANARMY from OP: " I rarely see Perl jobs, and when I do, it's usually doing something I'm not interested in (front-end web development stuff). Systems programming, visualisation, network programming, or at least backend web development stuff are the sort of topics that I'd actually enjoy working in " hmm... not what I read... and there are jobs in those areas.. e.g. networking industry, as stated. I work for a tier 1 Internet company, perl is used extensively for back end work. –  Bill Dec 13 '11 at 21:15
add comment

If I were you I would certainly consider doing some after-work reading and programming in another language (e.g. Python, Java, Scala, Ruby, C++, and so) so when you apply for another job you can show that you have knowledge about languages that are in wider use than Perl. Also, if you have other interest areas, I would definitely do some extra reading.

On the other hand be aware that many programming techniques you are using are probably the same regardless of the programming language.

So, again, my suggestion would be: don't worry too much but start learning something new in your spare time. As soon as you have gathered enough knowledge you will surely find a more exciting job.

share|improve this answer
add comment

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.