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 have just completed my Bachelors degree in IT field. I have deep interest in coding and really want to be a professional in it. Now, apart from college courses, I have been learning programming(C#) on my own (college level programming is too basic). Now I feel I need a little more time to be close to professional programmer. But some of my seniors say that corporate world programming is too different from bookish programming, hence there is no point in wasting time. (They are not programmers themselves, this may be probably what they heard).

Would I benefit by reaching an advance level of C#? or as mediocre level is sufficient to break interviews, higher levels do not matter to firms because they rely on their training purely to teach how things work in corporate world and learning more won't help me much? Please if there are some professional programmers who can help, I promise this is something which about every student interested in programming want to ask at my stage. "How do you actually change from learner to professional in field of programming?" - keep learning until you are perfect or joining a firm is must once basics are covered?

share|improve this question

closed as off-topic by MichaelT, Jarrod Roberson, GlenH7, gnat, Donal Fellows Jul 15 '13 at 6:36

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." – MichaelT, Jarrod Roberson, Donal Fellows
If this question can be reworded to fit the rules in the help center, please edit the question.

24  
School has never been about giving you the necessary skills to find a job. It's about giving you the necessary tools to find a job. Nothing substitutes for real-world experience, but you still need school. –  Robert Harvey Jul 13 '13 at 21:13
5  
I think the title presents a useful question, but the body of the question is asking for career advice which is off topic on this site. –  Bryan Oakley Jul 13 '13 at 21:36
    
You may find the chat channel for Programmers.SE (the whiteboard) to be a useful place to ask such questions - there are often people there with a wide range of skills from the corporate world. –  MichaelT Jul 14 '13 at 1:14
3  
3  
On hold??? This is NOT asking for career advice. Yes this question is little about discussion but is answerable. There are so many nice answers to this question no way this question should be removed or something unless stackexchange is running out of memory. See the accepted answers. Is it giving some career advice?? –  vish213 Jul 16 '13 at 2:04

10 Answers 10

up vote 31 down vote accepted

There are many differences between programming in school and in the real world. I'm not sure there is such a thing as corporate programming.

Depending on where you're actually working, there will be huge differences. There will also be huge differences depending on the tasks at hand.

However there are still some common issues.

  • the real world code life-cycle is very different from college homework. In real world programming you are usually working on some existing code base. One of the biggest issues is to avoid breaking compatibility with code used by your customers (who may be internal customers or external customers, depending on your actual workplace and case). The code you are writing will also probably be used for years afterward (this depends: the issue is not the same for a web site or code embedded in some devices). If you want to get ready for this, get in the habit of writing unit tests and functional tests for every piece of code. That is not always done with real world code, but it should make your life simpler both in college and in the corporate world.

  • design/requirements are usually much fuzzier in the real world than in a collegiate atmosphere. When writing professional code, someone has to define the code's purpose, and you aren't simply given toy problems or even well known problems. It is very likely that sooner or later it will be you who is doing the designing! Customers usually don't know what they want (and even when they know what they want it may not be what they need), and managers usually just describe the large picture, leaving many details and choices to the programmers. Depending on the methods followed ("agile" -vs- "V cycle", etc.), choices and detailed problem definition may occur sooner or later, but you should at least keep an open mind and wonder if you're actually doing what is required. You may also consider changing requirements if the ongoing task is too hard to code or is inefficient. You may end up writing something useless or overly complicated anyway because the customer or your manager didn't get your point or they disagree with you. Still, you should always question requirements (it's a survival skill). Also keep in mind that requirements may change in the middle of a task, and you should be ready for that.

  • in college when you get an assignment you are usually supposed to write some code. In the real world, you usually start by checking if you can use existing code instead: reuse or change parts of a project, use or buy libraries, etc. If you find existing code that fits the assignment, you may end-up using it or not (there may be maintenance issues, performance issues, copyright issues, or even pricing issues), but the option of reusing existing code should usually be considered.

There are obviously many other issues related to teamwork, project scale, etc. But the above points are issues you are very likely to see in corporate environments but do not have to consider in your college assignments.

share|improve this answer
    
By Corporate Programming I meant the programming environment in companies. Nice answer btw :-) –  vish213 Jul 14 '13 at 6:15
2  
Good answer @kriss. I would add that it is important to learn to speak in the customer's language, not in "programmese". This will help both your customer and you. –  Paddy Landau Jul 14 '13 at 13:03

The main difference between corporate programming and college programming is scale. In school you never get an assignment that one person can't start and finish within a semester. As a professional you might work with dozens of other programmers on software that lasts for years without being "finished."

At a micro level the work isn't that different. After all, if it were too different, then a college degree wouldn't be of any value to companies. But it's sort of like the difference between baking 12 cookies and baking 12,000 cookies. You can be really good at the former and completely clueless at the latter.

In school you're mainly concerned with making a correct program. At work your software being correct is not enough. It has to be maintainable, testable, efficient, and able to be worked on simultaneously by multiple people. That's something schools try to teach, but you can't really learn it completely except by doing it.

share|improve this answer

This question is based on an invalid assumption:

"How do you actually change from learner to professional in field of programming?"

You become a professional by getting paid to do it. You never stop being a learner. If you do, your career is over.

Go out in the world and get a job. Your enthusiasm for learning is an asset.

share|improve this answer
4  
That's all good advice, but it doesn't really answer the question, does it? –  Bryan Oakley Jul 13 '13 at 21:36
6  
I agree that a professional programmer never stops being a learner - but not that being paid makes you a professional. I've met many amateurs who got paid to write terrible terrible code. Professional is about doing the job right - and doing the right job - not about being paid to churn out code. –  Bevan Jul 14 '13 at 2:09
    
@Bevan It can also be argued that that's the difference between a "programmer" and a "developer". Not sure where I stand on it, though. –  Izkata Jul 14 '13 at 2:13
3  
@Bevan: The word "professional" is genuinely ambiguous; senses listed in the Wiktionary entry include both "Of, pertaining to, or in accordance with the (usually high) standards of a profession" and "That is carried out for money, especially as a livelihood." Being paid automatically makes you a professional programmer in the latter sense, even if it says nothing about the former. –  ruakh Jul 14 '13 at 3:22

Short answer, yes - the corporate world is quite different than many college environments.

That said, companies know this. We expect college graduates to be nearly useless. If you have spent time on your own learning to program, that's great. You don't need to be super awesome to apply, but understand that staying mediocre will not cut it.

You won't learn a lot of what you need in business on your own. Apply as soon as possible while continuing to learn on your own.

share|improve this answer

Would I benefit by reaching an advance level of C#?

No. We expect students to be useless for several months while we break them in. The degree is just table stakes. Your enthusiasm to learn and follow instructions are your best assets. When interviewing college grads I want a team player that fits in not a hotshot disrupting the group.

...higher levels do not matter to firms because they rely on their training purely to teach how things work in corporate world and learning more won't help me much?

This different for every company but in general larger companies will have a more structured training. This is your first big decision, do you like formal training and a high degree of structure? If so, seek jobs that provide that.

How do you actually change from learner to professional in field of programming?

You change from a student to a pro by getting a job. I recommend Seniors get a co-op with a company through your school. The is be single best way to get your feet wet and get past anxiety of a new profession.

Keep learning until you are perfect or joining a firm is must once basics are covered?

Get a job, don't wait. It is common to be nervous, but be honest about your skills and don't hide your enthusiasm to learn more. It is common to switch companies several times, especially early in your career.

Congrats on finishing your degree and good luck on your journey to professional programming.

share|improve this answer

I'd say the fundamental difference between corporate vs. college level programming is corporate level programming is much more of a collaborative process than what you will encounter in a class setting and the emphasis is much more on product development than pedagogical learning.

share|improve this answer

If you are really expecting that the corporate world programming will be advanced high level programming culture, I think you will rather disappointed. Programming in the corporate world is more about being able to take responsibility for the code that you write and keeping it maintainable.

But to your question

How do you actually change from learner to professional in field of programming?

This has nothing to do with corporate and college level programming but programming in general. If you really want to learn start building your own software, something you want to build or start working in open source software projects. Ask questions that you face. And read other people's code.

share|improve this answer

Karl's answer about scale is spot on. You don't get to sort an array of 15 numbers, you'll have to sort data set of a million ,say, account numbers.

A data structures and algorithms class will probably tell you a dozen different ways to sort. In a real application you are likely to throw in a order by clause and let the database optimize it.

As for getting prepared for the corporate world there are two ways I would suggest a) Get an internship even a low paid or no-pay one will let you watch others work. b) With all the app stores around you could try to write and publish an app to Apple/Google/MS stores. This will help you understand workflows better, the value of testing, the need to setup the right environment and tools and more.

share|improve this answer
1  
Just wanted to add in addition to app store you can try volunteering for a smallscale project. My first assignment was helping my mother's work place come up with vacation and overtime reports :) –  SxJ Jul 14 '13 at 7:34

The main thing you need for doing well in corporate programming is patience and the ability to communicate with users that don't understand technology. Make sure you use unit testing, version control, carefully debug and use proper tracing/logging. The languages may change, but staying calm and carefully looking for issues will always work.

share|improve this answer

beside the excellent answer provided "corporate programming" is also about requirements that are not clear or change.

What would you do if your professor changes the requirements of your programming homework two days before you have to deliver it?

In industry this quite common.

share|improve this answer

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