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've been working as a programmer for almost 3 years now. Goes without saying that this is the first job that I got as a programmer after graduating from college. Anyways, I went for an interview at another company feeling that I need to move on (2-3 yrs is about the norm for a programmer right?) and in the interview I started wondering...

They asked me whether I had any experience in web services, I didn't. And they asked me a whole bunch of other server-side related experience and frankly I didn't know what they were talking about nor do I remember what they went on about.

What I do at my current company is this: We have a few databases, I then write the code for the front end program (Vaadin) and the code to then connect to the databases and do all the necessary CRUD (Create Read Update Delete) functionality. And that's pretty much it...

So what I'm wondering is, is this what the average developer does? Or is there more to it than what I'm doing? There's no way for me to know since this is my first developer job after all.

share|improve this question
16  
There is no 'average developer'. It sounds like you are a bit blinkered in your approach. You need to broaden your view and decide what you want to be as a developer. The scope is huge. Web, Games, Embedded, Physical, Database, Big Data, Apps, Consulting, Open Source, Operating Systems. Think about what you enjoy, what you are good at and why you are developing in the first place. Expose yourself, don't wait to be exposed. –  CodeBeard Sep 19 '13 at 5:14
    
Thanks for the reply @CodeBeard, so hearing what I do, where do I fall in currently? Web? I don't want to do Games, Open Source, Operating Systems or Consulting. All in all I'd like to stay in the web side of things. So with that said, and Java being my primary language, what should I aim for? –  DeanGrobler Sep 19 '13 at 5:30
2  
Well, reading your comment below you are a junior 'full stack' java based web developer. You need to ask yourself what you want to aim for. If that is a web startup - find one, find out what they want (I think you might be surprised). The JVM has a solid footprint. –  CodeBeard Sep 19 '13 at 6:04
2  
Oldie but a goodie: Five Worlds. I'm sure some enterprising blogger or nine will have updated the idea many times since... –  AakashM Sep 19 '13 at 8:02
3  
I would like to add that there is no "norm" to move out of a job. If you job offers you to touch a lot of thing (different language, web, client/server, etc) like mine does, you can stay there forever, learning new things everyday. I think the important thing is that if you feel that you are stuck and that you don't learn anything new, move on! And never forget to read, read, read! –  Jean-François Côté Sep 20 '13 at 19:26
show 2 more comments

closed as off-topic by user16764, MichaelT, GlenH7, Jim G., Ozz Sep 26 '13 at 8:51

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – user16764, MichaelT, GlenH7, Jim G., Ozz
If this question can be reworded to fit the rules in the help center, please edit the question.

8 Answers

When you were looking for your first job as a graduate, you were in a very lucky position. Your interviewers expectations of what you already knew were low. They probably expected that you had some experience with a programming language similar to one they used and that you showed promise as a programmer.

Now, you are looking at applying for jobs that pay more (and expect more experience). They are wanting to pay for someone that already knows a bit about web services, or XAML, or relational databases etc...

You have a choice to make. One approach to your future is to specialise. Focus on one area, become a real technical expert, pay for yourself (because employers rarely do) to attend conferences in this area etc.. That way you will continue to develop your skill in database applications. If you succeed, you could have some very high paying jobs in the future, but when it declines, it will be hard going to find paying work, never mind at a premium.

Or you can develop a wide spread of skills. Currently focus your job search on projects looking for people with database skills, but their product has some web stuff too. Over time learn about the web side of their product and add some web skills to your CV. In 3 or 4 years, then move to another company and add some experience in another sector, and so on. With a track record of reusing a broad range of skills and picking up a new technology quickly you will always be able to find work, but probably never be the "technical expert" that the company depends on, and pays over the odds for.

share|improve this answer
    
Great reply, thank you very much :) –  DeanGrobler Sep 19 '13 at 8:17
add comment

WTF ? I thought I was the average programmer, writing and optimising computational electromagnetic inversion programs for geophysical applications. Well sure, not everyone works on computational EM codes, but everyone works on serious number-crunching for large parallel computers ? That's what computers are for.

But seriously, I think it's more typical than unusual to be a programmer in a niche, as you describe yourself. Better to be a master of your own universe than a jack-of-all-trades (that right there is an opinion and others may disagree). And some niches (all this web service stuff) are larger and offer more job opportunities (right now) than others (comp EM, say).

And then some niches (eg web services) are so big that they scarcely fit in a niche at all and so widespread that you have to stick your head firmly in the sand to be unaware of their existence and content. So you really should start reading around, maybe even dabbling in in your own time, some of the other things that are going on in the wider world around you. Have a scan through the job openings in your area, see what topics are most in demand.

Don't forget that coding is only a part of what professional software developers do, there are all the other skills and activities, such as writing documentation, testing, design and analysis, time management, bug-hunting, version control, ... Those are common professional skills applicable in any niche where you find yourself working.

share|improve this answer
    
Okay so it's clear now that you don't get an "average developer" lol. Everyone has their own niche just like I do at the moment. Bearing in mind I'm still a junior, forgive my being naive. But if my aim was to be working on projects similar to say.. Facebook, twitter, and all these types of web application start-ups you see nowadays. Am I from a technical standpoint on the right track knowing HTML, CSS, jQuery, Java, SQL etc? (excluding the web services now) –  DeanGrobler Sep 19 '13 at 5:41
3  
You've just asked a specialist in high-performance numeric computing how Facebook and other such trivial systems are developed ! I would guess they don't use a lot of Fortran+MPI ... –  High Performance Mark Sep 19 '13 at 6:43
12  
I think that wrapping up everything we do in the role called "Programmer" is like wrapping up the work which architects, construction workers, surveyers, eletricians, plumbers into a role called "Builders". The main difference being that people can understand the differences in construction roles. –  Neil Sep 19 '13 at 7:22
    
Since when web services are a niche? –  CodeART Sep 19 '13 at 7:55
    
@Neil Very nice comparison –  DeanGrobler Sep 19 '13 at 8:16
add comment

It sounds to me like what you are being exposed to at work is really quite narrow. This is not really your company's fault, they have a right to pay you to do what they need you to do, and many companies don't care to use anything other tech than what they are already used to. It works, and they are afraid to break it because their business depends upon it. But still, you don't sound like you are really growing as a programmer, and that's not good for YOU.

That having been said, in my experience, a good programmer always has a project or three going on the side. Some do this to keep learning newer technologies, or to support their other hobbies or vices. But since no one will be paying you to do this (most likely, if they do, dang, I'm jealous!) you will need to figure out what interests you enough to keep you motivated and working on whatever technology you choose. So choose wisely, and have fun!

share|improve this answer
add comment

As you can tell there's no such thing as an average developer and if there was, everybody would be better than that.

Your company/job does things in a particular way and that's what you've learned. Looking for a job that can stretch your skills and offer mentorship is what you should be looking for and not just scratching your 3-year-itch.

Speaking of looking for another job, did you read the requirments for the jobs you apply for or did they mention technologies outside of what was posted? Something doesn't add up there.

Identify something you would like to build and do your research to learn how to do it. Just about everything with some type of computer chip had to be programmed at some point. The way the market is right now, there isn't even such a thing as an average smart phone developer.

share|improve this answer
add comment

Sometimes I think it's a blessing to have a programmer fresh out of college that hasn't been corrupted or diluted by the real world and bad programming ideals. When I recruit for entry level, we concentrate less on things like Syntax, and methodology, and different language-specific knowledge. It's like having a blank slate or a unsculpted/unmodeled wad of clay, where you can mold or curve to adhere to your company's specific programming styles and/or methodologies. You check to see if they are reasonably intelligent and adaptable. If they can't adapt, they die.

That being said, there is no average programmer, or atypical programmer. This field is such a huge field with so many nuances, each company has a different culture or expectation from it. There are some company's that use Extreme Programming, and code and fix, while you have others that are more methodical with Agile/SCRUM or specifically outlined development phases in their SDLC. Some company's spend 90% of the time planning, and 10% of the time coding, while others start coding with little to no planning! You can take two senior level programmers or coders, and compare their code side by side, and chances are their styles and attributes of their code, depending on the complexity of the project will be different. The environment attributes and factors profoundly impact the coders.

I found that changing your culture and by moving constantly. you don't remain stagnant. After you stay at one place long enough, the culture of the place you're at becomes your de facto standard. CRUD is the fundamental of database programming, but there is so much more than just that. As you progress and develop as a programmer, you'll evolve. Just don't stay too hell bent on one methodology, and be capable of adapting. Remember, adapt or die!

share|improve this answer
add comment

The more I learn the more I understand how little I know. You will be lucky to know few percent of what is out there. In regards to interview, I strongly suggest reading up about technology the company uses. Job agents should provide you wit this info as it's in their interest for you to get the job.

It's really difficult to quantify what average developer's skill set might be. It might be a good idea to search on google for developer CVs and see what comes up. First two results that I got after googling for '.NET software developer':

http://www.chrishambleton.com/software_resume/Resume/tabid/2476/Default.aspx http://www.pmunin.com/Resume/Printable

share|improve this answer
add comment

"Web" is a big thing right now. (And I'm saying this as a user, not a programmer.)

The other thing of note is that people want programmers with "server side" experience. You, and many others are on the "client" side. But companies want programmers who can "dish it out" more than the ones who can take it.

You received good guidance from the interview. Too bad you didn't get the job, but use this as a spring board to start moving in the right direction. With three years, you have enough experience to be good material. Just don't let it become five or six before you make your move.

share|improve this answer
add comment

Yes, besides some study of computing history I suggest to look at the writings of Dijkstra. Especially on Computer Science and software engenieering. What do they mean and how they relate to each other. And how all that fits into software industry(which you are trying to get comfortable with) http://www.cs.utexas.edu/users/EWD/

share|improve this answer
add comment

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