Yesterday marked my 2-year anniversary at Rocketgenius. It feels like time flew by, while simultaneously feeling like I have been there forever. I can honestly say that the past 2 years have been the best of my life. Here are my thoughts.

Self-Management Can Be Hard (But Adapting To It Is Awesome)

I was hired as an expert, and I’m treated like one. If I feel something related to my responsibilities is needed, I just do it. There isn’t a lengthy approval process or task delegation for most things. While that’s great 99% of the time, it definitely takes some adjusting. I’m entirely responsible for things that fall under documentation, and choices related to it are up to me to make. When that sort of responsibility exists, it can be hard to appropriately delegate my priorities at times.

This is where communication comes into place. Over the last 2 years, I have learned to understand the strengths and weaknesses of my co-workers. Nearly everyone on the team is a jack-of-all-trades type and the amount of knowledge surrounding me on a daily basis is almost intoxicating. The phrase “I don’t know” simply doesn’t exist. Someone on the team always has the answer or can find it quickly. Many of our skills overlap, but in some areas, I’m expected to be the expert.

When you’re relied on in that sense, you have to be a bit “ballsy”. You have to be outspoken even when you disagree with your bosses and state your case in a convincing way with more than emotion. I’ve always been rather assertive but have learned how to appropriately channel that into a convincing argument. As counter-productive as it sounds, in-office heated arguments help with that quite a bit. If I have an opinion on something ranging from how documentation should be displayed, to my thoughts on a political event, I have to prepare to be challenged (usually by Dave). This breeds a culture of critical thinking that simply can’t be matched, and I couldn’t be more thankful for it.

From Decent Developer to Powerhouse

Over the last 2 years, I’ve gone from considering myself a decent developer to a force to be reckoned with. My skillset has improved on a level that I previously couldn’t imagine.

When you’re working with rock stars, you start to become one. Whether it be due to fear of criticism, exposure to different approaches, or simply a desire to be one of the “cool kids”, surrounding myself with arguably some of the more intelligent people in the WordPress product industry has been immensely beneficial. Rocketgenius has a reputation to uphold of being the gold standard, and you either thrive or become crushed under the pressure.

Everyone on the team has a bit of an elitist mentality (in a good way) and has a natural desire to make ourselves and everyone around us better. The people that surround me have all contributed something over the last 2 years to make me who I am today.

Personal Development Makes Way For Professional Development

I was told when I accepted the position is that life comes first, and work should always be more than just a job. A lot of companies try to push a positive culture, but Rocketgenius truly lives by it.

A few days ago, I had an appointment to be at in the morning, so I was going to be a bit later getting into the office than usual. Due to a suggestion from my office-mates, I’ve begun going to the park to work out on my way to the office. When I left the appointment, I was considering skipping my workout to get to the office since I was already a bit later than usual. I thought to myself, “fuck it, if I feel good, I work better” and made my normal pitstop at the park on the way there.

Quite a few companies would look at taking the extra time to exercise in a negative way. Rocketgenius’ company culture sees things a bit differently.

If I’m not taking care of myself it’s not just noticed. It’s frowned upon. I’ve learned to put my health first. A healthy body means a healthy brain.

Stress Is Bullshit

Life’s too short to stress over things. In the last 2 years, I’ve learned not to stress about things, but rather just get them done. Worrying about all of the ways something can go wrong isn’t productive in the slightest.

Not long ago, my wife was being sued over an old credit card that we had to max out when we moved up to Virginia but couldn’t pay back. Initially, my jaw dropped and I was a wreck over trying to figure out how to handle the situation. After discussing it a bit, I was able to come to the conclusion that stressing over it just isn’t worth it. Once I was able to reduce my stress levels, I was able to think more clearly and ended up getting the case dropped by fighting it.

Sometimes things may feel like the end of the world. In reality, they’re just a single moment in an overall lifetime.

Confidence Is Awesome

At first, I had reservations about committing code to Gravity Forms if I noticed something. What if I broke something? What if it’s not perfect? Over time I realized that I was hired for a reason and I should have confidence in what I do.

Does that sometimes lead to mistakes? Sure. I can’t count how many times I have broken something on our documentation site or even completely taken it down. If I always waited until everything was flawless and everyone had their input, nothing would ever get finished.

Each project that any of use work on is assigned because we’re the best person for the job. If I can’t be confident in something, nobody else will be.

Perfection Is Great. Results Are Better.

Often times I have an issue with handling things that aren’t perfect. I want everything to always be the absolute best and will constantly tweak things until they’re flawless in my eyes. Maybe it’s the OCD. Maybe it’s how I was brought up. Maybe it’s a combination of both.

About a year ago, I was chatting with Alex (one of the co-founders and original developer of Gravity Forms) at PressNomics. We were talking about a documentation project that I was working on when something he said truly stuck in my mind. He said to just get it done and stop trying to make it perfect. He told me that we have plenty of time to perfect it and it can always be changed later if needed. That conversation is something that comes to mind often and helps me to stop and think about what I need to do, rather than what I want to do.

If we’re releasing a new version of Gravity Forms, I don’t stress about trying to get the perfect usage example for a new hook; I think about it, document what’s needed, and move onto the next thing until I circle back around to it later. There’s no sense in wasting time beating my head against the desk when I could get everything to an 8/10 instead of getting a single thing to a 10/10. I can always make the 8 a 10 later.

Always Have A Side Hustle

While I put Rocketgenius first when it comes to my work time, I’ve learned that having side gigs is important as well. What’s the best way to document something? Use it extensively in practical scenarios.

Regularly, I take freelance Gravity Forms projects on the side. Far too often when working on a custom add-on, I’ll find that something in the documentation might need further clarification or might not exist in an official capacity. When I do, I toss it on a to-do list to better improve our documentation. By finding new and inventive ways to do something I’m able to provide a perspective that may have gone overlooked.

My Job Fucking Rocks

Working at Rocketgenius is amazing. Simple as that. It would be foolish to say that I will be there forever, but I look forward to the next several years continuing to make the top WordPress form management plugin even better.

Not long ago, I made a post on Facebook asking for people’s reasoning for using Android-based phones. Honestly, I wasn’t sure what to expect. Personally, I’m an Apple guy for a few different reasons (we’ll talk about that later), but for most users, either smartphone is more than sufficient to handle everyday tasks. Based on the responses that I received, I came to a few conclusions about Android users, and how many of their considerations differ from my own.

What Android Users Want

They want free stuff

One of the top responses that I saw was the ability to either access to free things. This came in my varieties but seemed to be either directly related to piracy, or simply a free app that they’re already locked into. Unfortunately, the only clarification on this that I got was related to piracy or homebrew.

This, of course, opens up other issues in that many of the users who cited piracy may not be aware of: they don’t actually know what they’re running. In the case of open source homebrew, it’s not much of an issue as the source is looked over regularly, but those who are sideloading paid versions of apps have no idea what they’re actually installing unless they’ve fully decompiled and analyzed the APK. If they’ve taken that much time to dig through the source, chances are they’ve already wasted far more time than it’s worth.

The ability to easily install homebrew/open source software is an entirely valid reasoning, although I do question its usefulness. In the Apple ecosystem, it’s possible to install homebrew by using a developer account and XCode. While not terribly intuitive for a basic user and requires a Mac, it can be done and doesn’t require any workarounds. In addition, open source does indeed exist within the Apple ecosystem via Apple’s App Store but is still subject to their terms of use. Typically, this isn’t a big deal if you’re not trying to run development versions of things, but I can see their perspective.

Overall, I’ve come to the conclusion over the years that paying $0.99 for an app is far more worth it than loading a potential security risk or buggy software on my device, but it seems that for some people the idea of paying for an app (and supporting the developer that makes it possible) is unacceptable.

They want customization

Most cited flexibility and some clarified on the point of customization within their Android phones. On Android devices, you are able to do things such as change your home screen, install custom ROMs on rooted devices, and make various hardware tweaks. Unfortunately, many were not able to clarify on what specifically they wanted to change, but those who did clarify cited simply wanting the option.

In the past, I have owned several Android phones as well as operated a repair shop that fixed and customized them. Over the years, I began to come to the conclusion that all of that customization simply wasn’t worth the effort. I would be constantly tweaking my layouts, launchers, and ROMs only to introduce further bugs due to varying hardware manufacturers and other environmental variables. Because Android phones are mad by many different manufacturers, you’re still relying a bit on what the manufacturer (or even ROM developer if you’re not rolling your own ROMs) decided what was best for you. For developers, it’s great to be able to make changes to your device if you want to modify something, but for the average user (let’s face it, power users and developers as well), you’ll often be fighting with one bug or another.

I previously felt that modifying the clock speeds on my device was great until I realized that if I just let the manufacturer who developed the hardware in the first place, I was in for a much smoother experience. I rely heavily on all of my technology, and any time fiddling with something that I rely on daily is just wasted time. Lots of people enjoy customizing their devices, and that’s great, but personally I’d rather things just work well out of the box.

Hardware cost is a factor

I live in a world where I usually just get the phone I want instead of considering the price. Unfortunately, I sometimes forget that this isn’t the case for everyone.

Because of more competition in the market in terms of hardware manufacturers (and hardware inconsistencies), Android phones are typically much cheaper. Instead of having a single current generation of a device being available for sale, there are multiple manufacturers ranging from lower-powered budget devices to higher-end hardware. In addition, previous generations typically stay on shelves a bit longer as an alternative to those who aren’t concerned about having bleeding edge hardware.

In this aspect, it seems that it really all comes down to what you want. If you want a budget device but are willing to sacrifice hardware quality or long-term support, you certainly have better options in terms of choices within the Android ecosystem. If you want a more premium device, you can still stay within that familiar ecosystem.

Personally, I like the “spend more at once and upgrade less” mentality. I’d rather spend more to have a phone that guarantees its longevity than one that can’t be updated more than once or twice, but I realize that’s not everyone’s view on their choice in technology.

Ecosystem familiarity

In my post, quite a few people stated that it’s what they’re used to. If all you’ve ever owned was a Windows computer, switching to Mac is a learning process, and the same can be equated to switching from Android to iOS. People are comfortable with what they have, and I can’t blame them as I am more or less the same way. Is the UI largely the same? For the most part, but there are subtle differences that can make switching a bit more difficult.

One individual mentioned not understanding how to navigate with only a single home button. For us iPhone users, this seems incredibly silly as we’re accustomed to a relatively similar UI within each of our apps and don’t see a need for things such as a “back” button, but on Android, it’s nearly a requirement due to a lack of consistency between apps.

People are stubborn, and they like what they like. Even the things that I may see as an annoyance are things that they see as convenient. I don’t blame them a bit as they’re trained to operate their phones a certain way. The scenario applies both ways in that what I see as convenient may be a nuisance to them.

Why Android Isn’t For Me

After chatting with several people who commented on the post, I realized that my major concerns don’t even register on the radar for many of them. Several of these weren’t mentioned in the post and seemed entirely unimportant to their smartphone choices.

Manufacturer Support and Updates

When I get a phone, I want regular updates and bugfixes, and I want them for a long time. Unfortunately, most manufacturers of Android phones don’t update along with Google’s releases. If you want the latest version of the OS, even if you bought the phone within the last year, you’ll need to upgrade to their next model before you can begin to receive software updates again.

The issue with this is that operating system features that could be easily made available by the manufacturer are entirely dropped, and in many cases, security issues left unpatched. Of course, you could always root your phone and use a custom ROM, but I feel that this should be something that should be automatic, not something that requires a workaround and voiding any possible warranty that may still exist on the device.

Even Google’s Nexus devices seem to neglect updates rather quickly compared to Apple devices. An article by Android Police shows that Apple devices have more than double the support lifetime of Android devices, with the average support lifetime being less than 2 years.

This gets even worse when it comes to non-Nexus Android devices from manufacturers such as Samsung, LG, or Motorola, where phone lifecycles can run shorter than a year with very few updates (if any at all). For example, the iPhone 4S, launched in late 2011 and just recently reached its end of life with the release of iOS10. In comparison, the Samsung Galaxy S3, released 8 months later in May of 2012, received its final operating system update with Android 4.4.2, which was released in December of 2013.

App Quality and Stability

Due to the review process of Apple’s App Store, overall app quality is higher. Unfortunately, Android’s biggest strength is also its weakness in that it allows nearly anything into the Google Play store. Because of this, any developer can make their app available to Android users via the official marketplace, and quality can suffer. This isn’t to say that every app on Apple’s App Store is a gem, but there are overall less risks in obtaining an app from a lesser-known developer.

Yes, there are roughly 10% more apps on Google Play, but that number is also skewed due to multiple versions existing instead of Apple’s in-app purchases for premium app upgrades. I don’t need 10 email apps; I need 1 that works really well.

Because developers on Apple platforms know what to expect from both the hardware and software, overall performance and stability are significantly higher. Within the Android ecosystem, developers need to account for an excessive amount of hardware and software variations. When developing for iOS, hardware and software differences are far more manageable due to being limited to only select hardware and a longer support lifecycle of iOS.

Typically, apps also hit iOS first, as developers see a much higher return on investment on Apple devices than with Android. Piracy is far more infrequent, development is easier, and Apple users are more willing to spend a dollar on an app that they want.

I don’t want my apps to crash, and I don’t mind dropping a couple bucks for an app (although probably 90% of my apps on my phone are free). A buck here and there is entirely worth my peace of mind.

Security

I won’t bore you with the details, but the security of Apple devices is significantly higher than most Android phones. Due to longer device lifecycles, more frequent security updates, and security-conscious hardware, Apple certainly hits the mark. This is especially true for many Android devices that are rooted or unofficial app installations where the user may be unaware of the software running on their phones.

Due to an unregulated app marketplace, malware is far more common on Android devices. When downloading an app from an official marketplace, especially from an unknown developer, I don’t want to have to worry about what might be lurking deep in the code.

Overall Impressions

Since investigating the reasons people use Android phones, I’ve come to the conclusion that Android simply isn’t for me, and I’m glad to be within the Apple ecosystem. While I wasn’t necessarily looking to switch, I wanted to know why someone would choose to use an Android phone over an iPhone, and it seems to be directly related to different concerns.

My qualifications seem to be quite different from Android users, and I’m okay with that. It seems that the overall concerns that an Android user has are primarily related to cost with secondary concerns in customization, whereas my concerns are primarily rooted in security and stability. I want something that “just works”, something stable, and something that is secure. It seems to really come down to what you really care about in a device you rely on and use daily.

I’m often asked by people starting out in development, how they can become better developers. Their proposed solution is typically formal education, while my response is almost always to contribute to open source software.  While my opinions regarding formal education in the development space are entirely the topic of another post entirely, there’s a major advantage to open source contributions that can be directly witnessed by anyone. That advantage is criticism.

While chatting with my friend George Stephanis a few days ago, I noticed something: George loves to nitpick people’s code. We’re not just talking about things like major bugs, but rather every slight detail of code quality, organization, and readability. He’s not ashamed of telling someone to fix something. Because of this, George and many others, have dramatically contributed to making me a better developer over the years.

In the last few days, while considering writing this post, I began thinking about those who have criticized my work. At times, I may have even been a bit discouraged by incoming criticism about my code quality, but looking down the road, I see that it has given me habits that I could only gain from that criticism. Without people reviewing my code in pull requests, or submitting issues on GitHub, there are so many things I may not have learned. Essentially, by putting my code out there for the world to see, I have expedited the growth of skills that only practical experience can provide.

When receiving criticism on my code, I’ve learned to always consider each suggestion as an attempt to increase my potential. People don’t spend hours digging through your code with malcontent, they’re doing it with love. Each issue report is done to benefit you, not to harm you; especially if a solution is provided.

I’ve noticed that over the years, I have begun doing the same thing that George and many others have done to me: take the time to go through someone’s project (that they are usually rather fond of), and rip it apart. I will intentionally go through your hours of hard work and pick out everything that I feel is wrong with it. Why? Because I want to make you a better developer just like many others have done for me.

The point of this post is simple: put your code out there for the world to criticize. Without it, you’ll just keep making the same mistakes over and over again, usually because you don’t know any better. Don’t be afraid of issue reports; embrace them. Your future self will thank you.