If you have ever travelled by plane, there is a pretty good chance that somewhere in the background the business processes that made your journey possible were supported or enabled by some system running a program written in Java. It may have been a short domestic flight - like a flight from Sydney to Brisbane, Atlanta to Miami or São Paulo to Rio de Janeiro - or it may actually have been an international flight - maybe from London to New York, from Montevideo to Santiago de Chile or from Moscow to Mumbai. Either way it is highly likely that some system that was part of enabling your journey as a passenger was running in Java. It may already have been the web application that allowed you to search for a suitable flight and purchase a ticket online. How does such a search actually work? Basically, the program that processes your request uses different data structures and algorithms and communicates with other systems such as web servers, application servers and database systems to extract the information that you are looking for. Depending on how far you have already proceeded in your journey on CodeGym, you will likely have come across the very fundamentals of such search operations. I'm sure the "ordered isomorphs from Planet Linear Chaos" will have given you an insight into some of their sorting techniques. If you have not come across them yet, then pay good attention when you get to the task "Ascending numbers" in lesson 11 on Level 6. This is pretty much where it all starts. Now back to your journey as a passenger and the various systems that communicate in the background in order to make sure that you have a smooth travel experience. Once the date of your flight arrives and you actually go to the airport, more systems will accompany your trip. It starts with the flight information display system that you may have a look at on some of the big screens in the terminal - or maybe on an app on your phone. It will for instance help you find out which check-in counter you need to go to. The check-in counter itself may be operated by a person or may just be a self-service check-in. Either way there will be a program running - possibly written in Java - that checks the details of your flight and whether or whether not you do have a suitable ticket. In the next step you'll probably hand in your luggage - either to the staff at the check-in counter or to a self-service baggage drop-off counter. And guess what - in both cases another program will check the details of your flight and your ticket, and will make sure that you neither exceed the number of allowed luggage pieces nor the luggage weight limit. And how do the check-in and the baggage drop-off systems actually know all the relevant information about the details of your flight? That's a good question. In short, the programs will be communicating with the central airport operational database (the so called AODB) to check for the flight details on the one hand, and with the airline's information system to check for your specific passenger information on the other hand. Before you actually board the plane more systems will have communicated with one another in the background in order to make sure that your luggage gets onto the correct plane, that the plane has food, beverages and snacks on board, that the fueling vehicle provides the correct amount of fuel to the correct plane at the correct time and that the flight crew has all the necessary flight information. And now that you're actually on the plane, the entertainment system on the plane may be written in Java. But even if it is not, there are still more programs and systems that are interacting with one another and that for example check with the air traffic control whether the plane can leave at the scheduled time, and thus be sequenced for take-off on time, or whether there may be any delayed arrivals or departures that need to be waited for. Another system for instance checks for weather conditions, and will send an alert in case there are any serious weather conditions ahead that make it necessary to postpone the actual take off time - maybe by just a few minutes, maybe by more. All in all, there are many systems interacting and quite a number of them are written in Java. This was just a very basic overview of how various IT systems enable us to fly from city to city or country to country, and thus be able to work, visit friends or simply spend a vacation in various places around the world. Pretty fancy, right?! ;-) Your contribution And you - as an upcoming Java Developer - can contribute to simplify and improve various areas of our lives with beautiful code that solves real world problems. If you think that all needed programs have already been written, then think again. The number of possible improvements through good systems are pretty much endless. And the number of already existing Java programs that need to be maintained, customised and adjusted to new requirements is pretty substantial as well. As another example, just think of the health sector. Scientists in one country may be working together with scientists in other countries in order to find a cure for a disease. The data exchange is enabled through networks and programs, so that the findings in one country can be used in other countries straight away as well. Thanks to this kind of collaboration better and faster improvements are possible. And for good measure, let's take a look at one more example. Have you heard about the term IoT? IoT stands for the "Internet of Things" and is another big area in which different smart devices running little programs - many of which are written in Java - are connected with one another and enable a very comfortable way of life. One specific example may be a smart home environment, in which you are able to control your heating system at home via an app on your phone. This way you're able to switch on the heating in your home just in time before you actually get back, and you therefore arrive in a cosy place. There are many, many more scenarios in relation to IoT - and Java certainly is one big enabler here as well. To summarize... ...there are more than enough scenarios where good communication systems and fine-tuned algorithms can support various areas of our daily lives. I hope that this little excursion into the Java world at an airport and the short outlook on places for Java programs in various areas of modern life will give you an extra push of motivation to really find the drive to be able to follow through on your path to becoming a skilled and recognized programmer. ;-) :-) Team work and a rewarding field of work Just one more thing before I start to tell you a little more about myself and my experience with CodeGym - the IT sector in general can be very rewarding when you're working together with a good team and the team members support each other. That actually is also one of the really cool things about working in IT in general - and working as a programmer in specific. We are not competitors, but we support each other and learn from one another in order to progress altogether. I really love this point. :-) And there's room for plenty of skilled professionals. In fact, at the moment it looks like that it's unlikely that there'll ever be more supply of good professionals than there is demand for. I myself work as an IT specialist in the airport environment, maintaining and customising applications, implementing new software solutions to improve business processes and integrating systems. In addition to the fundamental Java skills that you'll be able to gain at CodeGym, you should also make sure that you gain knowledge and skills in working with databases - especially relational databases such as Oracle, Postgres or MySQL. Furthermore, you'll also need to be able to work with frameworks like Spring and Hibernate, which are commonly used in the enterprise application environment. And gaining this knowledge will be a lot easier once you've properly set your foundation by going through the CodeGym course. My experiences with CodeGym I think that you are actually pretty lucky to have come across CodeGym. I myself have gone through all four quests - Java Syntax, Java Core, Java Multithreading and Java Collections. I have completed every single task, which makes a total of 1307 tasks - starting by accumulating dark matter with easy tasks such as typing in code, printing out text on a line or watching an interesting video - then further proceeding to solving some quite challenging problems, getting a good look into multithreading and finally applying the acquired fundamental knowledge from the first 20 levels together with the specialised knowledge that is provided in the higher levels to write some cool, real world mini-projects. I'd say that most tasks were interesting and valuable, with my personal highlights being the "Writing a chat application in Java" and the "MVC design pattern" from the Multithreading quest, the "Java log parser" and the tasks about XML and JSON as well as socket connections from the Collections quest, and the Snake game from the Games quest. Solving those tasks really will provide you with knowledge and skills about how to come up with solutions that you will need to come up with on a regular basis as a programmer. Logging and data exchange via XML and JSON for instance using socket connections are also highly relevant topics in pretty much any area of systems integration and are widely used in the realm of airport IT. Your journey It is a journey to go through all four quests, it may be long and challenging at times, but it will be totally worth it. You can read another ten books about programming, you can watch another ten tutorials on programming, but nothing will replace you actually doing relevant, practical tasks yourself. You need to read code, you need to write code, you need to create solutions on your own, you need to understand other people's code and you need to debug, debug and debug. Books and tutorials are good in order to support your journey, but nothing can replace the practical experience that you need to acquire. And not much will make you more confident and content with yourself than having gone through this process. It is not easy in the beginning, but it will get easier and easier with time. Finishing the Java Syntax quest really is the first milestone. And if you then keep at it and make it all the way up to level 20 - and therefore complete the Java Core quest as well - you'll be ready for some real good fun with the mini-projects. I hope you'll be able to stick through the first two quests, if you do, I'm sure you'll be able to enjoy the mini-projects just as much as I did. On the way there, it may help you to make the following saying part of your own thinking and doing - it is - "If it is to be, it's up to me!" Say it out allowed - "If it is to be, it's up to me!" Yes, that's it. You are in charge and you can learn how to program, regardless whether it is for a hobby, for school or for a professional career. And yes, at times you may want to kick the validation system's "ass", but that's good because that means that you are involved, and I can promise that this will pay off for you. Yes, there were a couple of times where I was pretty much a hundred percent sure that my code was working properly, but validator still didn't let me pass. It won't be too often, but if you get into this situation, just try different variations and do not hesitate to take advantage of the available help section. You may find a valuable hint cause somebody else may have faced a similar issue, or somebody may give you a hint to your particular problem... :-) And maybe allow yourself to extend your timeline a little bit - say rather three to six months to go through the CodeGym course and learn some database and SQL fundamentals along with that, and another one to three months to learn about Spring and Hibernate. I mean, in the end it all depends on you, but I would simply like to emphasize that you should not put too much pressure on yourself in terms of the timeline. It simply takes time to gain knowledge and real skills, but the good thing is that you're on the right way, and that the content of the CodeGym course really cuts to the chase. There is no time wasted here and the lessons and levels really built upon one another very well. Just start the journey, be consistent and persistent - and you will succeed. ;-) One more thing Alrighty, alrighty, before I wrap things up, I'd like to answer one more question that you too may have. Can the CodeGym course be compared to a regular college or university unit of study on programming? I'd say, yes it can. It actually covers more than most introductory programming units and even covers a lot of advanced topics, such as multithreading, building graphical user interfaces, writing your own collection classes, socket communication, and even design patterns such as the MVC, Factory or Command pattern. Apart from the comprehensive and structured content the big plus certainly is the amount of relevant tasks that you'll be able to practice and hone your programming skills on. The instant task verification, the feedback from the mentor and the help from the community are really hard to beat. On the other hand, if you are lucky to study in a course at uni with a fantastic professor who himself is skilled and has a lot of practical experiences, and furthermore is able to really inspire his students and who provides them with practical, real world tasks, and in addition to that you also have some pretty good and motivated fellow students, then the uni experience will be hard to beat. But to be honest chances to have such a fantastic uni course are not that high, and even if you are one of the lucky ones who has such a course, the investment at uni will probably be a lot higher, and you will most likely still neither have a better set of tasks nor a better validation system... :-) International study experiences And yes, I myself have actually studied at uni, I have studied in Australia and in Germany. I have had a couple of really good and valuable courses with good professors and I have also had a number of courses that were nothing more than a waste of time - so I believe it's fair to say that I have seen both sides. And I have not only studied together with economists, scientists and engineers, but I have also exchanged experiences with many international students, whether they were from Chile, Brazil, France, Spain, the USA, Ireland, England, Indonesia, Vietnam, the Netherlands, Switzerland, Sweden, Denmark, China, Russia or Canada - just to name a few. And while there are certain differences in how the teaching is provided in different countries, the teaching methods in general are quite similar. In any way the biggest issue in most areas is the fact that oftentimes students are not provided with real practical skills that will enable them to comfortably earn a living. Please make sure that whatever you do, you are really not just inhaling and consuming some theory, but you actually do apply whatever it is that you are learning. Otherwise, the cavalry will not be coming to the rescue... ;-) :-) So much for a few hints from my side. Luckily you are here now, and CodeGym has pretty much put together a course that will provide you with the necessary knowledge and skills to learn programming and - if you so desire - to become a Java Developer, and the entire community here will support you - along with Captain Squirrels, Diego, Ellie, Kim, Rishi, Bilaabo, Julio Siesta and of course Professor Noodles - but you are the one who actually needs to walk the walk. I wish you all the very best for whichever direction you choose to follow and hope that you'll find the way that is right for you. And remember - if it is to be, it is up to you. With that being said, all the power of CodeGym is at your disposal. ;-) :-) Cheers Seb P.S.: If there's anything else you still have questions upon, you're welcome to get in touch with me.
GO TO FULL VERSION