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'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

closed as too broad by gnat, Kilian Foth, BЈовић, GlenH7, Bart van Ingen Schenau Aug 2 '13 at 14:06

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

add comment

5 Answers

up vote 12 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 Usman 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
add comment

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 Usman 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
add comment

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 Usman 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 Usman 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
add comment

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 Usman 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. –  2rs2ts Jun 25 '11 at 2:22
add comment

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.

It shows you that there's more to coding than just writing programs. Back when it was written, things like source control, continuous integration and test first were just coming on the scene for the average developer without enterprise licencing agreements.

This book shows how to manage yourself and your code. Ok, a lot of this stuff is now available online now, but at the time, it was hard to find. This book is still a good resource for anyone who thinks they're a programmer.

share|improve this answer
add comment

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