Hi
I'm software engineering student. I know python, c, c++ and c#. It's been two years I'm trying to learn programming but somehow I still a beginner. I just know the syntax of these languages. I love Linux and open-source.
I tried to learn programming in Visual Studio but my programs not works always correctly. for example I don't know about database securities and how to implement them. I just know the simplest code :@
I tried to read simple source-codes but all projects codes are out of my knowledge and I can not understand them. The codes are so different from which I practice in language tutorials. The books just studies the programming languages not programming.
My Q is: How can I be a programmer who can understand the codes and writes neat and clean code. Suggest me some books or tutorial?

Write a program that teaches you one new thing. Then do that again. And again. And again. Practice.

Since you are a student, you are not yet a programmer anyway.
You've been at it for only two years (in school) so you aren't a programmer anyway.
Once you've been in a job for two years or so, you start to become a neo-programmer. It just takes practice time, and experience.

Hi
I'm software engineering student. I know python, c, c++ and c#. It's been two years I'm trying to learn programming but somehow I still a beginner. I just know the syntax of these languages. I love Linux and open-source.
I tried to learn programming in Visual Studio but my programs not works always correctly. for example I don't know about database securities and how to implement them. I just know the simplest code :@
I tried to read simple source-codes but all projects codes are out of my knowledge and I can not understand them. The codes are so different from which I practice in language tutorials. The books just studies the programming languages not programming.
My Q is: How can I be a programmer who can understand the codes and writes neat and clean code. Suggest me some books or tutorial?

Gotta write programs man.

I don't know about database securities and how to implement them.

Just to pick on your one example, it's very good to know the theory of these types of things and be aware of them. However, unless this is your passion, leave the implementation up to people that spend their days in database security, and reap the benefits of their expertise by using their libraries!

>>How can I be a programmer who can understand the codes and writes neat and clean code.

You learn by experience, like anything else, practice makes perfect. If you are comfortable with the syntax of a language and the general logic of programming, then the next step is usually to start getting outside textbook examples, outside the comfortable world of standard libraries, outside your comfort zone. I mean, start writing projects that are complex enough (for you) that they require building a non-trivial software architecture (requires some thought into the design), that they require doing things you have never done and don't know how to do, and that they require using external libraries for doing things you can't or don't want to do yourself (like loading some file-formats (images, databases, etc.), or interfacing with some system, making a GUI, or using peripherals). Pick something you like, nobody can tell you what that is.

You learn to _understand_ code (other than your own) by being exposed to other people's code or to the interface or design of existing libraries. Be curious, and take it one step at a time (i.e. don't start by digging into Boost.Proto or some other crazy complicated library like that, start by looking at libraries that are small and simple enough that you could possibly be able to do it yourself, if you wanted to).

You learn to write _neat_ code as you make mistakes (that you won't want to repeat) and as you learn clever solutions to those problems. After learning the syntax of a language, you want to know the common idioms and design patterns used in the language which are usually motivated by some good design objectives or by lessons learned through experience.

You learn to write _clean_ code when you are starting to know where you are going when writing code (i.e. you get the syntax right on first write, and don't spend your time battling with the compiler or with your software's (faulty) design). You also write cleaner code when you have developed, with experience, the rigor for keeping things clean (not leaving unused variables, having simple minimalistic abstractions, encapsulating well, etc.). We can always tell beginners to be rigorous with that, but these are good habits that only experience can bring you.

As mentioned by WaltP, be patient. Personally, at the last count, I had written about 500,000 lines of code over 12 years (50% C++, 30% Delphi, 10% C, 5% Java, 5% other (scripts)), and I would say, that barely qualifies me as an experienced programmer (but, of course, I'm not a professional programmer, since it is not directly my field of work).


>>for example I don't know about database securities and how to implement them.

No programmer, experienced or not, knows everything. I know certain things very well (HAL, robot control software, path-planning, numerical methods, dynamics simulations, etc.), I have a generally good idea and can implement (if needed) several other things (graph theory, optimization, image processing, machine learning, etc.), I have a vague idea of many other things that I wouldn't implement myself but could use / have used (databases, networking, 3D graphics, etc.), and then there are a huge number of things I have no clue about because they are so far from anything I do or have ever done (web-designs, smart-phone apps, servers, operating systems, super-computing, etc.). The lesson is, every programmer is somewhat layered like that, there are core abilities, some complementary abilities, some auxiliary acquaintances, and a vastness of unknowns. Don't expect to be different. Figure out what you like and develop those core abilities, picking up some other side-stuff along the way, but don't waste your time trying to learn everything and anything.

Comments
Perfect answer
Great info, Mike

Be curious, and take it one step at a time (i.e. don't start by digging into Boost.Proto or some other crazy complicated library like that, start by looking at libraries that are small and simple enough that you could possibly be able to do it yourself, if you wanted to).

Try Simple DirectMedia Layer, this is -as the name states- a very simple but powerful graphics library. It's the way I went into C++, learning from lazyfoo's tutorials. They're excellent, especially if you already have the knowledge of C-syntax.
I've been programming since I was 8 (well okay that was jLOGO and qBASIC), but I NEVER considered myself a professional programmer. I haven't done any scholar studies, unlike you, all I had was books and teh_int0rw3bz.
I'm sure you'll make it into pro-programming ;)

Comments
Good suggestion of SDML
This article has been dead for over six months. Start a new discussion instead.