New Blog, New Project
New blog, who dis?
After going back on forth on all kinds of ways to host a blog with varying levels of commitment and success, we’re now hosting on Netlify with a basic Jekyll blog. Much credit to Expensify’s job application questions; as one of the companies hiring for PHP in Portland, “What’s your website? If you don’t have one, why?” always demanded an answer in my mind. In this day and age there’s simply no reason to not put together something to show and record your learning and accomplishments.
I’m also announcing the beginning of a new, ambitious project. As mentioned, job postings for PHP in Portland seem to be drying up as the years go on. PHP jobs that aren’t Wordpress, Drupal, or Magento are especially endangered. While remote jobs exist they are more and more entirely focused on Laravel, which is a beautiful piece of software don’t get me wrong, but a job market entirely sustained by one framework doesn’t bode well for long-term prospects.
So, in answer to that I’ve decided to extend myself into learning Java. My reasoning:
- Java isn’t going anywhere anytime soon, it’s an established player with established software and companies
- While it has it’s warts, it doesn’t carry nearly the derision PHP does, which means that it’s not constantly fighting against that reputation to continue to justify its existence
- A good grounding in Java-the-runtime and Java-the-VM can lend itself to diving into langauges that are more fun or more modern, like Kotlin, Clojure, and Scala
- Knowing Java provides roads out of Web Development in the future, if I so desire.
- Big Data as a field is only going to continue growing, and nearly all the biggest Big Data tools are written in Java
- Modern PHP is already aping a lot of Java flavor and OOP Design as well, so it’s not going to be a big leap in terms of philosophy or concept
- Java as a platform is very deep and teeming with opportunity to practice wizardry and obtain lore, which are things I value for fun in my work
Learning in Public
There are many ways to go about learning a new skill, but with the quarantine and the opportunity working from home with no commute offers me time to perform an intensive study accompanied with a project to reinforce everything I was learning.
I plan to grow my twitter network to include more Java folks, use resources available to me on Stack Overflow, post questions to /r/learnjava, and read a few books suggested to me by blogs like JavaRevisited.
Because I’m already proficient with OOP and building applications in general, and I’m already familiar with Java’s syntax and general design goals, I plan to focus on:
- Gaining a breadth and depth of knowledge of the core APIs
- Learn the tooling that surrounds Java development such as test runners, build tools, dependency managers
- Gain familiarity with IntelliJ Idea (I personally use Emacs, but it’s important to have at least a passing fluency with what future colleagues will use)
- Deploying Java software for web or desktop use
- Learn some of the more popular 3rd libraries and frameworks, able to read and at least know enough to Google effectively next steps for Spring (Boot), Struts, Java/Jakarta EE, JavaFX, maybe jOOQ, maybe Spark.
I plan to be taking extensive notes of my readings and of my exercises and will be posting them to this blog as a way of organizing myself and posing questions to potential readers and myself.
And most importantly, I thought that building an e-commerce site would be a good project since e-commerce is a subject I know well and have worked in the depths of for most of my career. E-commerce provides many opportunities to familiarize oneself with database access, writing and consuming web APIs, vendor integration for email and payments. There’s concurrency problems with commiting inventory, and there’s questions of order state machines and pricing rules and on and on. Lots of problems to tackle means lots of opportunity to apply techniques and figure out new approaches.
Tonight is the first night I plan to formally start, so be on the lookout for future updates!