A beginning programmer

Kevin Krammer kevin.krammer at gmx.at
Mon Jul 11 00:16:45 BST 2011

Hi Eric!

On Monday, 2011-07-11, Eric wrote:

> My problem is this though... I don't know what to do with this new
> found knowledge of these languages. I just don't know
> what to do with it, I don't have any problems that need to be solved
> and unfortunately I don't really see myself as familiar enough with the
> languages (except MAYBE c++) to start trying to help everyone here at KDE
> or even Gnome.

I think it is true that it got a lot more difficult to find things to start to 
work on then it used to be "in the old days".
Back then the ecosystem lacked a lot of applications for common tasks or the 
existing once had an obvious lack of certain functionality.

However, I think it is important not to look for something not yet existing 
when trying to find a problem to solve, but maybe look at things that could be 
optimized instead.

A lot of programs we use every day are improvements over programs that came 
before, just automating things better or providing certain workflows in a more 
integrated way.

For example lets have a look at the topic of digital photo management.
Initially all things were done manually, e.g. loading images from the camera 
onto the computer, putting them into a meaningful structured storage (e.g. 
folder named after the location or event where the photos were taken, etc).

While all aspects of the common workflows were available already, it made 
sense to combine certain tasks into single applications to make them more 
integrated and more automated. Hence several dozends of image managment apps.

Now one could reasonably thing that all needs were now covered, however the 
situation changed slightly and online image galleries/sharing platforms became 

Again uploading to these could be done already, they are all web sites so 
uploading can be done with the web browser.
However it made sense to make this more comfortable by adding uploading 
functionality to the image managment programs.

Basically all programmers I know personally, including myself [1], have 
started with something that automated one of their personal tasks better than 
any solution available at that point.

> I'll sometimes be roaming linuxhomepage.com / lxer /
> phoronix and see some new patch mentioned, and out of curiosity I'll click
> on it and read it, and
> I have to say.. alot of the time it looks like gibberish to me. Even
> with comments,
> I can't make sense of it. Perhaps im simply unlucky and choosing the
> more... low-level
> patchs to look at, but I got to say, its rather disheartening when I
> can't even make sense
> of what is going on.

A patch is often only understandable in the context it applies to, unless it 
is a really huge patch which "includes" the context (like all code for a 
completely new feature).
This is even true for developers working on the respective code, which is why 
there are a lot of tools that let one look at a patch as part of the code it 
applies to, i.e. merged with the original code but somehow highlighted to see 
its boundaries.

> I know this isn't strictly limited to KDE but I'm sure that my situation is
> hardly new to programmer's the world over.
> Any feedback is much appreciated!

Aside from doing something that is just fun and does not necessarily solve 
anything of wide spread importance, one way is to look for items specifically 
targeted at people who are not yet familiar with a certain code base.

In KDE we refer to those task items as junior jobs (junior not in the sense of 
a younger or less experienced person but in the sense of complimentary to 
senior in the sense of knowing a lot of details about assumptions or hidden 
traps in our sometimes dauntingly huge code bases).

Junior jobs can sometimes be found on techbase.kde.org or as items marked as 
such on bugs.kde.org (not necessarily bug fixes but also user wishes or 
suggested improvements).

Aside from our "JJs" there are two common areas of interest where new people 
start contributing to: games and edu.
Games because they are fun (to play and testing your new code means you will 
"have" to play a lot) and Edu because a lot of people who start contributing 
are either still in (high) school or (like yourself) have just graduated and 
can thus relate a lot to the topics at hand (and might know about features of 
contemporary teaching software which might not yet be available in free 
software equivalents).

I can basically guarantee that there is no sub project in KDE that will reject 
newcomers just because they are unexperienced.
Some groups even have (semi-) official mentors to make the initial steps into 
contributing more comfortable (e.g. not having to ask question on a 
mailinglist but being able to contact the mentor privately).


[1] I distincly remember an application I spent weeks on coding (as in several 
hours a day, during holidays) while in high school which's whole purpose was 
to automate drawing hexagons connected to each other.
The "problem" I was "solving" had been this: I had read an article about human 
habitats on other planets or moons would be more viable if constructed of 
interconnected modules that fit nicely together to form an extensible 
Now the best possible base shape for that is a hexagon, since they can be 
joined tp cover any area without leaving any holes and six corners provide a 
better structural stability than four corners (and squares are lame :)).
Drawing a lot of connected hexagons can be automated a lot even when doing it 
on paper (basically use a triangular grid), but that still got old pretty 
fast. Hence the need to a software to do that.
In the end I had a program that was doing something I had no real need for, 
nobody else would ever have a need for, but I had learned a lot about computer 
graphics :)

Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde/attachments/20110711/aa764d76/attachment.sig>
-------------- next part --------------
This message is from the kde mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.

More information about the kde mailing list