Paying Money To Save It And Doing More With Less
brianbrunner.com
brianbrunner.com
Most testing services are horribly over priced and you don't get that level of control. Maybe you want to reconsider that one?
https://www.digitalocean.com/community/articles/how-to-insta...
Before Circle, I led multiple engineering teams, building multiple products from "nothing" to "shipping, and making lots of money". I set up buildbot, hudson, bamboo, jenkins, and some other things I don't even remember the name of. I was always the build guy, I was always the one that said "yes, we will be testing, yes, the build will be green." Those were controversial statements back then.
I've been there, done that, and I didn't want to set up Bamboo again. I didn't want to debug why the tests failed. That's why I built Circle.
Our customers, most of whom switched from Jenkins, will tell you we are a steal.
Maybe your project is still simple. Maybe your platform is fairly stable. But for most professional developers, keeping CI running and green is a challenge. Even at Circle, I spend more time than I'd like debugging the test suite. But we're fixing that. Every day is spent making devs lives easier.
Jenkins costs you nothing per month, but your developers cost money, and Circle's hardware is faster than digital ocean, and the cost of keeping the build green on Circle is lower than the cost of keeping it green on Jenkins anywhere else. If you're running a startup, or a tech company, odds are very good that salary is the number one cost center. Optimizing your Digital Ocean bill is penny wise, pound foolish.
It's moving past the simple app point that gets problematic on someone else's solution.
I have dependencies on postgres, redis and elasticsearch within the application. I need a browser too run the feature tests. I need phantomjs to run the javascript suite. Is there any saas offer that covers these?
>...keeping the build green on Circle is lower than the cost of keeping it green on Jenkins anywhere else
Keeping the build green involves my team figuring out what we broke. Faster build times help, is that what you mean here?
Don't even get me started on the stuff we are doing with deployment automation...
Edit: I think it was too hostile initially, appologies
Yes. Redis and Elasticsearch are already installed. firefox, chrome, phantomjs, casperjs are already installed.
Build pipelines are coming. I guarantee you they'll look nothing like what is available on Jenkins. They might be more opinionated than you like, but for the people they do work for, they'll save a lot of time.
> Keeping the build green involves my team figuring out what we broke. Faster build times help, is that what you mean here?
That's part of it. The other part is that we are a high-touch CI service. This week, rubygems had tons of SSL problems. Debugging that, and bugging the #rubygems IRC guys was "outsourced" to me. Thousands of developers didn't have to individually debug sporadic rubygems failures because I was doing it for them.
We see common bugs and test failures often enough that we have in-app warning messages that say "hey, it looks like your selenium tests are failing because firefox auto-updated on you. If you upgrade your selenium gem/jar, that will probably help". Those are things that won't get added to Jenkins.
When you support a SaaS service, assuming the product is good, you're essentially paying for an entire team to work on a problem you don't like that much but need, but which they love. You're also paying for the future of that product. Unless the software is really bad, or you need something so specialised that a current solution is out of the question, how does an engineer not understand this?
You only have limited time in the world. Work on something you find meaningful.
However my point? This is all terrible for security, we're reliant on someone else's data integrity, and I would assume it's safe to say that if we had the time to have someone do all this in-house and maintain good documentation we wouldn't hesitate, given the security and data integrity tradeoffs.
Security is always a concern, and I do hope most services have taken heed of online security breaches in recent history. However, I don't find it an argument against using SaaS because most of the time, the security from doing software in-house is dispelled by poor security in meatspace, i.e., social engineering (which is WAY easier to do than people suspect).
As you might guess, I was very frustrated by how much time I spent re-learning how to do the most trivial tasks when I switched jobs.
So, yeah, NIH is a real thing.
I worked with someone and we needed a file storage mechanism for a startup that needed to launch yesterday. So I was pushing to put it on AWS, simple enough. The CTO thought we would be locking ourselves in (for a startup that had yet to launch, yet alone make any money) and wanted to make some extra abstraction layer and then make his own file managing API so that he could plug in his own in house datacenter storage later. Such a colossal waste of time and the startup never launched. I am sure there were other things, but I could never see eye to eye with that person. Should have used something simple like filepicker.io to launch and then looked at it later.
I have nothing against paying for software that someone else wrote, but I'd feel much more comfortable buying the software and running it on my own servers (with a contract that says that if the vendor goes out of business, I retain the right to use the software).
I'd sooner spend engineering time writing our own report generators than writing code to push data to another service, in the format they expect, pre-empting which data we might want to have in that service down the track, understanding exactly how the different reports are calculated, and then inevitably having to write a few custom ones of our own as well.
Of course, the exception to this are services have a huge set of useful features and take basically no time to fully integrate with, like Google Analytics.
GitHub is a bit part of it. At a lot of shops you have time to drive to the next town and back to update the Wiki or close out a trouble ticket. Uncompromising speed is a feature that turns your developers into winners.
Building something from scratch exactly how you want to is stimulating, gets you respect from peers inside and out and is something you completely own.
When an engineer develops NIH it can be a cry for help. Their leaders need to inspire them to refocus on their customers.
TRWTF is that the author knows someone who reimplemented NodeJS in house.