views:

161

answers:

7

I've been programming for about 6 months, but i still feel like i haven't learned anything. Or maybe i'm overwhelmed by the things i still don't know. Am i doing something wrong here or is this normal?

I want to be able to work as a freelancer in a year or two, but i'm not sure if that goal is achievable.

So when did you feel comfortable using your programming language of choice and how did you learn it?

+1  A: 

I am PHP developer and I feel comfortable now only after working on different types of projects including real-estate, sports, ecommerce and more. I feel relaxed that I can now develop any site but still there is a long way to go with ever changing trends, the learning never stops. Of course:

  • You should have good command over the programming language as well.
  • You create sensible database schema.
  • You have good understanding of whatever is related to your work.
  • You keep yourself up to date with ever changing trends and techs.
  • You know how to debug effectively.
  • You know how to sort out the cross-browser issues.
  • You are aware of the security issues.
Sarfraz
+2  A: 

I think you start to feel confident with your tool when you realize old software you wrote was not well structure as you tought.

I heard many times that the best way of becoming more expert is to take part at some project, read someone code and learn with it. It's true but IMHO very difficult. Also by doing this you become more and more proefficient.

The "overwhelmed" issue cannot be overcome. As a single individual you cannot deal with ideas developed by thousand of people, so you should accept your limits, become an expert in something you feel good at and be satisfied with the remaining part of the universe.

Dacav
+1 agreed. But a possible problem with "take part at some project, read someone code" is that the project code may be good or bad -- you can learn something either way, no matter whether it's good or bad ... but good books may be useful too, since they're actually designed/intended for teaching/learning.
ChrisW
+1  A: 

There is no such thing as a software developer who doesn't need to learn anymore or has reached a state of making no errors anymore, so try to accept that and adjust your targets and processes to that.

In the beginning you may feel uncomfortable, if you look at old code and see all the bits and pieces, which you can do better now. Get comfortable with it! Those are all chances to learn! There will be a day where you look at code and immediately start refactoring it, without thinking about it.

I myself thought to have reached a good level of programming when I noticed that I can at least read most every other program which I'm presented, independent of the programming language it was written in. You know, you can just look at the algorithm details without thinking about the traps of the programming language involved.

Bananeweizen
And how long did it take you to reach that point where you could read almost every program?
@misterwebz: Several years, to be honest. But rest assured, you will reach the comfort zone for a single programming language much earlier. :)
Bananeweizen
+1  A: 

So when did you feel comfortable using your programming language of choice and how did you learn it?

My language of choice is C++ (or more lately C#).

How I learned C++:

  • Learned some programming and software development/engineering (in a C-like language), while employed at the Canadian equivalent of Bell Labs
  • Did some years of assembly-language programming for DOS
  • Did some years of C-language programming
  • Read a book (Thinking in C++) which explained, incrementally, the features which C++ adds to C
  • Studied the above book in an online forum: a group of people (some of whom already expert) all reading and discussing one chapter per week, and patiently answering each others' (and my) questions (which included questions about OOP) -- after finishing this book I was able to understand the syntax of C++, i.e. to read C++.
  • Practiced coding in C++ for about a year
  • Read books (Effective C++), which were about all of the common mistakes which you can make (and should avoid) when programming in C++
  • Read a book (Design Patterns) which gave me more ideas of why I'd want to use a language which supports OOP
  • Read many more books about C++ (and design patterns) until past the point of diminishing return (i.e. I was no longer learning anything new from extra books)
  • Do code inspections of other people's code
  • Support the released code: fix bugs in it, add features to it, port it to new O/Ses, make it do things for which it hadn't been originally intended, for many years

During a lot of this time I'm not learning the programming language. I'm using it, while learning team-work, project management, software development lifecycle, the business of software development, libraries (and APIs, O/Ses, and frameworks), debugging, testing, and the problem/application domain (e.g. telecommunications, or cardio devices, or whatever).

ChrisW
A: 

I started with Turbo Pascal way back when I was 13, learned C, then C++. I've got a half finished computer science degree floating around somewhere with focus on Java and C++. I feel pretty comfortable in Java, but that's largely because I've done a lot of work in it over the last few months. By no means would I claim that I could do anything in Java off the bat (haven't looked much into networking/sockets, did a little bit with JDBC, ... you get the idea).

I was pretty proud when I picket up the basics in Google App Engine and Android over a long week; still lots to learn, but at least I'm confident there that I can learn it once I pick up another project in either.

I'd say you just keep plugging away and write a few programs, start helping beginners and later answer more advanced questions and you'll get a good idea of where you're standing. Good luck!

Jan Kuboschek
A: 

Programming languages are built by computer scientists. They tend to have a relatively small set of fundamental constructs. Using those constructs to express solutions to your problems in most unambiguous way takes a mind that can think just as clearly and unambiguously. Some programs such as TeX, Emacs, UNIX have been around for so long and they reflect the clarity of thinking of their many authors.

I tend to be able to understand what most programs presented to me do. I learned C, C++, Java, Python at university. I took a few semesters to feel comfortable in C. With those other languages, I'm less comfortable than with C though.

vpit3833
+1  A: 

So when did you feel comfortable using your programming language of choice and how did you learn it?

I learnt my first language, JavaScript (in the context of web pages) when I was about 10. As I was quite young, I nearly turned 12 before I became comfortable (ha, ha, that was when I was still making Quirks-mode websites, used Windows and IE). Between that time and now (I am 14) I have developed so much more in-depth knowledge of proper web development (and also became proficient in other languages too, including C and PHP).

Keep going; once you get comfortable you'll learn much more very quickly.

Delan Azabani