4

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. :)

5 Answers 5

13

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.

2
  • When you say "Security" would this there be any specific technologies I need to be aware of? Commented Sep 30, 2010 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. Commented Oct 5, 2010 at 13:25
1

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

3
  • 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? Commented Sep 28, 2010 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) Commented Sep 28, 2010 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
    Commented Sep 29, 2010 at 14:57
0

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.

4
  • revision control, such as Git and SVN? Commented Sep 28, 2010 at 21:29
  • Yes. More often called Version Control or Source Code Control, although not all files have to be source code. Commented Sep 28, 2010 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? Commented Jun 22, 2011 at 23:55
  • @Muhammad It differs for each language, here is a list: en.wikipedia.org/wiki/List_of_unit_testing_frameworks Commented Jun 23, 2011 at 2:32
0

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!

2
  • 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? Commented Jun 22, 2011 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
    Commented Jun 25, 2011 at 2:22
0

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.

0

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