So while this has nothing to do specifically with Ubuntu, it’s more a request to the community
I’ve recently dabbled with some PHP & MySQL on a test server running from my desktop, as I’ve been meaning to learn PHP for a while. I think it’s gone OK, I’ve learnt quite a bit, but it may help that I know some C (setting variables is very similar etc.). What this little PHP learning experience has done (other than taught me some php), is reignite my passion for programming.
I’ve always enjoyed programming, that doesn’t mean I’m fantastic at it, but I really do enjoy it, the only thing I really struggle for is ideas for programs/applications. What my request to you – the community – is, is whether you struggle for ideas as well, if not, then do you have any you’d like to suggest?
9 Responses to “Programming Ideas”
Sorry, the comment form is closed at this time.

While there is no shortage of ideas in the world, or even good ideas, what is sorely lacking is a) great ideas, and b) great programming.
Great programing can come over time, so let’s not worry about that one right now. The hard one is to come up with truly great ideas. Test it by searching for your new idea on Google; chances are, there is such a thing already.
For me, a great idea is something that takes some old ideas and put them together in a new interesting way. But all of this is highly subjective; one’s great idea is another’s rubbish idea.
For example, JQuery was not the first JS library of its kind, but it’s the one I think propagated the Web2.0 world (with a pat on the back to Prototype for the same). XSLT wasn’t the first XML transformation language, but the one that did it all right. PHP isn’t the most elegant and full-featured language, but it has just the right amount of everything to make it useful. Java in itself wasn’t all that, but the concept of the JVM was. Simular was a fantastic idea, even if it didn’t become popular. And on and on it goes.
As to your preference for PHP and MySQL, dig into WordPress and clean it up. It’s a successful piece of crap code that needs some great ideas to make it future proof. That would be awsome!
Alexander: I think you’ve hit the nail on the head there!
I may take a look into some various open-source projects, I think it could have the benefit of teaching me to read other people’s code a bit easier (along with the comments), as well as give me something to do
Learning from your own mistakes is much more educational.
What I would recommend is taking a look outside – think of a group of people that could benefit greatly from using free software, but do not know that yet, for example because they are not tech minded. An example would be – community organisers. Then think of what could be one piece of software that you could write with the tools of you choosing that could bring the most benefit. Talk to a few of them if you do not know yourself.
Make a specification, write the software, get a few ‘close users’ that you can see using your software and try to build a community so tha people can point to your mistakes. And that is how you learn a new programming language or a toolkit the open source way
I don’t go looking for ideas of things to program. Because if I do, then I quickly lose interest. What you need to do is don’t worry about something to program, but the moment you catch yourself thinking “wouldn’t it be cool if — ” then write it down and you have an idea.
If you want to contribute to other projects, it’s similar. Take a look at a project you like, poke in their code a bit. Then when you get the wild idea that you think that the software should have feature X, go search for it to see what others have done. Ask around on how to contribute. Then dive right in.
(PHP is my pet peeve, but if you need any help, you know where to find me.
)
Hi Joe,
I’ve learned a great deal about programming in the last 2 years, and even before that I was doing Summer of Code. I can imagine you stand at around the point where I was a couple of years ago, knowing some C and C++, done some PHP sites and feeling like a real programmer.
The truth is, the more you learn, the more you understand that there’s no such thing. I know, the last sentence was a bit melodramatic, but still, it’s true. Unfortunately, not only WordPress is a bad piece of code. Basically everything is a piece of slow, bug-ridden, not-well-thought-out code. And truth is – once you get from the kernel up, it gets worse. X, KDE, GNOME, HAL, every major web browser.
The sad truth is, most of that stuff never gets fixed because there’s little need for that – after all, slow apps get faster thanks to the Moore’s law, we don’t have to care, right? Wrong (well, for me at least).
What every good programmer needs is a good theoretical background. I’m not saying calculus, just make sure you understand what a Big-O notation is, what’s the best sorting algorithm on a RAM machine and on a pointer machine, some basic graph theory (up to say flow networks).
If you know that already, try fiddling with some non-imperative programming languages. I recommend Haskell – it really opened my eyes on functional languages, and by learning it you learn a lot about programming in general.
What I’d avoid is plunging into a bad code (bad as in badly designed, slow, full of hacks) and trying to understand what’s wrong with it. You need to understand what makes programs slow (theory I mentioned earlier) and you need sufficient experience with good program design to get that. Try reading good source code first, or perhaps try doing something on your own – making simple mistakes, creating a badly-designed application and understanding why it is bad – such experience is invaluable, even though it may look useless at first sight.
As a way to end this rant-reply, I offer my humble observation – a lot of software that I consider high-quality (TeX, for example, Glasgow Haskell compiler, Google search engine core) comes from people with a substantial academic backgrounds. And the converse is usually true as well – badly designed software is built by committees or “engineers” – people who rather concentrate on coding than on thinking.
And last, but not least: Good luck!
Wow thanks all. They’re all good responses (that doesn’t mean I don’t want any more
).
I’ll definitely give some of the options here a think, I have to agree, when I’m coding, even if it works I’ll sit there thinking “I’m sure there’s a better way I could code this”. I.e. more efficient or something.
:evilgrin:
Some four years ago I was committed to do the IT for my union. I was the only one with any chance of doing it (it’s a little union) but I had no idea of building web pages, although I had been programming in C and C++ in remote times. So I had to learn PHP and MySQL and fast. First thing I did was telling my historian friend “¬øwould you like a web page on History? I’ll do it for you”, and had him drafting ‘specifications’ for it. That was my first project and it posed all the basic problems I was going to face with the real thing: menu systems, access permissions, etc. With the applications I had to build after that I noticed that I was evolving my own ways of doing things, and that the most interesting problems that I had to handle related not to the application itself, but to some of its parts that I had to reuse afterwards for the next. What I’m trying to say is that what the idea for the application is, is not really important, as long as it has enough complexity. You could do with a system for sharing recipes online with your friends or an online movie database. The interest will be in solving problems like ¬øhow do I make the application menus dependent on the user level of access? and things like that. You will end up with pieces of software that will be using once and again while you perfect them. It doesn’t matter if someone solved the same problem before: it will be your code and you will be developing your own manners with it.
I hope this helps and that my English is not too obscure (me Spanish).
I won´t give any advice/idea, i think all of them are already gave. I just wanted to say that sometimes we have good ideas, but in fact really bad, because our brains work sometimes in a false rhythm. We have to work making our ideas more productive for a real world