You are currently browsing the tag archive for the ‘Passion’ tag.
Further to my first post on Project Euler I invited the members of the GDC to take on a 12 week challenge to improve their programming skills by solving 12 problems, then aiming to improve their solutions by reviewing other approaches and finally blog about their progress.
We had a great response with over 10 people agreeing to take on the challenge, three of whom have already set up blogs to track their progress. Good luck Fatos, Adam & Gabs.
So that everyone can easily keep track of the participants progress (and anyone else who sets up a blog and takes the challenge on), I have set up a site to aggregate all the blogs into one. Please check out our Aggrity site. It currently aggregates the blogs from Adam, Fatos and Gabriella but also the GDC Blog and the GDC Careers Blog. This is not just for the Project Euler challenge, our intention is to add any feeds/blogs relevant to Graduate Developers, so that you can see everything related to Graduate Developers in one place – if you know of a blog/feed that we should add then just let us know. Special thanks to Brendan Quinn for developing the Aggrity.com site.
If you are interested in taking on or finding out more about the GDC Project Euler challenge, here are the brief instructions. Just let me know and I’ll add your blog to the site.
- What do I have to do?
- Basically solve 12 different problems from Project Euler, keeping a diary to track your progress. Once you have solved the problem, read about alternative solutions from others that have solved it and come up with a new improved version of solving the problem.
- Why should I do it?
- There are two main benefits to you. Firstly it will improve your development skills and secondly it will improve your employability. With record numbers of graduates unable to find employment and many employers looking for the candidates that stand out, this is a way of elevating your profile. Many employers are looking for candidates that have gone above and beyond their academic projects to develop their skills. This will help your CV stand out, will act as a superb talking point at interviews and you can use the skills you develop to help with problems at technical interviews. You can also use it as a way to publicly show off your programming skills.
- Ok I’m in, so where do I start?
- First thing you need to do is write an initial post. This should be relatively brief and give details of your name, current position (in academia, employed), how man years commercial experience you have, your reasons for attempting this and what you’re hoping to learn. If you currently have a blog then we would recommend using that or obtaining a free one from http://www.wordpress.com. If you do not currently have a blog and are looking for something simple then just start a google doc.
Once you have done this, sign up to http://projecteuler.net. Have a read through the details of the site and then find your first problem to solve. (We would recommend starting with problem 1)
- How do I go about solving them, and what do I do once I have?
- You can use whichever techniques you want to research and solve the problem, feel free to use the GDC mailing list for help. Each problem has been designed according to a “one-minute rule”, which means that although it may take several hours/days to design a successful algorithm with more difficult problems, an efficient implementation will allow a solution to be obtained on a modestly powered computer in less than one minute.
Here is the important bit, once you have successfully solved the problem you will be granted access to the problem’s forum. At this point you need to spend some time reading about how other people went about solving the problem. At this point you need to come back and try to solve your problem in a new more efficient way.
- How do I track my progress?
- Once you have given a new more efficient solution you need to track your progress. Add a post to your blog which lists the following:
- Which problem you solved
- Difficulty level
- Your first solution
- Techniques used to solve problem
- How long did it take you to solve problem
- Your final solution
- Any problems you encountered, and how you solved them
- What did you learn
- What do I do when I’ve finished?
- Once you have completed the 12 challenges, write a final post to summarise what you feel you have learned, some of the major problems you overcame. At this point, you’re free to tackle as many of the problems on Project Euler and can continue the blog if you like.
I came across this post today titled “How I Failed, Failed, and Finally Succeeded at Learning How to Code” http://www.theatlantic.com/technology/print/2011/06/how-i-failed-failed-and-finally-succeeded-at-learning-how-to-code/239855/
It talks about Project Euler and how it is a great way for junior developers to go beyond the teaching at University and discover their passion for programming. I would recommend reading it and giving Project Euler a try to anyone new to programming.
Vithun Kumar Gajendra is a recent Masters Graduate. In this short post Vithun recounts how software went from being a skill to a passion. It is well worth a read to discover how all of a sudden things started to click and how that has already started to make a difference in his work.
My name is Vithun Kumar Gajendra. I am originally from India, and completed a Master’s course in UK under a student visa. Before coming to UK, I worked as a Software Engineer for about 15 months, and I was very much in the thick of action. This work experience would also go on to help me to understand the stuff I studied in the Master’s course even better. My experience here was like a typical recent graduate who enjoyed doing quick programming tasks at college level. I used to solve problems very quickly (I used to be the quickest in my batch at office!), and would go on accomplishing a lot of things within these 15 months. I worked on problems and mini-projects in fields ranging across Shell scripts, CSS, JSP, Servlets, Oracle PL-SQL, SOAP Web Services, a bit of Spring etc. I had a good time working as part of a team making use of tools like CVS, Bugzilla etc. I also got introduced to how tools like Eclipse, Maven, Ant, Hudson etc. were being used in a development environment (I had no idea about the existence of some of these tools before!). In short, this was a period where I was a really good jack of all trades, but unfortunately the master of none. I now look back at that time, and feel that my speed was actually a curse. I did not have the patience to stop and look in detail at some of the things I had done and understand them in depth. I just thought I could do anything and did not worry about how I did it.
I then came over to the UK to do my Master’s course. I did an MSc in Advanced Web Engineering in the University of Essex. It was here that I had my first “eureka” moment. I had this module called “Software Design and Architecture”. In this module, I was formally introduced to the concept of “coupling” in software engineering. And I suddenly realised that I had never thought about writing code in a clean way before. All that I focussed on before was to write code that would get the job done. Now I suddenly realised that there was a good (“artistic” if you might) way to write code. I suddenly realised what a fool I had been! And all of a sudden, I began realising the role of concepts like refactoring and design patterns. (I had been part of a “refactoring” team in my previous work experience without having this knowledge). And now, I turned wise. I realised there is always much more to learn (and apply).
Once I completed my Master’s, I had to wait a few months. I could not find a job as I was still under student visa. And I wouldn’t get my work visa until I got my degree results. So it was in this period that I decided to have a look at Spring. You might ask: Why Spring? I had been introduced to Spring at Mformation. I was required to rewrite existing DAOs using Spring templates and thereby eliminate boilerplate code. I just followed the instructions of my team lead: “Rewrite the code using Spring methods. Declare something in some XMLs and it would work.” It did work, and I did not care at that time how it worked. For some reason, after my Master’s, I thought I’ll have a look at how this worked. And then another eureka moment struck me. Spring was not something that just helped in simplifying DAOs. It was LOTS more than that. I began studying it in detail from the basics(Dependency Injection, Aspect Oriented Programming). The more I read about it, the more I started getting excited.
By this time, I got an internship offer. They required someone with HTML and MySQL skills, and although I wanted to work with Java, I tried to keep myself occupied until I got my work visa. But my interview here went rather well, which in turn made them think about my position as being somewhat permanent and not just an intern. However I joined on a temporary contract (as I still had just a student visa). I was given an in-house problem (of reasonable complexity) to solve. I came up with a concept, which I thought would work. I wrote a proposal, and my manager suggested me to implement it using PHP. I requested him if I could do it in Java, and after a bit of reluctance (because PHP was used mainly for development within the company) he agreed. I now got the platform to use my Spring knowledge (gained mainly by reading and doing small examples). I developed a proof-of-concept within 7 days. Through this course, I made use of Spring, Hibernate, Maven and Eclipse. I created a well-structured and organized code-base. My manager was impressed with the solution and the speed at which I implemented it. He considered it an “elegant” solution to the problem. And this time I was satisfied that my speed had not come at the cost of learning. I understood more about Spring and my interest in Spring has increased even more. I informed the management that I did not intend to take up a permanent position (because they were looking for someone who would do more with PHP, and I did not want to give up Java and Spring, and I also wanted to relocate to London). So towards the end of my tenure, I had to explain the application I had created to a colleague who had a good understanding of Java, but no knowledge of Spring/Hibernate. Within the next couple of days, I managed to impress her with what all Spring had to offer. She was also able to easily pick up the code I had written (and the best practices I had followed). She also decided to use my proof-of-concept as the base and extend it to completely satisfy the requirements. I left the place with a very good feeling and a sense of accomplishment, and with good relationships forged.
Vithun Kumar Gajendra