views:

231

answers:

11

I've been studying programming for a year and I know the very basics of languages like VB.net, java, and C++ .. For the past 3 months, my "projects" consisted mostly of "mini tools" written in C++ (win32) for personal use. I also studied HTML/CSS using Headfirst's HTML/CSS book just and finished it last month.

I've been looking for an opensource project to work on but I don't think this is the right time yet as my knowledge and experience is not yet enough..

Right now, I'm not sure what road to take next. Should I study another language or improve on what I know now?

A: 

go study some web programing language like jsp/php/python.

and then learn some framework like hibernate / spring / struts / zendframwork

Am1rr3zA
+7  A: 

If you want to take programming more seriously I suggest getting a bit into design patterns.

It would be very beneficial if you learn those patterns in a very object-oriented language, like f.e. Java(which you already seem to know a bit).

Most design patterns are transferable to other languages, so it won't just help you in java, but increase your abilites to write good code as a whole.

Be it web programming in PHP or desktop applications in C#, they can be applied to pretty much every modern language.

For some books on this topic see this thread.

André Hoffmann
A: 

While you should learn everything you can (because every bit of knowledge and experience will help you), you should learn about things you're interested in. If you had fun with .NET, then learn C# (my favorite) or continue with VB. You mentioned HTML/CSS - why not build a website using ASP.NET WebForms or MVC?

Another way to improve your skills/knowledge is to try and stay active and involved on this site. Try to contribute by answering questions or commenting when other answers don't make sense. That will definitely help!

Pwninstein
+1  A: 

Get an entry-level position.

Fragsworth
A: 

You should study data structures and algorithms, learn different languages(like lisp or haskell). Choose an open source project from sourceforge and join it.

barism
+2  A: 

I'd echo André Hoffmann's suggestion about design patterns. Head First Design Patterns (one of the books on the link he posted) is very accessible, and has a number of exercises that you can do at your computer or on paper.

In addition I'd suggest learning some language-independent design guidelines, such as those in the book Clean Code.

Unit testing and (optionally) Test-driven Development (TDD) can make a huge difference in your life (as in getting you out of the debugger). A good thread with book recommendations is Good C# Unit testing book (not all of these are specific to C#).

You might also consider getting involved in a local users' group.

TrueWill
A: 

There are many things you can do (can do either one of them, not all):

  1. get a good job (try that after trying the other things i've mentioned below, would help in getting a better job :P).

  2. start freelancing on sites like rentacoder.com.

  3. download an open source project from sourceforge.com in a language that you like and in a field that you like and start by testing the application. Then as you learn more n more about the product, get the sources and build it. When you are comfortable with building it, try picking an easy bug and fix it.

  4. get involved in www.topcoder.com and learn algorithms. They have competitions for algorithms, software conceptualization, design, architecture, assembly, testing etc.

Also, define what you really love to do. Is it web application development? utility development in C++? large software projects? do you like mingling with the OS? do you like staying at the cutting edge? There would always be more to learn, and you will always have time to learn. But learning has to stop somewhere and acting has to begin :)

I wish you best of luck. Things i have said are from my own experience.

Zaki
A: 

It is really hard to learn programming if you do not practise it every day. You should join a project or write something that may muse yourself. When I was a junior programmer, I wrote a calendar, a life game, a parser for arithmetic expression, and more. If you are interested in web development, you may start with having your own homepage and gradually adding more advanced bits. To be a good programmer, keep yourself busy with programming all the time. Reading books or posts helps but only a little.

A: 

Two things, if you really want to improve your programming ability I would say dive deeper into one of the languages you mentioned for a more meaningful/complex project. You really have to take the next step at some point to learn more skills like design patterns and library usage.

Also, if you are looking for another language to learn, I would say try something more dynamic along the lines of Ruby or Python. Seeing the variety of programming languages out there will start to expose the applicability of each and hopefully help you learn some new techniques.

ghills
A: 

learning needs time and energy, so it needs motivation. There are different options, depending on your preferences.

Anyway, it seems that it's time for a little more theory.

If you want to continue in the Object-Oriented world I would recommend to read:

  • "Object-Oriented Software Construction" by Bertrand Meyer (After reading, you may also give Eiffel a try)

  • A book about Design Patterns in your preferred language.

If you are interested in other paradigms, I would suggest that you take a look at:

  • Oz Mozart if you are ambitious
  • Haskell, OCaml or a lisp flavour

If you want something more close to what you are doing, investigate Groovy who will integrate nicely with your Java code and will give you the opportunity to experiment more easily.

Finally, a few advices:

  • stay informed but don't pay too much attention to the very latest buzz...
  • think abstract: design for the paradygm (i.e. OO), not for the specific language
  • read other people code, programming is crafwork, learn from your peers.
  • read about good practices, they help you to avoid pitfalls of your language
  • read regularly "Lambda the Ultimate"

And code, code, code... and enjoy.

Chris.

Chris
A: 

I'd suggest studying the Systems Development Life Cycle and software development methodologies like Agile, Waterfall, and others that may help you understand a bigger picture perspective on how some things tie together. Granted this isn't technical in some ways, it is useful to get this kind of knowledge.

If you haven't already, databases may be a good idea for another point to dig into things if you want something more technical.

JB King