Linux(General) programming HELP!

Hi. I’ve been programming for a while now in C/C++, mainly on Linux using the standard C/C++ library’s etc etc. Now I’m familiar when the many concepts of C/C++ like memory allocation, pointers, BLAH BLAH. BUT the problem i’m having is what to program, in order to increase my programming skills.

If you’re a programming reading this, could you please tell me how you started to increase your programming skills? I know you may think well actually programming might be the answer, but it’s WHAT to actually program that would further my skills.

Any help please.


Try writing a basic text editor. That’s what taught me ‘C’. Don’t bother about appearances, menus, the mouse, focus on something that runs in a terminal and handles large files as well as it does small ones.

To increase your skills you need to start to make application that you do not have a slightest clue how to make.
You only need to know what to make, but not how.

Then, with persistent hair pulling, googling, sleepless nights, you’ll get the skill.

KJ44 gave you an excellent example. Besides text editing, you may make simple front end for some of the programs for image converting, video converting, search or whatever else.

Whatever you know the least, is better option.

Try socket/network programming. Set up a job with output on one server, and have another server listen for and recieve output. This will add a well used dimension to any program. Pay close attention to security on this.

Something bringing you a huge step ahead? Try something which interacts with the kernel, has time critical parts, lots of I/O. Let’s say a driver for some unsupported class of webcams. This is not a huge never ending project. It is compact but tricky.

For good programming direction I’d recommend reading at least the first two chapters of The Art of Unix Programming, by Eric S. Raymond. “The Rules” are probably the tersest guidelines for improving your skills I’ve ever read.

+Advices from others.

One practical project:
Have a look at the SANE project (Linux scanning project). There is a SANE backend for cameras but it uses version 1 of the v4l (video for Linux) library. There is a new v4l driver (Version 2) and is much better. However, the SANE backend still needs the old version (provided now via a compatibility layer). Several of the new cameras do not work well because of this. Even though I communicated with few of the SANE developers, they are not interested in it now. So, it will be a good idea to work on it.

This might be kind of interesting, KDE Klassroom, if your path is to get involved.

Grab a project and just start helping. It might start with just documentation, and progress. A lot of the major packages have development sections on their web sites.

Code, code, code, and more coding. Learn by doing.