DEV Community

Calin Baenen
Calin Baenen

Posted on

Why do I hate external things in programming?

I've noticed that I can be very not productive because I hate using external things (usually tools).

For example, I have a bit of a distaste, or at the very least, feel sour when using, or looking at build tools.

Why is this though? Is this a common fear (at first)? And what causes it?

Top comments (22)

Collapse
 
marcelofarias profile image
Marcelo Bukowski de Farias

You're not alone. In part, this is why CodeStream was born. (I work there, BTW)

Collapse
 
baenencalin profile image
Calin Baenen

What's that?

Collapse
 
marcelofarias profile image
Marcelo Bukowski de Farias

It's an open-source IDE plugin that integrates issue trackers (Jira, Trello, etc), code review, pull requests and code discussion. Basically you don't need to switch to external tools to perform any of these tasks. Currently available for VS Code, IntelliJ (and all JetBrains IDEs), VS and Atom. Take a look at codestream.com/demo

Collapse
 
soumyaranjannaik profile image
Soumya Ranjan Naik • Edited

Umm actually that was what I tried to do when I started my career but soon I realized I am reinventing the wheel and wasting some of my time doing something that I can just implement by directly importing some library and make a innovative product or tool without reinventing the wheel.

Yes there is still some problems and things that I don't like but since things are open source I can just edit it according to my needs or if I have an better approach I try raising a pull request to that tool or package and help the community because that's one of the things that open-source promotes better tools and products by collaboration.

I am kind of over it now and I use django (which is quite opinionated and follows a battries included approach) and python and my main motive is using tools to build solutions without reinventing the wheel.

I think you should try using them and if possible try contributing so that you can feel the same amount of security with other people's tool as you feel with your own.

Collapse
 
baenencalin profile image
Calin Baenen

Well, it isn't just about that. I don't mean just simple libraries, or anything.

I mean things on the scale of tools like Maven/Gradle. and various programs of a similar caliber.
Unless that could be treated the same in this scenario.

Collapse
 
soumyaranjannaik profile image
Soumya Ranjan Naik

Technically they make the work of a developer simpler and help them in doing so without reinventing the wheel so I would treat them similarly and if you understand the internals or the processes then just try contributing to the parts that you feel isn't good or problematic or atleast raise a issue on the repo so that someone might notice it and try fixing it or you might get clarity on why something is like that and what they considered while doing that or if you can fix it try to raise a pull request after all you are free to ask or contribute.

I have also got replies on repos which explained why something was done in some way and not the other way and most of them reply with atleast some kind of explanation or link to resources. If you don't understand still then you can try asking here and most probably someone would explain you that.

BTW if I am not satisfied with a tool I try looking for alternatives that might have the things or features that I need.

Thread Thread
 
baenencalin profile image
Calin Baenen

What about IDEs? There's not really any alternatives for that, and to me, they seem too complex.

Yes, people tell me to learn, and I want to, but things like IntelliJ, which I tried just overwhelm me. And they feel overbloated, with no menu organization that makes them beginner friendly, nor do they explain their features.

Is it okay to be upset with an IDE for this reason, or am I making a fuss over a learning curve? Because I honestly don't know what approach I should take to being scared of tools, and programs, etc.

Collapse
 
athomsfere profile image
Austin French

Examples?

Collapse
 
baenencalin profile image
Calin Baenen

Look at some of my other replies.

But,
Maven,
Gradle,
Dotnet (instead of just csc),
IDEs,
other things of that nature.

Collapse
 
athomsfere profile image
Austin French

I think I can only barely grasp it then. Some stacks, I hate the tools more than others.

Java for example. Most of the IDEs are terrible. They are slow to respond to my desires.
MySQL, same issue with most of the IDEs.

But, at the same time the simplicity of the things doing and organizing my work is worth it.

I do love Visual Studio though. And I'm starting to like MySQL Workbench.

What I actually hate, is when my workflow requires changing input methods:

type type type type, move to mouse, click, new window, type, click, close window, click text field, type type type.

Thread Thread
 
baenencalin profile image
Calin Baenen

It's definitely a weird workflow, but I hate IDEs for a stupid reason.

They are just too overwhelming, they are loaded with features (which is good), but they don't make it look ready to anyone coming from something like VSCode (which I like for its "open file, type, save program, ?test-run program", and the way it doesn't try to take too much control.
What I mean by that last point, is that it doesn't insist on anything. For comparison, when I wrote doccomments in Java, IntelliJ forced me to have the space indent (and if that could be turned off, they hid it from dumbasses like me super well), in VSCode, it doesn't. This personally is a big point for me, because only the ones after the first line have an indent, and its misalignment triggers me.
I'm sure you can imagine quite a few other "insistive" problems.

What do you think of my reasoning? Is it stupid? Am I making a fuss out of IDEs being better than the "advanced text-editor" that VSCode is?
Or is this (at least kinda) a legit reason to be upset towards tools?

Thread Thread
 
athomsfere profile image
Austin French • Edited

Not sure what you mean exactly, but I think I have some idea:

  public static bool IsValid(this Entity entity)
  {
       // force tab indent to here
       if (entity.IsActive && 
               entity.Expires.Date <= Datetime.Now().Date)
       {
           return true;
       }
       else
       {
           return false
       }
  }
Enter fullscreen mode Exit fullscreen mode

In which case, if you aren't used to working on teams, I can get the frustration. I assume you don't like that whitespace format? But above that is the "correct" format for C# according to MS, expect I used spaces instead of tabs.

Consistency across teams (I currently have peers around the globe) being able to scan code quickly, and not mess with a dozen styles is actually critical. So for me, an IDE that does well with something like StyleCop, linters, Resharper etc. is a very nice to have.

Especially for Jr. developers: "Here's the MS recommended style, here are our exceptions".

I always try to keep the list short, because no one wants to miss a sprint because someone kept flagging " needs work" for minor style issues.

Thread Thread
 
baenencalin profile image
Calin Baenen

Well, things like this are annoying, too.

/*
 * This is triggering me, and I can't change this (as far as I'm aware).
 *
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
athomsfere profile image
Austin French

Comments, in general? Or comments similar to that?

I'm of the camp: Comments should explain what your code can't.

    /// 3rd party library has a "bug" which requires this format
Enter fullscreen mode Exit fullscreen mode

If you mean: Using that style of commenting for a single line of comments, then:

1) Almost every style guide I've seen would call that a bad practice. It should be fixed
2) In compiled languages, at least it has no impact as generally the compiler will drop comments.

Thread Thread
 
baenencalin profile image
Calin Baenen

No, I meant w/ doc-comments, it forces me to have a space on all (comment) lines below the start, yet doesn't align the top (starting) line.

Refer to what I sent in the code block to resolve any questions, and ask you're still confused.

Collapse
 
zuluana profile image
Oranda • Edited

Here's my two cents:

Most things in life require tools. If you brush your teeth, sure you can use your finger, but it helps to use a toothbrush and some toothpaste.

I believe the fear is both normal and healthy. Even our own limbs are tools. When you were a baby, you were probably nervous to walk, but because you did, you can now run!

Think of these tools as people. Until you take the time to get to know them, you won't know if they're friend, foe, or something in-between.

Try to meet your goals without these tools. Then, if you hit a roadblock, slowly add them back in. This can help you develop a deeper appreciation while keeping your toolchain light.

Unfortunately (especially for introverts like me), sometimes you need to meet a bunch of people all at once. In that case, just learn their names, get the gist, and keep on chugging.

In time, you'll figure out who your friends are, and they will be invaluable resources.

Collapse
 
raddevus profile image
raddevus

I agree with you. However, over 29 years in IT and 21 of those years spent in Dev have beaten it out of me. Let me see if I can restate a part of what you mean:
There are tools we devs have to use that are supposed to just work so we never have to look at them (build systems like gradle in Android are a great example as are IDEs (XCode on Apple, Visual Studio, etc)). Then those underlying things break and we have to learn some technology that is indirectly related to actually creating the product or writing the code. This makes it very difficult to focus on doing the thing that you do, because you end up wasting your time working on some esoteric detail of an underlying tool. 🤮 But, such is the Dev Life.

Collapse
 
baenencalin profile image
Calin Baenen

While tools seem like they could be nice, depending. Wouldn't it just be nice to have just the language, its RTE, and maybe some additional libraries, etc...

I personally feel like it's a waste of time learning tools. Personally, tools just seem like a bit of overcomplication to the process.
Seriously, the only language like what I'm describing is Python, and that's just barely like how I describe, escaping by just the grace of the python command, and the functionality of running when you DLClick a .py/.pyw file.

Collapse
 
kspeakman profile image
Kasey Speakman • Edited

I decided long ago that it was not worth using tools at a deep level. Because they will change and you will have to waste time relearning. And yeah, somebody with a lot of special shortcuts and code snippets can code a lot faster than me. But if that really mattered, programmers would be tested for it before being hired. It is far more important to think rightly than to code quickly. The tools are ephemeral so treat them as such. Use the best parts and ignore the rest.

Collapse
 
stereobooster profile image
stereobooster

Maybe slow feedback loop is what you dislike in those tools?

Collapse
 
baenencalin profile image
Calin Baenen

Feedback loop?

Collapse
 
stereobooster profile image
stereobooster • Edited

Take a look this talk youtu.be/VD51AkG8EZw?t=1930 (starting from 32 minute) or dev.to/omaiboroda/shorten-your-fee...

How many time it takes you to see change (between writing code and actually running code). The shorter is better. Complex build setup often means slow feedback loop.