Hacker Newsnew | past | comments | ask | show | jobs | submit | jjrumi's commentslogin

Xing | Multiple positions | Barcelona | onsite | full-time | https://www.xing.com/

Xing's Barcelona office offers a great, multicultural and diverse environment. The sunny office is located in the center of Barcelona, with a large terrace. As well as flexible working hours that support your work-life balance, you’ll have an opportunity to unleash your skills and acquire new ones. We do regular team and offsite events, and we send you to conferences. Furthermore, you have the option to work on whatever you like once per quarter during our XING-wide Hack Week. Of course, we also provide free drinks and fruit as well as restaurant vouchers and German/Spanish lessons. We offer also a flexible compensation plan (health insurance / transport / nursery tickets), a competitive salary with a permanent contract and 30 days of vacation (26+4).

Open positions:

  - iOS Developer
  - Android Developer
  - Fullstack Developer with Rails
  - Team Lead
  - Agile Tester
  - Senior Frontend Developer
  - Senior Product Manager


Wow, thanks guys! You made my day with these easy tips.


"I had to study so much in these last 2 years" --> Could you give a glimpse on what have you studied/read? I'm very interested. Thanks!


It is not like studying a course in a organised way.. Luckily we switched to microservices architecture in my company and thus many stuff had to be rewritten. The old monolithic application was PHP and PHP was deprecated for new projects company wide. So I and my team picked GO, JAVA and Node.js for different microservices we are responsible for. (Mainly JAVA and GO, we deprecated then Node.js unofficially in our team because we did not like it at all.) So as you have a well defined project and you have to finish it in the language you are new with, you start to research and learn a lot. Tutorials, blogs etc. And when I had a problem and I could not solve the problem because of my unfamiliarity in the new stack, I started to read also after work and I started to apply what I learnt the next day. Every day I started to have less problem or finding solutions was taking less time because my involvement in that ecosystem increased. Specifically for JAVA, probably still I do not know many stuff, especially I don't have so much idea about the abandoned enterprise technologies, or legacy build tools like Ant etc. but still our applications have good quality and they are working well and my team did not receive any bad feedback from JAVA-expert fellows from the company, it means we adopted well the technology and caught the train.

I've to open a new paranthesis about Node.js. If you've never worked with Node.js before and you start in 2016 you're kinda f*cked up. The ecosystem is changing a lot and maybe 70% of the resources you can find over internet are already outdated. You start the day happy and with full batteries and you start to use some frameworks etc. The next day you realize that people already abandoned it. Beside all the disadvantages of Node.js, it's also so annoying and make the adoption process so hard. How such a simple language like Javascript could become so complicated?

GO is very cool. Relatively easy language and also very very powerful, it has a high quality community and the resources you can find are very clear. If you are trying to pick between GO and Node.js, go with GO. Your adoption will be much easier.


Yeah. I agree. I dont understand how people build large Node projects.


Thanks for the tips and insights, man! You were lucky to be in a project willing to rewrite the monolith with different technologies.

By the way, looks like you're living in Barcelona as well ;)


I used to live in Barna for a couple of years. Now in Berlin :)


> Specifically for JAVA [...] abandoned enterprise technologies

> [...]

> How such a simple language like Javascript could become so complicated?

;)


Well, let's admit that release-abandone cycle for a library/framework/approach in JS world is 100x faster :)


This is going to sound cheesy, but you need to find an internal peace with yourself, and realise that you are enough.

Once you get there, what you'll actually feel is that it doesn't really matter (there are more vital/core important things in life) and then, ironically enough... you'll work better.

I felt the same way. My problem was I pressured myself so much I never finished a single thing. I guess you have to somewhat break free from yourself.


I think tests should not go for code coverage, but for "Cyclomatic Complexity" coverage.


What precisely is cyclomatic complexity coverage?


I have no idea what the GP meant, but here's my take:

Set a minimal threshold of cyclomatic complexity. Below this threshold, function are assumed "so simple there are obviously no defects". Above this threshold you need tests, roughly prioritized in order of descending complexity.

It's not a bad idea, but that assumption of simplicity is a doozy. Also, figuring out cyclomatic complexity in Ruby (especially Rails apps) is ... hard. Especially if you want the computer to do it for you.


For instance, you can have a test result of 100% line coverage but if you have composed conditionals and you only check the first part of them... you are NOT checking all the paths of your code.


There are a couple of well-established advanced criteria like decision coverage, condition coverage, MC/DC to choose from if statement coverage isn't enough.


I don't know if ephemeral_response solves this, but the first thing that comes into my mind is caching an error (webservice doesn't respond in time or whatever). This happened to me some times.

Caching the error is a big problem when you have a system that determines if your code is stable or not and blocks deployments in production to prevent errors.


In my case, most of the time mocks are used to avoid Database interactions: They are dangerous for writing and slow for reading.

The best thing I've run into lately have been "mocking" the DB creating a copy (temporary tables with only the needed data) of the tables that the code interact with.

This way you create a "mock" of the data you're going to work with and code the test getting a more reliable test in my opinion.


Testing a DB connection sounds more like integration than unit testing.

Mocks are used to fake things that add significant overhead but no value. If you have a suite of 1000 unit tests, you really don't want half of them making actual database requests.

Simply making 'safe copies' of the database data does not solve the problem that Mocks are intended to solve.


In my experience, it's all about layers.

I do both, I have a set of integration tests create a "safe copy" of the database and populate it with seed data, so I can trust that my data-layer stuff works correctly, while my pure unit tests interact with a super-fast fake database implementation.

I actually wrote the in-memory fake db before I wired up a real database. It made the early iterations much faster without having to make changes to multiple layers. I could have not bothered with writing tests against a "safe copy" of the database, but I sleep better knowing that the assumptions about how the persistence types work in my unit tests are validated by my integration/data tests.


It's not a "safe" copy, it's a set of known data in memory that fakes the DB connection and reacts as it will with a real DB connection.

And yes, I have 500+ UTs.


I'm sorry, I misunderstood the situation you described.


I'm somehow in the same situation Michael was in the 80s. I'm young, my couple has to wake up at 6 and I can stay in bed easily till 8. I've been trying to be productive in my personal projects (programming) either at night, after she goes to bed, or starting up very early at 6... but I haven't been able so far.

At night I'm brain-dead after the whole day programming at the office. On the other hand, in the morning I need at least 30 min to really wake up and start thinking correctly in front of the computer and that doesn't leave much time to do almost anything before going to work.

Anyone with a good advice?


Hmm, you can try this submission if you haven't seen it - http://news.ycombinator.com/item?id=1041820. Check out the comments for it, too, since there are a lot of suggestions to use it to get started in the morning.


Having a nap after work before continuing, and then continuing may help.

Or have you tried going to bed really early and getting up much earlier?


Never tried to have a nap before continuing, although now that I read you it sounds like a natural thing to try. Thanks.


Good luck! And keep in mind that napping is a skill to practice. Don't despair if you can't fall asleep within a few minutes the first few times you try it.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: