Follow Up on My Java Certification

December 12, 2017

It has been a while since I blogged about this and I wanted to circle back and give my summary in retrospect of my certification process.

First of all, I passed the Java SE 8 Programmer I exam! Cool!

I started studying in January of 2017. Admittedly, I wasn’t as diligent or disciplined as I could have been or should have been. Overall, I probably put in about 200 hours of study time. The book I used was the “OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808” by the publisher Sybex. It was an okay book. There were a few things that I didn’t like about it. I felt the examples on lambdas were confusing and the chapter on a major portion of the test, polymorphism, was inadequate. Fortunately, there are lots of other sources of material that you can pull from. Probably the best thing about this book was a companion app in the Apple app store. I had to buy it (about $8) but it let me review tests and take full tests from my iphone and my ipad. For me, this was hugely helpful!

What about the effectiveness of the information? Did what I learn help me in any way be a better java developer? Well…that might be debatable. While I think it was good to go through the process of learning and filling in gaps in my own understanding, I think there are portions of the exam that are just silly. The exam will make you study things that just don’t matter because you will never use them in the real world. In fact, there are sections of the book where the authors literally say “Don’t do it this way in real life. Just learn it for the test and know you CAN do this, but don’t really do this.” I won’t get into specifics here. If you want to have a discussion about the specifics, let me know. We will set up some time to discuss it.

So, what does this mean? Is there any significance in my day to day life after having my first certification? From a functional standpoint, there is probably not much difference. I know a little bit more than I did when I started, and that is always a good thing. Probably the biggest difference is that I now have this on my name. It has become a part of my personal brand. I don’t want to brag about it, but it is a thing that does distinguish me from those who don’t have the certification. It is a badge that I wear that says “I value my personal and professional growth enough to put the time into becoming something more than I used to be.”

I don’t know why you wouldn’t want to put the time and effort into it. It will only make you better and, honestly, it wasn’t THAT hard. It’s not like it is a master’s degree or even a course. It is probably about the same amount of work as a college level undergraduate course. Spend a semester studying it. Then register for the exam. Then work your way toward the exam. If you want some help and guidance on how to plan it out, let me know. I’m happy to help!


To Certify or Not To Certify

December 12, 2017

I’ve been doing a lot of studying lately to prepare for the OCA Java SE 8 Programmer I exam. I wouldn’t say my study schedule has been vigorous, certainly not the kind of studying I would do for a college-level exam, but more than an hour a day on average. My exam is coming up this Friday and I feel pretty good about it. I get at least 80% on all of my practice exams and I’m starting to get to the point where I “might” be over-preparing. Not a bad thing for having a few more days to wrap up my efforts.

But all this work has me thinking, “Is it all worth the effort?” What am I going to gain by having a certification? Should I continue on with the Java certification track? Should I diversify in something else? I have been doing Java development since 2001. I should be pretty good at it by now, but I am finding little things that I never knew. So, it isn’t as if I’m not learning anything, but is that enough?

A number of years ago, I was at a No Fluff Just Stuff conference. During the Birds of a Feather mixer, I struck up a conversation with one of the speakers who was also an author of several well known books in the Java domain. Our conversation eventually led us to the topic of the Java certifications. His response was “What’s the point? I don’t have mine.” So, is there a point? I guess I can understand if a person is fairly new to the Java space or if they are new to the industry. They would want to show prospective employers they know what they are doing. A certification might demonstrate you have sufficiently studied the material to achieve a one time passing score. Is that exam good enough to prove that you have the basic knowledge to code at a certain level an employer is looking for?

Without standards, an exam is just a way to show you have studied some arbitrary material and can remember it long enough to pass a test. If that exam is recognized by industry leaders as a measurement of skill in that industry, that’s a whole other argument. But, in the case of the OCA exams, it is not there yet because there are no industry standards. If there were, we wouldn’t have to have coding tests during interviews.

We like to think we are engineers, but, let’s face it, we’re not. Until we get some standard measures of skill to back up what we do, we might as well call ourselves artists. If we want to be an engineering industry, we should take a page from the other engineering disciplines like electronic engineering or mechanical engineering.

I’m still planning on continuing with my certifications. I’m just not 100% convinced they are worth all the effort and cost. Any thoughts about this are welcome.


Hell has frozen!

March 30, 2016

A native bash she’ll is coming to Windows 10 this summer!? What does it mean??

http://www.theverge.com/2016/3/30/11331014/microsoft-windows-linux-ubuntu-bash


And this is why I refuse Javascript

March 28, 2016

And then this happened… http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/

I guess I could just as easily post “And this is why I refuse open source”, but that would be a lie. I very much encourage open source software. A lot of it, like a lot of Javascript, is very good. The thing that grinds my gears about Javascript is that the whole philosophy of the language feels very “cowboy” to me.


My Software Tao

October 5, 2015

The world of software has a spectrum of skills and people upon which the industry is built. This spectrum ranges on one side with programming and on the other side with software architecture. This essay briefly describes the jobs and roles that people play on that spectrum and some of the skills required for each.

Programmers are entry level. The duties and responsibilities of Programmers are writing code on individual modules based on a given set of requirements and specifications and fixing defects. They should be engaged in learning. They need to learn at least one new language each year. Programmers should learn to apply good coding practices, design patterns, and ensuring their code meets all requirements given and adhere to good coding standards. They should make their code as readable and maintainable as possible. They have a limited set of tools that they should be actively developing into a repertoire of languages necessary to gain a varied background. A lot of Programmers liken themselves to artists. This is an accurate parallel because a Programmer will have a hard time duplicating their creations with a high degree of safety. In terms of a city plan, Programmers can be likened to a drywall hanger doing construction on a single room.

Software Development is more difficult than merely implementing software requirements that Programmers are used to doing. The Software Developer uses tools from a wide array of skills to solve problems in moderately complex software systems. Websites, web applications, phone apps, and web services are examples of the kinds of things Software Developers build. Software Developers have gained competency with the artistic aspect of software development and they are aware there is a scientific aspect. They are like a stone mason who uses a hammer and chisel to craft their work. Each piece they create is its own work of art that fits into a larger system of stoneworks. In terms of a city plan, Software Developers are the people who are constructing high rise buildings.

Software Engineering is a lifelong discipline. While Software Development is still on the artistic end of the spectrum, Software Engineering is on the scientific end. Engineering principles are applied to the art in order to ensure a measure of software safety, predictability, scalability, and reuse. Software Engineers can reliably use software systems to build and integrate extremely complex systems. Software Engineers have a deep background in a vast network of languages, hardware platforms, and engineering techniques. They apply their knowledge in creative ways to design and build other complex software platforms. In terms of a city plan, Software Engineers ensure the buildings on the city blocks all have the electrical, plumbing, fire safety, and other safety codes they need for people to inhabit them. They make sure their buildings are reliable, safe, and are as efficient as possible.

Software Architecture is concerned with the big picture of extremely large and complex software systems. They create the vision for the strategic roadmap of where they want the system to be. They employ Software Engineers the way a military general uses Colonels to marshal their troops to achieve tactical and strategic mission objectives. The vision of the Software Architect is in terms of years. Their designs and plans account for every possible use and outcome of the systems they envision. They are the masters of software creation. Software Architects are the ones who are laying out the city. They design the city infrastructure, the roads, rail lines, city light systems. They make sure there are enough parks and parking in the right places, etc.

Each role has its purpose. There is no one role that is more important than the other. However, there is typically a career progression from Programmer to Architect, but that is not to say every Programmer will become an Architect. Most of us will stop at the Software Development stage and decide to become outstanding application developers. Few Developers ever gain proficiency with the fundamental engineering principles that allow them to continue their career progression. Those of us who do go on to be Engineers are the ones who build the frameworks that are used to construct the applications that the rest of the world is familiar with. Every Facebook has, at its core, a framework which an engineer has designed and constructed to allow for seemingly infinite capacity. This is my Software Tao.


iOS 8 Trick of The Day

September 11, 2014

Predictive answers. Check it:

IMG_1382.PNG


I Upgraded To iOS 8 Today

September 10, 2014

My first impression: it’s pretty!
Somehow, the fonts are smoother. The colors seem a little more crisp. I can hardly wait for the new iPhone 6 hardware to see it for real!
Some of the cool new features are:
• double tap the home button to see a list of frequent contacts at the top of the screen
• there is a voice feature built into iMessages. Think “Voxer”.
• there is also a picture of the person you are chatting with in iMessages.
• finally, (for now…) there is an enhanced keyboard. New predictive text bar instead of the stupid bubble.

So far, I’m a huge fan!


For Those of You Who May be Wondering About Apple Pay

September 10, 2014

What makes Apple Pay revolutionary? How is it different than Google Wallet/PayPal?
Well, Apple Pay is NOTHING like google wallet. The iPhone 6 has a piece of hardware that stores your payment card info encrypted. Your bank has to be able to process Apple Pay payments because, when you pay with your phone, that security chip in the phone generates a one-time use token, sends that token via NFC to the Apple Pay enabled point of sale. The point of sale sends that token to the merchants payment gateway which sends it to your bank. Your bank decrypts the token into your payment information. From there, it is a normal payment.
So, it operates a little like public-private key encryption. Your bank holds the private key. The security chip holds the bank’s public key. ONLY the bank can decrypt the information and you have your own public key. But, more than that, your fingerprint (more biometrics coming later) is the password (the salt in encryption terms) to unlock that public key on the device.
This means, if you lose your phone, you simply deactivate the public key on the phone with find my iPhone.
Google Wallet works like paypal. It fronts the real payment info with a pseudo account which can still be stolen and used without authorization.


The iCloud Breach

September 7, 2014

Does anyone else think the timing of the iCloud breach is just a little too coincidental to the reported new security features that are built into the new iPhone devices?


A Couple of Ideas

September 7, 2014

A journal system: this seems very viable and useful.

A music server: Perhaps a bit more ambitious, a system where I can serve music (maybe more and different content later) that I can serve from a central server and stream the content to a client.