RoboRobok's avatar

Am I the only one hating slow dev environments?

Companies care about revenues. Programmers are expensive. Yet, in my career, I almost never see a company who cares about the fast programming environment.

By fast environment, I mean what happens when we save our code and want to review our change. In large projects, there's usually a full blown earthquake going on when we do that - everything is restarting, recompiling, refreshing etc. But most of these things are not needed - why does my queue needs to restart for almost a minute when my code doesn't even have anything to do with the queue?

I don't understand why our programming culture doesn't seem to care. Slow action after changing the code makes the development process so, so much more tedious. There are cases when I need to debug things by trial and error, using dozens of possible scenarios and each one takes many seconds to recompile. That's frustrating.

It's also a terrible experience. Imagine a painter who needs to wait a minute between each stroke. I mean, when I have an idea in my head and I want to put that as a code, I need to do it quickly, before the idea vanishes. But no, the environment doesn't allow me to do it naturally.

Does anyone here share my frustration or you don't find it that important? Maybe I'm just being too neurotic?

0 likes
49 replies
automica's avatar

Surely this is more to do with how you've got your environment set up? when you say slow, how slow? Are you able to specify the hardware for your development enviroment with your employer?

Decent hardware is cheap - any half decent pc capable of developing on is only like $500, and even a crappy old laptop should be reasonable.

Approach your boss and put in a case for better hardware to be supplied. If your boss won't do that, just stump up some cash and buy your own and use that, or find a better boss.

Dont suffer.

1 like
RoboRobok's avatar

From my experience, this is not the case at all. Everybody in the team goes through the same process and nobody uses weak hardware. There's just too much going on in the background. In your average working environment, how long do you wait until you see the result?

automica's avatar

I'm a contractor. when I wanted my dev environment to be faster, I paid apple £900 and two days later it was faster.

1 like
RoboRobok's avatar

You're using such a cheap hardware and get fast environments? May I ask you if you have ever worked on a mid to large project?

automica's avatar

yeah. My M1 Mac (8 core / 16 GB RAM / 512GB SSD) is more than adequate for writing php and running docker images.

What size do you call mid / large projects?

I wouldn't expect to have a local development environment to run a whole eco system if I'm not writing code for all of it.

What are you building which requires a faster machine? - and what spec do you think you need to be able to develop for it?

1 like
RoboRobok's avatar

I don't think it's a hardware issue. Like I said, everybody in the team gets ~30s refresh times and they accept it. I'm not gonna buy a rocket to work on it and my hardware is already good. Even on the most expensive Mac I don't think it would go below 20s.

automica's avatar

sounds like there's something pretty off about your codebase then?

what type of application is it? are you hitting any external services or is all this local issues?

1 like
RoboRobok's avatar

If there's something off, then most companies are off, including some industry leaders I have worked for. Most of that process has to do with the queue being restarted.

martinbean's avatar

A development environment is as complicated as you make it.

1 like
RoboRobok's avatar

Sure, but I mean when I join the project, so it doesn't have much to do with what I did or prefer. On one hand it's nice to have the queue functionality reflected on local, but it also slows down the creation process. I'd say if the app is really complex, making the env faster would make it more complicated, not less. It's the optimization that misses here. The queue would need to be refreshed only when I change the code using the queue. But that's more logic, not less.

martinbean's avatar

You can use whatever queue driver you want locally if you configure the QUEUE_CONNECTION variable.

RoboRobok's avatar

Of course, I know. The thing is, it's not actually a Laravel project. It's not even PHP. Please forgive me posting on laracasts, but I thought to ask as a general topic. :)

martinbean's avatar

@roborobok I’m not sure what response you’re wanting? We can’t change how your projects are set up. If you want to use something else, do so. If you have ideas on how to make your workflow better, faster and easier, then suggest it.

1 like
RoboRobok's avatar

You know it's unrealistic in a huge project. Nobody will invest in changing the architecture. Also, I'm surprised you haven't experienced that. It's very common in bloated apps to have environments like this.

martinbean's avatar

Also, I'm surprised you haven't experienced that. It's very common in bloated apps to have environments like this.

@roborobok I work in as big an organisation you can get. I’m technical lead on a new project so can make decisions on architecture, how it’s ran, etc. My role before then was software engineer to solve exactly the problems you were describing: making processes easier across the company and removing complexity and barriers so developers can just get on and write code.

1 like
RoboRobok's avatar

How long does it take after these improvements to see the results of a code change in your project?

martinbean's avatar

@roborobok Minutes. We release often. We don’t do massive feature PRs; we break a feature down into multiple PRs and use feature flags to “hide” things if it’s in development or whatever. I can have a change on production in minutes. I commit and push; it’s then built and test suite (and some other things) ran; a Docker image is then pushed to our staging environment automatically. We have these steps because we don’t want any un-tested or breaking changes pushed for obvious reasons; this step is unavoidable.

Again, I don’t know what you’re expecting or wanting. All you’ve done is had a moan about “things” being complicated or taking a long time within mentioning anything specific, and then constantly responding to replies in a way you want to go, “A-ha! Told you so!” way.

Identify any inefficiencies in your process. Any wasted time on each build/release is just compounded over time. Look for processes that you can improve—or flat out remove—and do it.

1 like
RoboRobok's avatar

I don't want to be mean, but are you sure you have ever worked on a mid+ project? You make it sound like you haven't.

Fix what? Fixing it will take weeks, to learn their architecture and then fix and test it. Nobody will pay for this.

You also didn't understand the topic, as it has nothing to do with releasing the code. I clearly stated that it's about the local changes. So - you edit something and want to see the results locally. And the question is how much time passes in between.

When I was a junior dev, I also thought it's always bad design when something is not perfect. But then I started working for the industry kings and perfection is never there and they don't want to fix it, because it's too tedious / near impossible at this point.

My question was about the psychological take on the subject. Is this something that frustrates everybody, but is the cost of being a huge project, or are some companies actually taking it into consideration? I don't think this question is aimed at you @martinbean but thank you for your input.

automica's avatar

I'm not sure if this is just a 'mine is bigger than yours' thread?

are you sure you have ever worked on a mid+ project

what does that even mean?

1 like
RoboRobok's avatar

It's not the first time when @martinbean sounds like a junior dev trying to disguise himself as a pro and I'm not the first one seeing that, it was mentioned by many people on this forum before.

I'm raising up problems of huge apps, yet the response I got was suitable for a small app. So it's completely irrelevant, because the procedures are completely different on the industry level.

automica's avatar

so this thread is an opportunity to moan about your work and put down other contributors?

I'll ask again - what do you mean by 'mid+' projects? how many devs is that? what size codebase is it? what sector is it?

1 like
RoboRobok's avatar

No. It's about getting feedback from other devs who have a clue about working on the industry level and if it's normal for them. I'm curious how they feel about it. Not sure what is it that you didn't understand.

automica's avatar

I'm unclear what you mean by industry level?

1 like
RoboRobok's avatar

Then this topic is not aimed at you neither. Please, just let the others talk.

automica's avatar

ah. right...

so you're working for a big company but won't say how big it is, or explain anything about your infrastructure, but have the cheek to criticise when someone asks you to explain yourself?

slow hand clap for that one..

4 likes
RoboRobok's avatar

What do you need an explanation for? I think the problem is with how some programmers think. Some of us have purely practical, problem-solving kind of thinking and they misunderstand any meta-topics. It happens on Stack Overflow a lot too, I have seen many great meta-questions being closed, even though they asked very precise questions.

It's not your business how big this company is, because it has nothing to do with anything. If you haven't experienced clunky dev environments, you've been either lucky or just haven't worked on something big.

automica's avatar

I was trying to gather some context.

I'm a contractor and have been for the last 2 decades and have worked across a lot of environments, some large, some small (but not sure how small or large these are in the context of your question which is why I asked for specifics).

I worked recently in financial services for a FTSE100 shares trading platform and that probably constitutes an environment which shadows some of your issues. The codebase was build in PHP, Java, Cobol, and some VB if I remember correctly. We were building out the API's to allow it to talk to each other and external 'mobile' apps.

Our dev environment wasn't massive though as we only needed to run our own code, and then when we pushed it to testing, it was integrated with the other services it needed to talk to.

I'm sure this is all pretty basic stuff for you, so won't elaborate any further because I'm expecting what you've got to say is far bigger / better / larger scale than this..

1 like
martinbean's avatar

It's not the first time when @martinbean sounds like a junior dev trying to disguise himself as a pro and I'm not the first one seeing that, it was mentioned by many people on this forum before.

@roborobok Fuck off. I’m currently a tech lead at Pfizer. Pfizer is as enterprise as you get, with nearly 100,000 employees and several legal obligations when they write code. I must be the world’s greatest bull-shitter if I got this role when I’m just a masquerading junior dev 🙄 Especially since I moved into this role from a senior dev role at Pfizer.

Like I say, all you’ve done is moan about something non-specific. No one can help you or offer you suggestions if you don‘t elaborate. So either fix the shit in your definitely-bigger-than-mid-sized-project, or stop moaning and fuck off. I’ve just spent the last three days watching a family member die and don’t have the patience for trolls like you.

5 likes
RoboRobok's avatar

I'm sorry for your loss, but isn't it a bit weird to answer a question unasked and then blaming someone for asking? Seriously, I'm fine without you contributing here, as you haven't added any value in this topic. Please just go.

martinbean's avatar

@roborobok You’re the one that started the thread! Don‘t start a thread if you don’t want replies.

I’m done if all you’re going to do is be difficult and start trying to insult me. Good luck with what sounds like a ball-of-mud project.

2 likes
RoboRobok's avatar

Out of the corporate level projects I've contributed to, this one has one of the best architectures. If what you're saying is true (you have experienced large scale projects) then I'm confused. You may try to put it as if all of them were perfectly designed from the scratch. Well, then good for you. You'd be the first person on Earth with this experience, what a special place to be.

automica's avatar

probably best to mark your comment as best answer with that response.

RoboRobok's avatar

Probably best to skip the topics you're not able to contribute to.

automica's avatar

and I hope you can take your own advice too.

RoboRobok's avatar

Yup, I always do. I don't spam others' topics, unlike some people. Now, bye.

jlrdw's avatar

@roborobok you said:

and each one takes many seconds to recompile.

What language? I have had times in the past (semi retired now) waiting on netbeans to compile code changes in java. But as to your original question:

Am I the only one hating slow dev environments?

I knew it was part of the process so didn't give it much thought. You used the analogy of a painter, so I will use one.

No different that a commute to work, it's part of the routine, probably everyone hates it, but accepts it. But I will say that going to a faster processor and increased memory does make a difference.

There's some things you can't get down to a millisecond. This is one of those post that I wish @jeffreyway would add a reply.

RoboRobok's avatar

Thank you for the first reasonable answer in this topic, because I lost hope. So, this project is created in Python. I know this company's philosophy is to have a local environment resembling production as much as possible, so it restarts the queue a lot to avoid outdated code in it. That's the heaviest operation during the refresh, but not the only one, obviously. And your quote "I knew it was part of the process so didn't give it much thought" is kind of feedback I'm looking for. Not sure if there are big companies prioritising developer's comfort. Because it's not only slowing down the process, but also affects the anxiety in my opinion. Programmer's fatigue is a thing and I personally believe loading times are one of the crucial factors causing it. This analogy with a painter is the best example, I think. Creative process should go with the natural flow, while machines taking their time to process affect this process.

kmich's avatar

Before I address the topic I have to say this: not a fan of what happened to this thread. It got too personal and turned into an insult-fest. I hope everyone sees that and agrees we should do better.

Regarding the topic itself: I think I know what @roborobok is talking about here, and I agree. We're in a sad state, as an industry, and have been for years now. But many of us simply don't see it, because we're distracted by the new shiny things, disregarding the cost they bring, or simply think that's just the way things are.

I think the problem is the tooling. More specifically - its unnecessary complexity, which we as an industry simply made peace with. Why? You got me. It never made sense to me and was painful to watch over the years, as it evolved.

There are so, so many moving parts in our projects with regard to tooling, we've made it so much more complicated than it really needs to be. Things compile, transpile, truncate, concatenate, minify and restart. And then they magicify, shazamify and abracadabrify, just for good measure. All because... reasons.

We brought this on ourselves.

Unfortunately - no hardware upgrade will solve this, neither now nor in the future. The moment the hardware advances - we notice, upgrade, and immediately take advantage of that by introducing even more complexity and moving parts to our tooling, because we now have even more power on our hands, so why not use it?

In many ways - things are worse now than when I started in 2000. And it's sad to watch. This needless complexity and the blind pursuit of the next shiny thing, no matter the cost, is weighing on me and I'm shocked more developers are not talking about this.

1 like
RoboRobok's avatar

@kmich thank you for your input!

I'll start from saying that I'm sorry for getting offensive in this thread. It drives me mad when I'm misunderstood. And in this industry, sometimes I feel like I was in the Truman Show. Some people (too many people) tend to tell me that A is B and B is A. I have no clue why that is. I raise a problem which is very clearly a problem for me and I get responses saying either that it's not that much of a problem, or that it's actually my "fault" (which completely negates my experience, as I see everybody experiencing this), or that it must be like this. It's frustrating, absolutely infuriating. And what's the worse in it, is not that my concern is being dismissed. The worst is this feeling of being misunderstood, the feeling that it's me who does something wrong. And this advice about the hardware I got from some replies is complete and utter bs. It can help maybe by 30% max if I buy a hardware for the price of Ferrari (which I won't), but it doesn't solve the problem at all! It's the 1000% improvement (at least) that would fix the problem, not 30%.

Maybe this is because another part of me engages in art-related activities, so my thinking is not as technical as some other devs'? Yet, I'm a senior developer for many years now, my consistency brought me there and I like it there.

Maybe it has something to do with people focusing on results and ignoring the process? Hard to say. All I know is that if the result is not brought up in less than maybe 3 seconds, it interrupts my creative process and slows me down.

simonebogni's avatar

@RoboRobok you say that you get angry when you are not understood. This is a lesson that I learnt from a very wise CEO years ago: "If you are not understood, before blaming others, make sure the misunderstanding isn't originated on your part. Because that's an area that you can always fix".

2 likes
MichalOravec's avatar

What is this thread about?

It's about OP's inability to make job easier during development.

3 likes
RoboRobok's avatar

@MichalOravec okay, so we have another one. Can you elaborate on this or you just want to stick to offending me? Assuming you have worked at big apps, how long have you needed to wait for the result to come? And what would you do about it that made you "able to make job easier during development"?

simonebogni's avatar

Guys, from the way they interact it's clear that this person is just a troll. Please, don't engage and don't get angry. Simply ignore them, they are definitely not worth your time and rage. If you do, you are the one suffering while feeding them.

1 like
RoboRobok's avatar

@simonebogni I think you're the one trolling here.

With this kind of judgement, by calling someone troll when it's you unable to understand the thread, you'll get stuck being a junior dev forever.

Almost everybody in this thread appeared to be a lemming of programming. You don't question what you're doing, you just follow it as it is. And that's why this industry is what it is, because of ignorants like yourself.

automica's avatar

@RoboRobok I've not been on laracasts for a few days and was reading down your nice chilled post from a few days ago.

I don't work with code compilers when I write php but do have some empathy as when I work on Front End stuff then I have to wait to see compiled code that I can run (react/ vue/ web pack etc).

I may not have the same experience as you or work at the same enterprise level but that doesn't mean I don't understand. For my sanity, I have preferred to work in not enterprise projects because I hate how long it takes. It's not just how quick an app builds but how long planning decisions, deployment, refactoring and all of that pain.

I'm sorry to hear you have to work with the restraints you do, and its frustrating for you, but I don't think its a good approach to lay that frustration out as anger onto anyone who's opinion you don't value, and its certainly not good to name call or belittle people either.

As for: And that's why this industry is what it is, because of ignorants like yourself. you're not going to make any friends with that comment. I'm not sure what company you work for but I'd rather be sitting next to @martinbean at work..

BTW my 16 year likes your Yoshi profile picture. He describes it as a mark of a true professional.

#staypro

1 like
martinbean's avatar

@automica Yup. I‘ve too had a few days away to clear my thoughts and approach this in a more level-headed approach.

I think the problem stems from this:

It drives me mad when I'm misunderstood.

People asked for more information or clarity but it just got shot down with insults of “You don’t know what I’m talking about” or “this thread is not for you”, or—in my case—targeted insults of, “Well, you’re a junior pretending to be a senior and other people have said as much too”. People were trying to get more information out of the OP to be able to engage in the conversation, but the OP was unwilling to offer this and instead pass the blame on to others from not “getting” what it is they were trying to say or have a moan about.

My previous job role in Pfizer was to solve exactly the types of issues the OP was alluding to but never embellished on. We have literally hundreds (maybe thousands) of developers and engineers in the company, all working on pretty large codebases. Pfizer isn’t exactly a tiny marketing agency pumping out low-budget brochure sites for customers; it builds mission-critical apps, maybe processing huge data sets or whatever, and have to do so within the confines of various regulatory bodies and laws. It’s as enterprise as you can get. So time developers spent idle waiting for builds or whatever to finish is time wasted across a huge organisation and was within my team’s remit to solve and eradicate. Time wasted is money wasted.

So I probably would have had experience that I could share with the OP, but they preferred to instead attack those who weren’t clairvoyant enough to perfectly understand what it was they were moaning about without further detail.

2 likes
RoboRobok's avatar

@martinbean I was surprised that any detail would be needed, because it's an industry standard to make developers wait. I assumed that these questions for clarificafions mean that someone haven't experienced it = didn't work at bloated logics. But I know that being offensive doesn't lead anywhere and many people prefer to compose their answers through emotions. Like I did, except I wasn't answering anyone's thread.

What would any clarification change though? It happens in any environment, any language.

automica's avatar

@RoboRobok laracasts is about developers getting together to solve problems which have real answers, but I guess with your thread, how would we identity these answers?

If the problems are within your business, is there some way of switching roles to be away from those problems? Can you approach a manager / scrum master to relay your concerns and make a plan to improve things? Do you just need a holiday to get a break and clear your head?

My job is also a bit shitty at the moment, but I keep a check on that as I have friends working in front line services with worse pay and unsociable hours.

It's bad, but could be worse, but lets try and make it better.

1 like

Please or to participate in this conversation.