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.
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.
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.
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.