I just graduated from university with a degree in Computer Science/Engineering and was fortunate enough to land a job working in the pharmaceutical industry as a developer. My title is System Developer I, which will require the following skills:

0-3 years development experience with C# .NET and SQL Server Experience writing T-SQL and stored procedures XML Javascript

I learned of the company at a job fair and was not aware that I would need those skills for the job until after they wanted to set up an interview with me. The interview consisted of talking about my background, an almost-too-simple logic test, and a couple SQL questions that anyone with any experience should be able to answer. I was honest with them and indicated that I had absolutely no experience with SQL Server, .NET, XML, or Javascript, but they offered me the position anyway. Of course, I accepted it, but I am now extremely worried that my skills will not be up to snuff.

I fully realize from reading lots of Coding Horror, Stack Overflow, and The Daily WTF that a degree in Comp Sci in no way prepares me to be a software developer; I further realize that I will be a monumental noob in the presence of people who have been doing this for years. I feel like the only thing that makes up for my lack of development experience and programming knowledge are my social skills, innate writing ability, and humility (at least compared with some of my co-graduates who fancied themselves to be the next Steve Jobs... barf) You will never find me being the prima donna constantly complaining about the system, the language, etc... I just want to do my job like I'm told, work 9 - 5, and go home with my paycheck feeling like I'm competent. If that requires home-study, I'm more than willing because I do love programming and computer science.

So far, I've familiarized myself a bit on using SQL Server Management Studio, gave myself a refresher on basic SQL, and started learning more about C# and .NET using Introducing Visual C# 2010 by Adam Freeman from Apress. Can anyone recommend anything else I can do in the meantime to:

A. Chill the ** out and enjoy my new job without worrying so much about getting canned for incompetence

B. Improve my understanding of design patterns and OOP

C. Get the low-down on writing T-SQL in the most efficient way possible

Thanks everyone.

closed as off topic by gnat, Jarrod Roberson, ChrisF May 29 '12 at 7:46

Questions on Software Engineering Stack Exchange are expected to relate to software engineering within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.


Don't worry yet. Any company that hires a new grad has realistic expectations. Enjoy the time now, because there isn't much you can learn between now and then. Every hour learning on the job will be worth ten after you start.

There are a couple things you can do once you start though...

  • When they start giving you work, do everything in less time than is requested, no matter how late you have you stay. Yes, it is unpaid overtime, but you won't have to do it forever. You just want to establish a reputation for being reliable. (If you establish the opposite reputation, you may never be able to shed it)

  • Whatever technology you are given (and it sounds like you know it) don't complain about it. Just learn in much better than every other new hire. Find the company experts and learn from them. In a non-software firm, you'll be surprised how quickly you can differentiate yourself. Don't worry about "It's not Python" or "I prefer an Open Source Stack" or any of that until later in your career.

  • After you get your technical chops, it's very important to learn the domain of the business. In the end they're not in the business of producing software. Figure out how you can help them make money. Is it shortening their drug development time? Better understanding their customers? Understanding purchasing trends? Cutting out paperwork? All of these require an understanding of technology (How can IT help?) but also require knowing the business almost as well as the people that are doing the job. Don't worry that it's difficult - a CS degree is very hard. If you know CS, you can learn Finance, Marketing, Regulatory Affairs, etc.

  • Related to the above - learn the data of the business first before worrying about fancy GUI tricks. The GUIs come and go, the data model underlying a company doesn't.

You'll never get a learning curve like this again - enjoy your first few years out of school!

  • 6
    I'd be very very wary gaining a reputation of "that guy who works unpaid overtime to fulfill our asinine deadlines". – Ben Brocka May 29 '12 at 2:43
  • 1
    +1 but I'm not sure that "you'll never get a learning curve like this again" - I think it's very similar every time I start a new job. Rarely do I have all the technical skills I need, and I don't think I've ever had the complete domain knowledge. – Kirk Broadhurst May 29 '12 at 3:27

Priority #1: Find a mentor. Make it someone you respect, you like and he/she likes you. It will help if they have a little grey hair -- they will be more likely to be in a position to want to help a newbie.

IMHO, the mentor/mentee relationship is the absolute best way to learn to be a developer, architect or whatever other technical job you want to have. Find a guru, do what he/she does and you will become a guru someday. Books and blogs will help you sharpen your sword, but it takes a mentor to give you your first sword.

I floundered a couple of years out of school before I found my first mentor. It took a few years until we had the "But Master, my skills have become more powerful than yours!" Some years after that, when I started my own company, he came and worked for me.

  • 1
    +1 for mentor. I've learned so much from more experienced devs - they have, after all, likely faced the same problems you will. – Amadeus Hein May 29 '12 at 6:09

Don't worry too much. The experienced programmers read the same blogs you did and know that a comp sci degree doesn't prepare you very well. Their expectations will be low, so as long as you're honest, ask a bunch of questions and work to improve you have nothing to worry about.


I was honest with them and indicated that I had absolutely no experience with SQL Server, .NET, XML, or Javascript, but they offered me the position anyway.

In that case, don't worry about it. They know you don't have experience with these things, so they'll probably provide some training or at least give you some time to come up to speed.

I fully realize from reading lots of Coding Horror, Stack Overflow, and The Daily WTF that a degree in Comp Sci in no way prepares me to be a software developer...

Don't let that scare you. It sounds like you understand that there's a lot that you don't know, so you're ahead of the game. It's a much bigger problem when a clueless someone thinks they know what they're doing -- they don't want to listen or learn because they think they already know it all. It sounds like you'll be happy and relieved when someone sits down to show you the ropes.


Make your working standards clear

If you undercut their time expectations, by doing overtime, they might get into the habit of depending on your unpaid time.

Don't do overtime unless you really can't make the deadline, overtime means something is wrong with your time management, or the deadline was unrealistic in the first place.

Understand the Platform on your own, as much as possible

learn and understand the technology they use, quickly. be as self-reliant on this part, since most of the .net documentation exists on msdn

if there are parts of the platform, which are proprietary and written by internal developers, see if you can gain access to the documentation.

If there isn't any documentation (bad-sign), then ask the developers specific questions first (things they can answer quickly)

Once you have a slight understanding of the platform's architecture, you can setup a specific time for the developers to explain the platform to you, so you can get a better understanding.

Then ask if you can spend time writing some of the documentation, if there isn't any time for you to write documentation (another bad-sign), write it down for yourself anyway.

Don't ever lower your own standards

this is more for the people joining smaller consulting firms, or smaller development teams.

where the senior developers have lost their passion for writing quality and robust code; and just want to get things working in the shortest amount of time.

if you find yourself making great compromise to the quality of your code, due to "this is just how we do it"

Clearly identify why its wrong, how to fix it, and how it will affect other things (deadline, downstream effects, etc)

if your seniors know its wrong, but still do it, its time to leave.

Find what you like, and focus on it

I myself only have about 2 years of professional experience, when I started I didn't really know what I liked working on (back-end architecture, business rules and logic, or front-end user experience, or a little bit of everything)

Eventually I figured that I really enjoyed thinking about how a user interacts and works with the application, and how I could make their lives easier when using the application.

Probably the most enjoyable part of my work, is knowing that I've made the user's life, just a little bit easier.

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