Maybe we are talking about different things, but you can definitely pre-fill your tax form with employer and social security data in Germany. In that case, you only have to add information if you want to claim deductions higher than the "Werbungskostenpauschale".
Things usually only get difficult when you are self-employed or have difficult deductions.
Actually there is. There is a certain chance that you're unhappy with your fridge and you'll return it. So the assumption is that you are more likely to buy a different fridge than any other item. That's why they show you other fridges.
Very interesting. Looks a lot like zeebe [0], which uses BPMN for the workflow definition. This makes it easier to communicate the processes with the rest of the company. I never used it in production, just played around with it for a demo.
I've looked at Zeebe, and Camunda too - likewise, just in a demo capacity.
Interested in folks' experiences deploying these tools, as this sounds like a potentially very useful way of modeling business workflows that span multiple services.
I've used Conductor, Zeebe, and Cadence all in close to production capacity. This is just my personal experience.
Conductor's JSON DSL was a bit of a nightmare to work with in my opinion. But otherwise, it did the job OK-ish. Felt more akin to Step Functions.
Arguably, Zeebe was the easiest to get started with once you get past the initial hurdle of BPMN. Their model of job processing is very simple, and because of that, it is very easy to write an SDK for it in any language. The biggest downside is that it is far from production ready, and there are ongoing complaints in their Slack about its lack of stability, and relatively poor performance. Zeebe does not require an external storage since workflows are transient, and replicated using their own RocksDB, and Raft set-up. You need to export, and index the workflows if you want to keep a history of it or even if you want to manage them. It is very eventually consistent.
With both Conductor, and Zeebe however, if you have a complex enough online workflow, it starts getting very difficult to model them in their respective DSLs. Especially if you have a dynamic workflow. And that complexity can translate to bugs at an orchestration level which you do not catch unless running the different scenarios.
Cadence (Temporal) handles this very well. You essentially write the workflow in the programming language itself, with appropriate wrappers / decorators, and helpers. There is no need to learn a new DSL per se. But, as a result, building an SDK for it in a specific programming language is a non-trivial exercise, and currently, the stable implementations are in Java, and Go. Performance, and reliability wise, it is great (relies on Cassandra, but there are SQL adapters, though, not mature yet).
We have somewhat settled on Temporal now having worked with the other two for quite some time. We also explored Lyft's Flyte, but it seemed more appropriate for data engineering, and offline processing.
As it is mentioned elsewhere here, we also use Argo, but I do not think it falls in the same space as these workflow engines I have mentioned (which can handle the orchestration of complex business logic a lot better rather than simple pipelines for like CI / CD or ETL).
Also worth mentioning is that we went with a workflow engine to reduce the boilerplate, and time / effort needed to write orchestration logic / glue code. You do this in lots of projects without knowing. We definitely feel like we have succeeded in that goal. And I feel this is an exciting space.
Thanks for the thoughtful reply, this is very useful.
The concept of having business users able to review (or even, holy grail, edit/author) workflows was one of the potentially appealing aspects of the BPMN products; did you get a signal on whether there were any benefits? "the initial hurdle of BPMN" sounds like maybe this isn't as good as it seems on the face of it?
Also, how do you go about testing long-lived workflows? Do any of these orchestrators have tools/environments that help with system-testing (or even just doing isolated simutions on) your flows? I've not found anything off-the-shelf for this yet.
You raised a pretty good point about being able to review the BPMN. I did not immediately think of this, but now that you have mentioned it...
1. It was good for communicating the engine room
I remember demo'ing the workflows within my team, and to non-technical stakeholders. It was very easy to demonstrate what was happening, and to provide a live view into the state of things. From there, it was easy to get conversations going, e.g. about how certain business processes can be extended for more complex use-cases.
2. It empowered others to communicate their intent
Zeebe comes with a modeller which is simple enough even for non-technical users to stitch together a rough workflow. The problem is, the end-result often requires a lot of changes to be production-ready. But I have found that this still helps communicate ideas, and intent.
You do not really need BPMN for this, but if this becomes the standard practice, now you have a way of talking on the same wavelength. In my case, we were productionising ML pipelines so data scientists who were not incredibly attuned to data engineering practices, and limitations, were slowly able to open up to them. And as a data engineer, it became clearer what the requirements were.
On the point about testing, the test framework in Zeebe is still a bit immature. There is quite a few tooling / libraries in Java, but not really in other languages. The way we approached it was lots of semi-auto / manual QA, and fixing live in production (Zeebe provides several mechanisms for essentially rescuing broken workflows).
The testing in Cadence / Temporal is definitely more mature. But you do not have the same level of simplicity as Zeebe. That said, the way I like to see it / compare them, you could build something like Zeebe or even Conductor on Cadence / Temporal, but not vice versa.
Temporal/Cadence provide unit testing framework that automatically skips time when workflow is blocked. So you can unit test using standard language frameworks (like mockito) to inject all sort of failures. And the tests execute in milliseconds even for very long running workflows.
I've worked with Camunda extensively, which Zeebe is based on.
I've found Camunda to be incredible. The APIs are implemented well and the work flow processing paradigm is easy to work with. Setting up the Camunda engine as a web server in a Spring project and integrating with external sources is great.
I've found there can be some performance issues when running a single engine, but clustering is easily enabled and you can adjust with a dedicated worker paradigm too.
Great piece of tech honestly. Haven't worked with Zeebe yet but am excited to.
They don’t need verification. In theory, you are supposed to have a direct debit mandate, but that is basically just a click.
If you want to take out a direct debit you need to be registered though, the process isn’t trivial and you need to deposit a security that can be used for a dispute. That makes it rather unlikely that the system is abused - though not impossible.
1) Free apps with advertisements. Paid apps are by far the minority.
2) I guess this statement is related to subscription models like spotify. If you acquire the user outside of the apple ecosystem and they subscribe on your own website and then download your free app from the app store, you get to keep 100% on the revenue that the user generates as well.
Ah, the ad thing makes sense. It's technically true but the meaning conveyed in the statement is quite different.
As for the subscription model, I've thought about that but developers that aren't huge companies have a hard time NOT integrating in-app purchases for cloud services (see "Hey", which had to use social media to get their update approved [1]), so it couldn't be the "vast majority of apps".
That’s not the experience I have with AWS. They are really trying to help you get the most out of their platform - including costs.
I’m not saying their pricing is not confusing, but the account managers and sales engineers I’ve worked with always did a good job navigating us through it - and being honest when something can be achieved a lot cheaper.
Better have a customer optimize their usage, pay less, be happy, and stick with AWS than switching to a different platform.
This is along the lines of "Ha, taking half the day off, are we?" when somebody leaves a little bit earlier than usual. It sounds like (just) a bad joke, but it has severe consequences for your working relationship.
I get that it's tempting to make jokes when you start managing for your old team members. Just accept the fact that you've switched positions and that your relationship will change. It will only make it more awkward if you don't.
> Just accept the fact that you've switched positions and that your relationship will change.
The key here, I think, is the relationship aspect.
I've seen and had so many terrible managers that had no idea how to create and maintain relationships with their subordinates. Every person responds to leadership differently, and needs different things from their immediate managers. A lot of people get into a management position and immediately try to bend people to their will.
The best manager I ever had was very hands-off from a day-to-day perspective, but knew every single one of his direct reports and how to manage them individually. Some people needed more frequent check ins and a stricter set of deadlines and expectations. Others needed the space and freedom to set their own schedule and have bigger picture goals. His ability to organize and assign the expectations and needs of the business to work for the person (rather than the other way around) is something I've always admired and look for in management.
At my current position it's quite usual for my manager to ask why I'm still at the office when it's 3:30PM on a friday.
One of the reasons I'm still working where I am.
If I were manager I would not even imply that I’m time aware either way, unless there is an ongoing issue (someone staying too late often), (or someone who is not putting in an effort). Otherwise why even bring up your consciousness of time? It signals you’re tracking it one way or another.
Edit: for addressing burnout, overwork, etc., for me personally I would start with bringing up the issue in team meetings.
Do we have enough resources, does anyone feel they’ve got too many tasks; remind everyone (no singling out) that we’re not here to be superheroes, we’re here to work in exchange for compensation and that you need a good work-life balance in order to perform well at work. If it continues to be an issue after several proclamations, then I could address individuals one on one.
I'm a manager. Why bring this up? To watch for people working too much and potential burn out. If people are working excessively, that's not good for them or the company. I want to be able to rely on people. That means knowing how much they can do. This means if they are putting in extra hours now, I come to expect that level of output from them. This is not fair to them, and not fair for the company. I don't want them burning out. I don't want them feeling as if they have to work excessive hours.
This is also why I actively encourage taking time as needed and being flexible when it comes to taking time off to take care of things during the day. It's a non-issue. Finally, it's why I pay attention to taking vacations. I actively encourage it. Often people feel the pressure of deadlines which are always looming. Through my actions, they don't feel as if they can never take time off.
Yes, I can see how you might feel if someone is watching your work hours. But it's not a single thing. It's a continuous effort and comes from a relationship you develop with the people you manage.
When I ask people why they are still working at a certain time, they know why I'm asking. The net result has been really positive for my team.
As a non-manager I'd like to add it also normalizes healthy work hours to all the employees. I've worked places where one or two devs outpaced everyone else by a fair margin because of the hours they put in. They're usually very skilled developers, but they're also putting in double the hours of anyone else. Management of course always praises their output and calls them "rockstars" or something, while ignoring the fact that they were in the office until 9pm every day this week and have dozens of commits in the past month that occured on Saturdays from Noon to 3AM.
Ignoring my personal feelings of how unhealthy I think this is for them in the long run, I just simply don't want to feel like I'm competing with them. And yeah not all workplaces feel like a competition, but in my experience the places where you constantly hear "I was up until 10 fixing that bug, but I finally solved it." "Nice work, rockstar!" do feel very competitive internally.
Also as someone with lots of anxiety (which I feel is somewhat common among developers) it really helps to hear that taking reasonable hours or a vacation is not only allowed, but encouraged. I worked at a place that switched to "unlimited vacation", but the process for getting it approved was so stressful that the majority of the developers didn't take a vacation that year.
At the same time if they're willing to do 60 hours a week of work (not if it takes them 60 hours to do 40 hours worth of work) they should probably be pointed out positively in the team meeting for putting the effort in, and privately told that it's probably not maintainable in the long term, and if they need to work that much to meet their objectives they have too much work.
But I don't see anything wrong with praising more output under the right circumstances. Everything ebbs and flows. As an IC there are times I go 3-4 days without a single commit. And there are times I have commits for 12 days straight because I'm on a roll.
I've been fighting for an "unlimited with minimum" vacation policy for the developers at my current job for a while now. It was fight to get the base increased from 2 weeks to 3, and the system doesn't allow negative PTO balances, which seems kind of draconian to me. But I'd love to see my coworkers taking 4-5 weeks a year.
So glad I live in a country with sane labor laws. We have mandated 4 weeks vacation, most places have 5 weeks. The law actually says that the employee is mandated to take 4 weeks vacation and the employer is mandated to make sure the employee takes their vacation. It's possible to "transfer" vacation days from one year to the next, but most people take their vacation every year. Looking forward to July off.
As someone with a tendency to accidentally work 60 hour weeks sometimes because I genuinely enjoy the work, I think you have to balance any praise with very clear expectations for the rest of the team. Something like "40 hour weeks are meant to be the norm and while heroism is appreciated, it is not sustainable".
Yeah, this reminds me of when I first got out of college: I worked at a small company and I never took vacations. After a couple years of never taking a vacation day, the owner started 'forcing' me to take vacations by paying for hotel and airfare to anywhere I wanted.
I've done it. My reason was to say I care about their work-life balance as much as mine, and they're performing well and it's okay to take it a little easier. My worry (and sometimes clear perception) is that they're working long hours from a place of anxiety about the progress they're making. So you tell them they're performing well and that they don't need to stay so late.
I hate whenever I get asked by a manager if I've got enough work. Usually I can say yes and they move on but sometimes I know that I'm supposed to say no and accept whatever new task they want to add to my backlog (along with the expectation that the new task is most important). It usually happens with the management that are not totally aware of all of my responsibilities and what I'm currently working on. They see what little I'm doing on one project and ask for more of my time, yet I'm already working nearly full-time on other projects. I know when it's about to happen too. It will occur during a meeting when my functional manager isn't in the room and a program manager sees a task that they don't want to handle themselves. It's usually a task that's been on their backlog for a while. Their eyes light up, they turn to me, and say "Hey, are you busy?"
I really do appreciate being given enough work to keep me busy, it's better than being laid off. But I really hate being given all the extra junk that no one else wants to do simply because I'm not 100% full time on that project.
Agreed. If I was at an environment where people were regularly nagged about working past 3:30, it would indirectly make me feel like I had to be an early bird, and was looked down on if I wasn't.
Yep. My team knows to expect me asking them "why are you here" on the Friday ending a sprint, after we've had our planning session for the following one.
"I'm just about to head out", "okay, good", or "Just finishing up (ticket)", "How long will that takes?", "Maybe thirty minutes", "Okay; finish it up but then get outta here", or "Kid's in daycare; it's on the way home, figured I'd take this as a breather", "Okay, fair enough. As a reminder, there are phone booths, quiet rooms, and break rooms if you want to get out of your desk." Etc.
It's such a loaded question because any simple answer implies you acknowledge that 5pm is early. Gross. I hope you told them you value a healthy work life balance and left anyways. If a place fires you for that, you're better off not working there, barring exceptional circumstances.
I work all hours on-site and remote, not just between 8 and 5 in the office. Your situation may have been different, but something I've learned over the years is you don't have to say anything. Just keep walking. Skipper said it best, "Just smile and wave boys, smile and wave".
Mine was "Going for a piss boy?", the guy was a somewhat crude TV / magazine celebrity of sorts, I was working as a developer on their website at the time. It was one of those people who probably could fire people on the spot if he didn't like them.
This is why, if I ever manage, my focus will be on timely deliverables and not on time-at-desk. Give me a day when you think you can deliver something, update me as soon as you realize you can't ("manage expectations"), and do whatever you want with the rest of your time...
As an example, when you are deciding whether to promote someone, you can't do it on tasks completed alone, because some of that decision has to be about (1) how well the person works with teammates, and (2) whether the person's peers believe this person is competent enough for their promotion. If you don't get those two considerations right, you compromise people's trust in your competence and the fairness of the promotion system. They're fundamentally relationship and skill development issues and not deliverables.
If you want to be a good manager, you have be fluent in both approaches, and you have to learn when to use a task oriented approach vs. a relationship oriented approach.
That sounds lovely in theory but gets tricky quick with employees who give you estimates that seem too high, and then don't even meet those.
And then you have to figure out if they need help, if they're over their head, if they're being lazy, if they're getting interrupted by stuff that's not on your radar, or WTF is really going on, and if (a) they're not telling you and (b) you have no visibility into their day (say they're remote), then it gets really hard fast.
And the more insecure they feel, the less likely they are to directly tell you they need help.
So as manager: don't joke about firing, don't joke about time at desk, don't joke about performance.
But as employee: if you get your shit down, and have talked to your manager about it, and you're both good with the amount of stuff getting done, you shouldn't be concerned with taking a day off here or there, or leaving early, or working from home. But be aware that a lot of performance monitoring stuff isn't for you, and not everyone is doing as well as you are.
Since the estimates are almost always off, it's a perfect way for the managers to reward the people they like for political reasons, and punish the ones they don't.
> That sounds lovely in theory but gets tricky quick with employees who give you estimates that seem too high, and then don't even meet those.
How many managers are competent enough to judge that kind of stuff, and whether or not any excuses produced are reasonable? Even in the technical manager cases I've seen, maybe 1%. The people who constantly bs excuses are often the ones rewarded, as opposed to the people who actually focus on the work and take a little longer to get it done properly.
At least for engineering manager positions, there shouldn't be any non-technical people. How are non-technical managers supposed to allocate work and judge how well their technical employees are performing.
That works until some consultant sees that one employee seems to be pretty quick getting their tasks done so management is told to have even more work assigned to them. Why give someone 30 hours of work if they are being paid to do 40 hours? The demand of work is going to inevitably fill the supply of time. As an employee, the proper way to deal with this is just find the proper amount of work you feel comfortable doing in 40 hours and make that your permanent pace. Work too fast and you'll be expected to perform like that forever. Work too slow and you'll be closer to the chopping block whenever the time comes. I'm not suggesting to be lazy and goof off as much as possible to fill the 40 hours but I am saying to expect typical management to be more concerned with how much more you could be doing rather than how much you already do.
I’m just saying when someone is learning, I really am looking for them to put the time in for a while.
Skills tend to increase in nonlinear jumps, so I’m not looking for a targeted increase. I’m looking for someone to discover what they are actually capable of which is often more than they anticipate.
Amazon is gutting its voice-assistant Alexa. Employees describe a division in crisis and huge losses on 'a wasted opportunity.'