Tell me more ×
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'm a student of computer science but I am only taking entry level web development classes. I'm looking for some out-of-class reading, tutorials, and other ways of learning but I'm not sure what I should start in.

What is a good set of programming languages (different paradigms?), frameworks, suggested projects, and maybe even some open-source communities that I should start to look at and start learning? Also, maybe even some books or blogs on development processes in the professional world. I'm looking to start getting in to professional development around the end of college.

I understand practicing it will be the best way to learn anything but if I don't know what I should practice, I'm lost at that. :)

share|improve this question

5 Answers

up vote 9 down vote accepted

These would be my baseline recommendations for topics to cover, not necessarily in-depth, but at least a general understanding:

(in no particular order)

  1. A compiled language - C#, Java, C, or if you're brave, C++. Understand about source code gets compiled into something else and then run by the runtime.
  2. A scripted language - JavaScript, Python. Know the differences to (1) and the strengths in terms of dynamic typing and rapid development.
  3. HTML + CSS. Whether for documentation or test harnesses, you'll use it somewhere.
  4. SQL. Data lives in databases. They all have their own flavours, but a basic understanding of SQL helps a lot.
  5. Version Control. Pick any system - Subversion, Git, Mercurial, CVS - it doesn't matter which, just understand about the check out, modify, build, merge, review, build, commit workflow.
  6. Testing - whether unit testing, automated or manual.
  7. Security. Software systems get attacked - even the un-sexy ones - and users' information is becoming worth more than their bank details.
  8. Algorithms - understand Big O notation and that choice of good algorithm matters much more than micro-optimisation.
  9. Design Patterns - no point in re-inventing the wheel.
  10. The Software Development Lifecycle. Doesn't matter which methodology you prefer, but go find out what they are.

and when you've got the first job:

11.. How your employer measures success. All of the above are moot if your employer has their own unique systems which you have to use. Find out how to be successful in your employers' eyes first and then introduce the items you've learned along the way.

share|improve this answer
When you say "Security" would this there be any specific technologies I need to be aware of? – Muhammad Sep 30 '10 at 1:45
I mean application security in terms of preventing hackers gaining unauthorized access to sensitive information or services. Buffer Overruns, SQL Injections, etc. 'Writing Secure Code' is a large, dry book that covers some of this, but there are others. – JBRWilkinson Oct 5 '10 at 13:25

Things I wished i would have learned at school

  1. SQL
  2. SCM

Methodology/Patterns I wish I would have known better...

  1. Enterprise Layering Strategies (separation of concerns Service/Business/Data Layering).
  2. More effort to learn Design Patterns

Things you should read once you get closer to entering the real world: Any article on this site: Joel On Software

When concerned about java... Java Posse

Interested in .NET? Scott Gus Blog and Scott Hanselman

share|improve this answer
SQL as in databases? I've had a friend tell me today that I should start looking into Big Data, NoSQL, and other database concepts because I currently don't have a solid understanding of SQL and relational databases. Is that in any way relevant or good for a career in software/web development? – Muhammad Sep 28 '10 at 21:32
1  
SQL is still relevant. There are other SQL-like constructs emerging that are clearly rooted in SQL, e.g. LINQ. One of the most deployed database engines at the moment is SQLite (iPhone + Android + Chrome + Safari) – JBRWilkinson Sep 28 '10 at 22:59
1  
Having a solid understanding of SQL and how to use it is an important piece to most programming jobs. SQL has a very easy learning curve and it seems to be the one technology that transcends all jobs... everyone has databases right? – Nix Sep 29 '10 at 14:57

I would recommend you learn both the Java and .NET frameworks, because they're ubiquitous. Learning the Cocoa API is smart too, because Apple is growing. Learn a few scripting languages such as Python, Perl, Ruby, and Javascript. Learn Haskell to give yourself an interesting extra tool. Learn SQL. Learn *nix. Learn C++.

The more languages you know, the better you will be able to express your thoughts in code. This is something I learned in my formal Programming Languages class!

share|improve this answer
I have started to gain some insight as I look between different languages. I have recently started reading and playing with rails, it's definitely a cool DSL but are there any other languages in the same category? – Muhammad Jun 22 '11 at 23:53
Python and Ruby are so eerily similar in their scope and domain it's uncanny. If you're asking about languages similar to Ruby, Python is it. – agarrett Jun 25 '11 at 2:22

Coder to Developer is a great book, but not language / framework specific. It gives a set of development practices and tools that you would be well advised to use.

share|improve this answer

I'm also currently a CS student. What I would suggest is to learn about unit tests and revision control. Definitely useful for the rest of your programming career even while you're still in college.

share|improve this answer
revision control, such as Git and SVN? – Muhammad Sep 28 '10 at 21:29
Yes. More often called Version Control or Source Code Control, although not all files have to be source code. – JBRWilkinson Sep 28 '10 at 23:00
I have finally discovered the amazing power of version control and it saves my time and keeps stress away a lot! @jon2512chua, I don't know where to start looking for unit tests, any good links you've got? – Muhammad Jun 22 '11 at 23:55
@Muhammad It differs for each language, here is a list: en.wikipedia.org/wiki/List_of_unit_testing_frameworks – jon2512chua Jun 23 '11 at 2:32

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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