Marcelo
Marcelo

Reputation: 3391

Diversify programming knowledge

I've taken courses, studied, and even developed a little by myself, but so far, i've only worked with Microsoft technologies, and until now I have no problems with it. I recently got a job in a Microsoft gold partner company for development in C#, VB.net and asp.net.

I'd like tips on how to diversify, learning technologies other than those from Microsoft. Not necessarely for finding another job, I think my job just fits me for my current interests. I think that by learning by myself other languages, frameworks, databases.. I may become a better programmer as a whole and (maybe) at the end of it all having more options of job opportunities, choosing what i'm going to be working with.

What should I start with? how should I do it?

Upvotes: 0

Views: 283

Answers (8)

mfx
mfx

Reputation: 7398

Ideally, one should know at least one example from each of the major "paradigms":

  • Assembly (nowadays a dying art, and not that useful)
  • plain C
  • one of the OO-variants of C (C++, objective C)
  • Java or C# (they are very similar, probably no need to learn both)
  • a scripting language like Ruby or Perl
  • Javascript (preferrably via Crockford's book)
  • a non-pure functional language, e.g Scheme (PLT Scheme is a nice learning environment)
  • a pure-functionalal language like Haskell or OCAML
  • Erlang (somewhat of a class of its own)
  • a mathematical/statistical language like R, or J (an APL-successor)

Upvotes: 2

djna
djna

Reputation: 55937

I see two main directions to go:

  • Specific technologies. Select these depending upon how you want to extend yourself, new language (perhaps scripting if you haven't done that, perhaps functional programming), or new techniques (for example, UI programming, or low-level network programming depending upon what you haven't already done), or new OS (Linux if you're a Windows person).
  • Or, look at higher level problems, for example Design Methods and Team organisation. Read books such as Brooks' Mythical Man Month and Beck's Extreme Pogramming. Consider how to deal with problems bigger that can be solved by one person. Read up on (Rational) Unified Process, UML. Explore revision control systems, Testing techniques, not just Unit Test, but otehr flavours. Think about how you would organise a team if you were the leader. How would the tasks be subdivided, how would communication be managed?

Upvotes: 0

mfdoran
mfdoran

Reputation: 335

Maybe think of a project that would be of use to you in your daily life and see if you could develop that in a suitable language. That way you have a goal and at the end of the project you have something useful.

Alternatively why not try learing something not directly programming related, project management might be of use for future roles or do some reading about the history of technology.

These won't add any new languages to your CV but they might add some different aspects to your thinking that might make you a more well rounded potential employee.

Upvotes: 0

codegoblin
codegoblin

Reputation: 31

It would be a nice idea to get associated with one the open source programm on http://sf.net. That way you can even have your learning for new platform and also produce some legitimate code. Also you get to look at some good coding practices. Last but not least some giving back to the software community

Upvotes: 0

Mark Westling
Mark Westling

Reputation: 5974

At the risk of sounding trite, why not install some variant of Linux on a cheap desktop? The mere act of setting up a Linux box is educational.

Once you find your way around it, do some shell scripting and install things like a web server. That should keep you busy for a while. Once you past that, play with some dynamic languages like perl, ruby, python, PHP, etc.

Upvotes: 4

Timo Geusch
Timo Geusch

Reputation: 24351

If you're comfortable with C# and VB, learn a language that uses different paradigms. The usual suspects would be Ruby, Erlang, Haskell, Lisp. All of these are available for Windows and other platforms. You might have to get used to different tools to interact with them but that's not necessarily a bad thing.

Upvotes: 4

Daniel May
Daniel May

Reputation: 8226

If you're interested in other languages, just pick one and away you go. You sound like you have enough experience to be apt in another language.

If you're looking into a new desktop-development-language then I'd recommend Java or Python, both of which you'd ease into with your C# and VB.NET experience.

If you're looking into web programming, go for PHP?

  • Browse some source examples and see what catches your eye as the most interesting.
  • Pick up a book on that language.

Upvotes: 3

Sebastian
Sebastian

Reputation: 4950

Microsoft technologies aren't bad to start with. My advice would be:

Make sure you aquire sound knowledge about the foundations of programming and the technologies you use. The more basics you know, the more independent you'll be from the latest fads:

  • Read "Windows Internals" to understand the operating system you're working with. In the process, you will understand other operating systems a lot better.

  • Toy around with other languages. Learn the differences between statically-typed languages and duct-type languages, functional programming languages, iterative programming languages whatever.

  • Learn the language you use the best you can. Become John Skeet!

In other words, don't move sideways first. Dig deeper and become better at understanding what you do.

Upvotes: 1

Related Questions