* If you end up as a software engineer, building good software has a lot of things that fall outside core computer science concepts. Read up about unit testing, continuos integration and continuous delivery.
* Build, build and build. No amount of reading will help you tackle some of the issues that real-world data will throw at you. An active Github account also serves as a validation that you are actually capable of "shipping things".
* Breadth is important, but continue to focus on becoming great at atleast one thing.
* Learn a few languages. Pick one or two which are statically typed (Scala, Haskell), one or two that are dynamically typed (Python, Ruby). I also highly recommend Erlang which was a revelation for me.
* Master Git (or Mercurial, if that's your thing).
* Choose to work in companies where you feel you will be surrounded by people smarter than you. This is possible even outside the Googles and Facebooks of the world.
* Don't get overly attached to your tools. Languages, frameworks and editors are a means to an end. Be open to new ideas and better way of doing things. There is an initial learning curve before you start becoming truly productive in anything and so be mindful of that before you dismiss something.
Don't be scared to ask questions. You will [most likely] be interacting with a lot of very smart people with years of valuable experience. Don't be scared to ask question and learn from them.
1. Real world is hard, mean and tough. But it has a lot of good in it as well. You will get hit but keep moving forward.
2. If you were popular in college (if you were), it is going to be different in the outside world. You are just a number and no one gives a shit until you become someone worth noticing. So keep expectations low.
2. What you did in Computer Science at school/college is going to be way different in the corporate world once you get a job. It will be a lot more than just programming or theory.
3. You will have to deal with things called "people", "co-workers", "users" which come in many different forms. Some will be nice to you, some will be mean to you and some just won't care less. Don't take it personally. It is all professional. You will probably not make as good friends as college/school anymore but be nice and friendly as much as you can.
3.1. If you have a problem with someone (at work), go talk to them in person. Not on phone, not over email.
3.2. Use email at work with caution. If an issue needs to be discussed and a resolution is pending, do not use email to resolve. talk in person. If in person is not possible, then phone is the next option. Use email to communicate decisions or things that don't need resolution.
4. Always look for mentors or people you can look up to or learn from. This really matters and will help you in the long run. Learn from the best if you can. Watch their body language, how they communicate and what works. Don't wait for someone to come and teach you things or change your world. Ain't happening. You need to take the initiative.
4.1. Technical skills are good but always look to work on communication skills, negotiation skills and ability to influence others in a positive way.
5. Never take a job/company too seriously. There is no such thing as loyalty. If a company doesn't need u, they will kick you out. Period. So you need to be the same. Always look for your best interests. Having said that, give your best/100% when at a company. Don't slack off. People always know and notice. They may not say on your face but you will be respected.
6. If you think you know too much and the other guy is stupid, think again. The more experience you get, the more you will realize how less you know. Keep yourself grounded.
7. Be positive and optimistic. Associate with people who are better than you and whom you want to be like. Don't be friends with naysayers. It really matters.
6 comments
[ 3.3 ms ] story [ 19.5 ms ] thread* If you end up as a software engineer, building good software has a lot of things that fall outside core computer science concepts. Read up about unit testing, continuos integration and continuous delivery.
* Build, build and build. No amount of reading will help you tackle some of the issues that real-world data will throw at you. An active Github account also serves as a validation that you are actually capable of "shipping things".
* Breadth is important, but continue to focus on becoming great at atleast one thing.
* Learn a few languages. Pick one or two which are statically typed (Scala, Haskell), one or two that are dynamically typed (Python, Ruby). I also highly recommend Erlang which was a revelation for me.
* Master Git (or Mercurial, if that's your thing).
* Choose to work in companies where you feel you will be surrounded by people smarter than you. This is possible even outside the Googles and Facebooks of the world.
* Don't get overly attached to your tools. Languages, frameworks and editors are a means to an end. Be open to new ideas and better way of doing things. There is an initial learning curve before you start becoming truly productive in anything and so be mindful of that before you dismiss something.
* Lastly, don't get burned out.
2. If you were popular in college (if you were), it is going to be different in the outside world. You are just a number and no one gives a shit until you become someone worth noticing. So keep expectations low.
2. What you did in Computer Science at school/college is going to be way different in the corporate world once you get a job. It will be a lot more than just programming or theory.
3. You will have to deal with things called "people", "co-workers", "users" which come in many different forms. Some will be nice to you, some will be mean to you and some just won't care less. Don't take it personally. It is all professional. You will probably not make as good friends as college/school anymore but be nice and friendly as much as you can.
3.1. If you have a problem with someone (at work), go talk to them in person. Not on phone, not over email.
3.2. Use email at work with caution. If an issue needs to be discussed and a resolution is pending, do not use email to resolve. talk in person. If in person is not possible, then phone is the next option. Use email to communicate decisions or things that don't need resolution.
4. Always look for mentors or people you can look up to or learn from. This really matters and will help you in the long run. Learn from the best if you can. Watch their body language, how they communicate and what works. Don't wait for someone to come and teach you things or change your world. Ain't happening. You need to take the initiative.
4.1. Technical skills are good but always look to work on communication skills, negotiation skills and ability to influence others in a positive way.
5. Never take a job/company too seriously. There is no such thing as loyalty. If a company doesn't need u, they will kick you out. Period. So you need to be the same. Always look for your best interests. Having said that, give your best/100% when at a company. Don't slack off. People always know and notice. They may not say on your face but you will be respected.
6. If you think you know too much and the other guy is stupid, think again. The more experience you get, the more you will realize how less you know. Keep yourself grounded.
7. Be positive and optimistic. Associate with people who are better than you and whom you want to be like. Don't be friends with naysayers. It really matters.