You are not logged in.

#1 2011-02-16 22:52:58

redcomet
Member
Registered: 2011-02-16
Posts: 8

How to get more experienced ?

The last 1.5 year I have been getting into programming more and more. I have been dabbling a bit in C++ ( just very basic things like processing a huge csv file lightning fast ) and started to learn python ( which I started to like very much already ) but mostly have been using php for building websites with a 'simple' custom cms. I reached a point where I'm pretty capable of doing the things I need for that kind of work and I'm learning more and more every day but still feel like I'm miles away from the 'serious' stuff.
Does anyone here has some tips / thoughts on what to do next to progress and learn how to program properly instead of my probably quite ineffecient 'trial and error' way of doing things. ( tail -f is my friend )
I already learned about OOP and I'm currently studying about MVC but haven't been really doing any real hands on stuff with it. I also have been coding everything without using any frameworks until now but maybe I should look into one when wanting to some more serious things ?

Last edited by redcomet (2011-02-16 23:58:16)

Offline

#2 2011-02-17 00:11:07

ngoonee
Forum Fellow
From: Between Thailand and Singapore
Registered: 2009-03-17
Posts: 7,358

Re: How to get more experienced ?

There'll be a million and one answers, I think.

Just practice? You could also get involved in a medium-sized open source project (which are mainly all C or C++ anyway). Don't try the kernel or mozilla, those are humongous.


Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.

Offline

#3 2011-02-17 00:55:27

redcomet
Member
Registered: 2011-02-16
Posts: 8

Re: How to get more experienced ?

ngoonee wrote:

There'll be a million and one answers, I think.

Just practice? You could also get involved in a medium-sized open source project (which are mainly all C or C++ anyway). Don't try the kernel or mozilla, those are humongous.


Just practice ... That's indeed the answer I usually give when people ask me how to get into (electronic) music production ( something I currently do for a living ... until the scene completely collapses that is wink )
Although I see many similarities between producing / composing music and programming the difference is that with music it really only is about the end result, doesn't matter how inefficient you did it. Programming is a lot more unforgiving in that aspect, I don't want to learn myself too many bad habits...

Last edited by redcomet (2011-02-17 00:58:15)

Offline

#4 2011-02-17 03:18:25

ngoonee
Forum Fellow
From: Between Thailand and Singapore
Registered: 2009-03-17
Posts: 7,358

Re: How to get more experienced ?

redcomet wrote:
ngoonee wrote:

There'll be a million and one answers, I think.

Just practice? You could also get involved in a medium-sized open source project (which are mainly all C or C++ anyway). Don't try the kernel or mozilla, those are humongous.


Just practice ... That's indeed the answer I usually give when people ask me how to get into (electronic) music production ( something I currently do for a living ... until the scene completely collapses that is wink )
Although I see many similarities between producing / composing music and programming the difference is that with music it really only is about the end result, doesn't matter how inefficient you did it. Programming is a lot more unforgiving in that aspect, I don't want to learn myself too many bad habits...

Hmm.... I suggest you take a look at CURRENT code-bases for some open source projects, some (I've heard, not doing dev-work myself) are well-nigh unreadable. I've heard Lennart Pottering of Pulseaudio infamy is a real stickler for coding styles, but most projects that transition from maintainer to maintainer tend to end up having tons of code noone can understand anymore.

So yes, bad habits should be avoided, but that shouldn't hamper your getting experience via practice.


Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.

Offline

#5 2011-02-17 04:53:30

stqn
Member
Registered: 2010-03-19
Posts: 1,191
Website

Re: How to get more experienced ?

For me, if there is a space after an opening parenthesis, there should be one before the associated closing parenthesis. There should be a space after each comma. Variables and functions should have meaningful names. Code that is not obvious should be commented. Copy-pasting code is wrong. Classes and functions should be in the correct file, not typed into whatever file was open at the time the programmer needed that class or function. OOP is good but shouldn't be overdone with layers and layers of (mostly useless) classes. The comment for a commit (to svn, etc.) should explain what this commit changes.

I've worked as a programmer. In my experience, other people don't care about most of these things.

I'm not sure where I'm getting at... smile ... Probably that what I think "bad habits" are is not the same for everyone, as ngoonee wrote. But also that the most important thing is that your work be understandable in the most easily possible way, at every level.

This is important no matter if you work alone, in an open-source project, or on a closed source project with other programmers. Code that you understand easily will have less bugs. Code that other people can understand easily means that they'll be able to improve/fix it and create less bugs and bloat by duplicating effort because they didn't understand a big part of the codebase.

Offline

#6 2011-02-17 08:38:37

demizer
Member
From: Gilroy, CA
Registered: 2010-03-03
Posts: 116
Website

Re: How to get more experienced ?

I have been programming as a hobby on and off since I was 16. I started with Visual Basic 3.0 making "addons" for AOL when it was "cool." Anyways, I am still no expert by any means. Not by a long shot, but I _KNOW_ I will be one day if I put my nose to the grindstone and hit the code head first. I am pretty good with C, Python, Bash, Vala, and Lua. I can sort of code in C++, but I don't really like it. I have made a constant effort to get into C++, but in writing a Gtk3 program, the C++ bindings weren't being updated fast enough so I grew frustrated. Maybe I will return to it again in the future. C++ is an important (and massive) language to get a grasp of. Here are my tips that I use to take control of my learning process:

1. CODE. This is the most important thing. Whatever language you decide to use, you have to use it! At least everyday. I make sure I get in at least 2 hours a day of coding. Since I am not a professional coder, this is vital to my success (er, future success, i'm still learning). When I get "wired in" I usually block access to my favorite sites in "/etc/hosts" so I can stay focused. Once I get going, I'm usually very productive, especially in python wink
2. Study! I read a lot about programming. There are a bunch of blog you can goto and read professional opinions about techniques. I like going to reddit.com/r/programming for cool stuff.
3. Read lots of source code. This is what I do most of the time, especially when I am trying to figure something out. Here, grep is your friend. Often I find myself doing this for Gtk apps because the documentation is lacking. I visit git.gnome.org everday to see whats new and read lots of code, usually on my lunch break.
4. Read K&R, and do the exercises. This book not only teaches C, it teaches good old fashioned programming techniques. Not tremendously useful when writing apps with glib, but still helpful.
5. When I see crazy code that completely blows my mind, I don't let it faze me. This is so true for OOP in C (like gobject). It just make me go WTF some times. When this happens, I take a breath, and start at the most logical point and work my way from there. I take lots of notes. And grep, lots and lots of grep queries. When I still can't figure it out, I hit google. The absolutely last resort is irc.

Hope this helps.

Offline

#7 2011-02-18 02:35:11

Dx9
Member
Registered: 2010-01-14
Posts: 5
Website

Re: How to get more experienced ?

Getting more experience is not the only way to improve your programming skills. I strongly recommend you to read programming books smile

Joining an open source project is always a good idea smile

Offline

#8 2011-02-18 22:42:17

rwd
Member
Registered: 2009-02-08
Posts: 664

Re: How to get more experienced ?

Job ads show which languages/tools/platforms are in demand.  So I'd say learn a few of the popular ones. The hard (and in my view interesting) part of programming isn't the languages or tools, because once you know a few you can pick up a new one pretty easy, but the math and concepts behind it. Also read some books about software development methods such as Agile development, and things like design patterns, usability, networks.

Offline

#9 2011-02-19 00:28:54

redcomet
Member
Registered: 2011-02-16
Posts: 8

Re: How to get more experienced ?

Some good suggestions. Picking up a syntax is not the hardest indeed, after learning C++ syntax it wasn't extremely hard to grasp python and php for example. At least the basics... When you dive a bit deeper there are of course things that are done very differently in each language.

Reading some books about topics like design patterns etc seems a great idea, these are exactly the things that I feel I barely know anything about. Does anyone have some good recommendations ?

Offline

#10 2011-02-19 01:56:08

Dx9
Member
Registered: 2010-01-14
Posts: 5
Website

Re: How to get more experienced ?

redcomet wrote:

Reading some books about topics like design patterns etc seems a great idea, these are exactly the things that I feel I barely know anything about. Does anyone have some good recommendations ?


I recommend you "Design Patterns: Elements of Reusable Object-Oriented Software" and "Refactoring: Improving the Design of Existing Code" smile

Offline

#11 2011-02-19 19:00:15

Nihathrael
Member
From: Freising, Germany
Registered: 2007-10-21
Posts: 82
Website

Re: How to get more experienced ?

http://www.amazon.de/Head-First-Design- … 0596007124 is a great Book on Design Patterns. smile


Unknown Horizons - Open source real-time strategy game with the comfy Anno 1602 feeling!

Offline

#12 2011-03-13 03:59:37

sigmund
Member
From: Milano, Italy, EU
Registered: 2009-12-06
Posts: 50

Re: How to get more experienced ?

My 2 cents are about a good IDE that may help you keeping organized and consistent.

I have been using Eclipse for 4 years and this is, in my opinion, the best IDE I have ever worked with: it is free, it supports almost every language you might think of, it is cross platform, that means it works well with Windows, Linux and MacOS, and! it gives you for free: syntax highlighting, code completion, code refactoring (variables, functions, classes names), code templates, automatic code formatting in whatever is the style or convention you would like to adopt, debug views, cvs, svn, git, doxygen, ...

It can be tough to have it running even with good packages, but if you download a small app from poweredbypulse.com you can install it in minutes and automatically update and change it for years and completely avoid any complexity by simply dragging and dropping the plug-ins you like.

Eclipse PDT is for PHP, CDT for C/C++, ADT for Android, PyDev for Python, Incubation for Ruby, ..., and the bare bone environment is just the native Java development environment...

Download that app, install and start. If you need to install on a second, third, nth computer, just download the app, provide your email and select the profiles you have chosen to install: pulse will just provide the full IDEs in minutes avoiding executables and plug-ins duplications.

It is a bit hard to get used to Eclipse, but it will pay you off in the middle and long term.
Just think that if you like Dreamweaver, Dreamweaver simply provides the 30/40% of what Eclipse PDT gives you for free! And don't forget the other languages!

Go grab it and start studying it! It is nice to work with the Debug views. You immediately become more and more proficient. Refactoring and source code formatting will give you a way to study others code listings in the way you usually look at yours!
If you introduce regression errors: go and compare any previous source code version: it is just there.
Eclipse might be a very good friend in your development life.

If Firebug and jQuery took you at the next level in Javascript development, you can bet that Eclipse will do to your development skills as well: Eclipse is just *THE° IDE you have been always looking for. Do not let its complexity scare you.

HTH!

Last edited by sigmund (2011-03-13 04:30:05)


Definitely moving to GNU/Linux made me trust Computer Science once again.
Definitely moving to Arch made me enjoy and understand GNU/Linux once again.

Offline

#13 2011-03-13 11:19:53

Hyugga
Member
From: Santiago, Chile
Registered: 2010-03-26
Posts: 335

Re: How to get more experienced ?

From me, working in a software development company (one with schedule and salary) really make a difference in my programming skills. Working under pression, talk with senior programmers, database experts and project managers is priceless.
Programming for fun and programming for a living is really diferent and both are the best ways to learn how to be a good programmer i think.
So here is my advise: get your hands dirty with the code, read a lot and talk with people who knows more than you.
Good luck!

Offline

#14 2011-03-17 09:59:04

n0stradamus
Member
Registered: 2010-11-08
Posts: 94
Website

Re: How to get more experienced ?

@redcomet:
Thanks for opening this thread, I asked myself the same just recently smile

I have already been thinking about contributing to an Open-Source project, but I don't know whether my skills are sufficient. I think that reading more code should help.

Offline

#15 2011-03-17 18:00:32

redcomet
Member
Registered: 2011-02-16
Posts: 8

Re: How to get more experienced ?

@n0stradamus

Lucky there still are places like this forum where you actually get good answers on this kind of questions.

@everybody

Thanks for all the good suggestions so far and keep them coming !

Offline

#16 2011-03-17 22:23:53

cesura
Package Maintainer (PM)
From: Tallinn, Estonia
Registered: 2010-01-23
Posts: 1,867

Re: How to get more experienced ?

In my opinion, the best way to really learn a programming language and be considered "experienced" with it is to pick an extremely difficult programming task and spend months and months working on it; although you may feel overloaded with cryptic code that most closely resembles Egyptian hieroglyphics, this method has always worked for me. smile

Offline

#17 2011-03-29 00:01:16

wilshire
Member
Registered: 2008-04-16
Posts: 10

Re: How to get more experienced ?

Read Code Complete if your serious about becoming a programmer.

Offline

#18 2011-03-30 09:58:05

tadevokle
Member
Registered: 2011-02-25
Posts: 18

Re: How to get more experienced ?

If you haven't already done so, try tackling the problems at the project euler website. The joy aside, it will give you a good understanding of algorithms, optimization and etc.

Last edited by tadevokle (2011-04-23 21:34:26)


'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind'. [Eric, Terry Pratchett]

Offline

#19 2011-03-31 09:00:56

Yob
Member
From: Warsaw, Poland
Registered: 2011-03-30
Posts: 6
Website

Re: How to get more experienced ?

In my opinion it's now a quite good idea to answer the questions: "What I want to do? What does interest me?". I think that you have to do what you will enjoy. Do you like python? Maybe it's time to create your first webapp using Django Framework? It's quite intuitive, well documented and powerful. Set your sight on writting your own CMS or other not trivial stuff smile Don't wanna create some webapps? Do you like C/C++? Have you never written some concurrent program? It's now time to do it smile Have you ever used boost libraries? They're awesome, try them wink What is more: maybe you'll be interested in writing drivers? Writing drivers is strictly connected with basics of kernel architecture. There is also a lot of stuff to learn here wink As you can see there is quite a lot of things you can do wink

Last edited by Yob (2011-03-31 09:05:10)

Offline

Board footer

Powered by FluxBB