Writing! Programmers need to be able to make themselves understood by other humans. You need grammar, style, structure, and lots and lots of practice. If you confess to your advisor or an English faculty member that you're not terribly interested in literature, but you want to do what it takes to become an effective non-fiction writer and communicator, they can probably point you in the right direction.<p>(And if your school should happen to offer a rhetoric class, take it/them.)
Investigate the professor, or whoever is actually teaching.<p>What I got out of my courses depended in some very significant ways more upon how they were taught and by whom, than upon the ostensible topic at hand.<p>I have great respect for educators who have sincere interest and a passion to convey it.<p>These are also the people who tend, one finds, to have a better handle on the "mechanics" that are important to and education. Writing, presenting, engaging in dialog and debate, <i>respecting</i> one's conversational partner -- even while endeavoring to enlightened them as to their mistakes and assumptions.<p>Such people also engage you in the work, so that it's actually interesting and enjoyable to do. It's a lot easier to learn things, including those "mechanics", when that is the case.<p>That said, do try to get some -- but not solely or even primarily -- grounding in the "real", workaday world. Schools matriculate too many students who have no idea what they face once they walk out the door.
Any philosophy course will help you a lot. Whether it's for thinking, or just to appease some of your wandering thoughts. A general Intro, Ethics or Epistemology will do you good.<p>A course on art history will open your mind a little and get you thinking about design, aesthetics, and much more.<p>If you don't read classic literature, take a course on classic English or Russian lit. Most of these novels are timeless and could provide an important impression on you.
Public Speaking (where you actually do it to groups not in class, may need to go to something like toastmasters or find your own to properly practice this)<p>Technical Writing/Composition - People tie writing well up in their brain with literature. This is due to the American educational establishment thinking writing belongs to language arts teachers, who all have English degrees. There may be a "science writing" course offered at the grad level, see if you can audit it.<p>Accounting 101 - This class will teach you the fundamentals of all the things you will have to do with your bookkeeping. You're really not going to be able to afford to hire a bookkeeper at first most likely.<p>Publishing (aka, School Newspaper) - A semester of this will teach you how press works, allow you to see the revenue model of papers, and will allow you to see things first hand a newspaper is writing about before it comes out. This is very useful later in life for understanding how to properly help newspaper writers and editors not mis-spin your business<p>A course on pricing in the business school - They don't always have these, but the theoretical frameworks they talk about may be easier to digest in the classroom setting then picking it up on your own after you leave school.
I've taken a few courses suggested here and just a small bit of warning: Make sure you're going to enjoy, or at least be interested enough, to learn something.<p>I've taken Psych. I've taken Sociology. I've taken Philosophy (both Logic and otherwise). I've taken technical writing courses.<p>Other than the logic courses, I hated them all. I hated them to the point where, though I passed, I did not take anything out from them at all. It just didn't interest me.<p>All I'm saying is that as you read these suggestions, try to make sure that you are taking into account that there's something you want to get out of the class so that if you end up not liking it you can focus and try to get something out of it. -- I didn't, even though I could have.
Philosophy -- learn to see things from different angles, different philosophies. Most importantly, observe how others in your class react to discussing touchy philosophies and concepts, like religion and politics. Learn to step outside that box, and be objective while respecting opinions, and make your own decisions. Trust me, its well worth it. Both for the laughs, and for the wisdom.<p>edit: Just noticed I'm echoing what many others have said. Interesting that we all had the same thought.
Some options to step out of the technology/science/engineering courses:<p>* A business course or two could be extremely useful depending on the course content -- you probably want to talk to a course counselor in the Business school about this.<p>* Take at least one art/design course. As a developer, I cannot tell you the number of times I've wished I understood design a little better. If nothing, understanding basic design principles will allow you to creatively contribute to a designer at some later date.<p>* Learn at least one new language. You haven't mentioned which country you're from (your profile doesn't say much), but Spanish is a good choice in the US. Personally, I wish I learnt German (I'm Indian and I find German a lot similar to Hindi and other Sanskrit-derived languages).<p>* Take a course that furthers your hobby: Photography, Art, Snowboarding, Archery and what have you.<p>* Take a course in the biology department. Preferably one that tells you more about the human body -- yourself. At the very least, you should be able to read your doctor's professional diagnoses or reports and understand what they mean. Know proximal vs distal, dorsal vs ventral and so on.<p>I'm sure there's more. I haven't had enough coffee to think right now though.
Philosophy, especially one of these areas:<p>Ancient Greek/Roman, especially epistemology and stoics. Helps with accepting what comes and questioning how you know what you know.<p>Late 19th Century. Helps with questioning your real role in what you do, and why you should or should not.<p>Surveys of Eastern Philosophy. Adds a certain playfulness to life, also disabuses you of American perceptions of Asian traditions (such as Zen, widely mis-characterized in the west).
I think a lot depends on the teacher. If there is a really good teacher which challenges their students then any course can be a great learning experience (even beyond the material covered). Obviously, it will always be different between schools. If I were you, I'd ask fellow students to see if anyone has taken a truly interesting/challenging course.<p>I took a Negotiations course my senior year of college and it was easily my favorite class of all time. There was a lot of roleplaying and class debate, but the teacher played Devil's Advocate and poked holes in everyone's arguments. He truly required us to think creatively and analyze a situation thoroughly before speaking/writing, or else he'd rip us apart. It was a breath of fresh air after many other classes were purely focused on learning concepts, rather than applying them creatively.
>programmer/entrepreneur career<p>Specifically in this career, I'd like to say that CS courses alone is sufficient, certainly not optimal, but sufficient in making you a good programmer, though it's up to you what you make of your program.<p>For entrepreneur, in my experience, you have got to be a people person. And, you have got to understand the finances. For business/marketing and related classes I would say that generally different courses have different business logic which may or may not work depending on the situation. So, I would say prioritize on performance arts/public speaking if you're not already a people person. Else, go the finances route. It's amazing what basic knowledge of time value of money can teach you.
I took Environmental Science and Evolution and Biodiversity. Both jolly interesting. Expanding the breadth of your knowledge is always good. Your best bet is to pick courses that interest you, that you will enjoy.
If you have floating credits, take something that you are interested in learning, not something you think that will help you in the long haul.<p>I talked my way into a 300 level (non-entry level) Buddhism class because I wanted to learn about it but didn't have the pre-reqs my senior year and loved every minute of it.<p>I learned about cultures I'll probably never see and ways of thinking that have only improved my ability to reason about complex problems. There's something to be said about learning for learnings sake!<p>TLDR; Take something you don't know much about, but want to learn about and it'll expand your mind.
Accounting/Finance will do you well. Business law, too. It will help a great deal to know when to start a business as a C Corp or an S Corp, how dilution works, how to keep control of your company, when and how to file patents, copyrights, and trademarks, the downside of taking money, how to build cash-flow, profit and loss, and balance sheets, etc.<p>If you get some business basics in, you lower your chances of getting screwed. Being able to protect your interests and work efforts could end up being your most valuable skill.
Learn to write!<p>And not just in the baseline required rhetoric class that require little more than a pulse and a spellchecker - find a composition course that will actually demand something of you. Fiction writing, poetry, etc., something that makes you really learn how to communicate.<p>On that note, if you can find a presentation-heavy class, consider that. There's a lot of accessible comm classes that force you to get up in front of a crowd repeatedly - this could be invaluable in an entrepreneurial career.
Public speaking.You need to be able to convey yourself clearly and effectively when you need to the most.<p>If you are a well-spoken engineer among a pack of average engineers, you will stand out.
Other than the business courses mentioned by others...<p>Technical writing courses, if available, are invaluable. Being able to write and explain things clearly is an amazingly helpful skillset to develop.<p>Linguistics classes can be useful for helping you think about both computer and human language construction and use.<p>Engineering courses can help develop problem solving skills.<p>On any classes you take, I'd try to dig up syllabi from previous semesters to see if they're worthwhile (try to find the same teacher/course combination).
I took 3 100 level business courses: Intro to Business, Intro to Marketing and Intro to Business Law. I'd recommend anybody with entrepreneurial ambitions take something similar. Of the three, I'd say the Intro to Marketing had the most useful information in it.<p>Taking at least 1 course in Accounting probably wouldn't be a bad idea either.<p>You might also find some value in Statistics courses, and other Maths courses that aren't part of your CS degree.
As a Business Administration graduate, I can safely advise that Social Psychology, Negotiation and Human Resources are the best courses an entrepreneur can take. You can learn Business Law and Accounting on your own, they are easy. As I see from the comments, Programmers tend to dismiss finance, but finance strengthened with operations research can make a mediocre company a great one.
Reading, Writing and Arithmetic.<p>Marketing - If people don't know that you're selling something, it won't get bought.<p>I agree with a lot of the Philosophy comments people are making, but in general you should try to avoid as many people as you can if they are not your customers.<p>Your direction usually dictates your education. Your ability to learn new shit is far more important than your inherent knowledge.
Take Econ courses. Understanding economics changes the way you make decisions. At it's simplest level, an understanding of sunken costs and opportunity costs overrides many "logical" decisions people make daily. At a more advanced level, understanding market forces and reactions will help in an entrepreneur career.
I would suggest taking some music class. I am not a music person but have recently taken up piano and somehow feel it's a great way to spend time after a day long of programming (or... reading) in the office.<p>But this won't <i>directly</i> help you with programming as career, it's just one way to spend time. YMMV.
I'd recommend you take an intro to macroeconomics course. You'll learn about how monetary policy works (interest rates) and that will help you your whole life. Understanding economics helps you understand business trends, investing, and it gives you more perspective on current events.
Business and marketing courses seem the obvious thing.<p>I'm not sure how much an economics course would help, seeing as the basics should be covered by the business course.
Philosophy, Drama, Applied Math, Russian Literature, a spoken language, Travel/Exchange programs. All those have helped me immensely in addition to a computer science curriculum.
This is an odd request for Hacker News. Everyone here knows that the liberal arts are stupid. Focus. If you have time to take courses outside of the CS department you should be using that time to write unit tests for your homework assignments or think about how you can work in SEO optimization strategies into next semester.