Folks, beware that when you sign up for a career as a software developer, your days of doing nothing after work are over. For the last 2 months or so, all i have been doing is, after getting home from work, reading, learning, memorizing, taking tests and thinking about the exams - SCBCD and SCWCD. This Wednesday i will finally be taking the SCWCD, after passing SCBCD a month ago.
Now, if i manage to pass SCWCD, you know what it will mean? Nothing. There are .NET certifications i want to pursue, and the SCEA.
Anyone in a similar situation? My skull is not elastic enough for all the knowledge i am stuffing into it.
Anton Golovin (firstname.lastname@example.org) SCJP, SCJD, SCBCD, SCWCD, OCEJWSD, SCEA/OCMJEA [JEE certs from Sun/Oracle]
Depends on what you want in life. For someone I know, its just the money he wants and in India, typically, a certified person with knowledge is generally given preference over some one with knowledge and no certification
Now, if i manage to pass SCWCD, you know what it will mean? Nothing.
Wrong. That means you write code in a much better, professional and universally understandable fashion. Atleast, that is what is expected.
Anyone in a similar situation?
Tons of them. Most of them dont even know why they want to do a certification for. I wonder and envy so many times, the peace of mind and the quality of life, a low paying job offers. But then, we have our own addictions !
I guess you have to ask yourself why you really want to pursue all these different technologies? It's the career choice between being a "jack of all trades" who hedges their bets but is only adequate at everything, and an expert who is very familiar with one or two technologies and whose expertise is valued more! There comes a point where you cannot feasibly learn anything more: personally I dipped into C# on .NET, but I just didn't see the point. It doesn't do anything for me that Java cannot, yet I felt I couldn't become an expert with all the APIs on top of my Java knowledge without getting confused. And yes, there may well be jobs going for it, but there are many for Java too. So I'll stick with what I know and keep practising to become better, rather than hopping to a new language.
On the other hand, I still use C/C++ for native apps or via JNI where necessary. It's a really fundamental technology and when necessary overcomes all of Java's limitations on both server and desktop, so is quite important to me. For those reasons, it was worth my time to become highly proficient with. In the course of "normal business" we all encounter other languages too---like SQL, XML/XSLT, Linux shell/Perl etc. So we can add those to the list of technologies we can use in projects.
I suppose you could help yourself focus better by outlining what you really want out of it all? Technology is always changing (we'd like to say evolving, though sometimes it seems not!) and keeping up with it will always be a challenge. But if you can set yourself a 5-10 year plan by listing important technologies and what positions/jobs you'd like to find yourself in, it might all seem a little less overwhelming.
Charles Lyons (SCJP 1.4, April 2003; SCJP 5, Dec 2006; SCWCD 1.4b, April 2004)
Author of OCEJWCD Study Companion for Oracle Exam 1Z0-899 (ISBN 0955160340 / AmazonAmazon UK )
I think at any level in our software career, we have to find what we like doing and study in that. Finding that is not really hard as we get a gut feeling about what we are weak in at any stage and we naturally tend towards that topic. As far as evolving technologies is concerned, what we learn today will certainly help us learn new things easily and we will also learn them better if our base is strong. Don't be overwhelmed with hundreds of things flying around us, keep focus on 1 or 2 things at a time - let less learning sink into us instead of we sinking in a lot of learning.
Charles, you really think that is possible after you mentioning that technologies are "evolving"?
I think so. If we look back over the last 10 years in Java or PHP say, they have both grown considerably in popularity. The number of job opportunities has risen massively. Java and PHP have both evolved (added features like generics and various APIs, and PHP has gone OO at last) but it's a lot easier for someone to adopt these new features of a familiar language than start with a new one. C/C++ has been used for OS programming and as an alternative to assembly for well over two decades and I can't see it going anywhere soon.
What I imagine you're referring to is the emergence of new languages, or the increased popularity of older languages by new developments, like Ruby on Rails. You could be an early adopter and learn about all the new things straight away; if you've got enough foresight, you might end up being among the first wave of experts in the field. But it's not really necessary. Unless there's a huge marketing drive (like Microsoft with .NET), it takes years for a language to evolve to a point of widespread use, until which point there will be no jobs for it. Plus a lot of companies won't trust an emerging technology so again won't adopt it until it has matured.
With research about the technologies available on the market today, I reckon we can plan at least 5 years ahead with reasonable confidence. Many companies like games developers handle long-running projects (18-24 months) too, so that's a couple of year's stability there too. Predicting what will be the "next big thing" and trying to keep ahead of the trends is another challenge however.