We are looking for a Java Software Engineer with 5-10 years of work experience of development in production class code projects. You enjoy working in a team, and have worked on agile development projects before. You are self-sufficient, creative and not afraid to learn new technologies.
As a pure-play software vendor whose flagship product is written in Java, this position is very important to the company. Because of that, the demands are high, and excellence is always expected. With a bar this high, we can assure you that you will grow. Good ideas are the boss of Curity, so, if they are yours, you will lead — even as the newbie.
Deadlines are a fact of life, but more important than arbitrary points in time is quality. When building security software, the product must be solid, tested, and safe. For this reason, we work with “trains”. The train leaves the station every six weeks, and we release it at that time. If a feature is ready, it’s merged to the main development branch and will ship on the next train. If it’s not ready, the work continues on an integration branch till it is. This working model allows us to provide consistent deliveries without sacrificing quality.
All features are verified by automated tests; manual tests are bugs in our view. We have 10’s of thousands of tests that run with each commit to dev and 10’s of thousands more that run nightly and weekly. This helps to ensure that things don’t break. We use Behavior Driven Testing (BDD) primarily, and most are written using the Spock framework in Groovy. (If you don’t know Groovy, you will by the end of week two.).
The level of scrutiny and testing our product undergoes is less like typical enterprise software or Web applications and more like embedded software. We provide 24/7 support to our customers, so you will have to carry a dedicated phone when it’s your turn.
Keeping track of changes is essential. Source-level changes are managed with git. We rendezvous at Bitbucket, where we also review every substantial change (ones greater than four lines) in a PR. We also specify what changes should be made in Jira tickets. We often design things by talking, and then type it up in a Jira ticket. If it’s more complex, we will write an architectural description of the problem. We often spike out such challenging parts.
We strive to keep meetings to the bare minimum. We have a morning standup, though, where we talk about what we did the previous day, what we plan to do today, and if we’re blocked or not. These aren’t reporting meetings for a manager; they’re for you to keep in sync with your colleagues. You’ll need this because things move fast at Curity!
If Curity sounds like a fun place to work, please apply to the right. The process is front-heavy, so be prepared. However, if you get by the first few gates, it’ll be very easy and welcoming by the end.
- A bachelor’s or master’s degree in Computer Science (CS) or software engineering or comparable
- Understanding of Java and Kotlin
- Gradle know-how
- Deep understanding of Linux and ability to use Mac as your only workstation
- Deep object-oriented design and programming abilities
- Basic to advanced understanding of OAuth 2, OpenID Connect, SCIM, PKI, and crypto
- Good understanding of non-IAM aspects of information security
- Some familiarity with mobile application development
- Good understanding of REST and Web APIs
- Excellent English communication skills, both spoken and written.