loading...

What software development tools (libraries/frameworks/apps/whatever) make you feel most anxious while you're working with them?

Ben Halpern on January 24, 2020

The reverse of this post... What software development tools (libraries/frameworks/apps/whatever) make you f... [Read Full]
markdown guide
 

Wireshark.

Because at that point, something is VERY wrong.

 

Similarly - gdb at assembly level...

 

Docker, every time I touch it I feel like I waste so much time. I get it working, but I feel like I could of done better.

 

Keep going, once you master it, you'll reap the rewards my friend!

 

Thing is that most of us just deal with docker when we absolutely have to. So you mostly have to relearn it every time '

Could you give me some examples of some of the things you have to do? Would be interesting to see it from another's perspective

 

Right, I try not to use it unless it's absolutely necessary.

 

Same, the docker developer CLI and I don't particularly jive. Luckily docker is pretty much 'set it and forget it' once you set up a Dockerfile.

 

I've just lost three days of work because of that thing. Looks like a fourth in the making.

 

Webpack.

Most of the time, I just copy/paste, if it works, I put it aside.

 

Try out rollup! It's all the goodness of webpack, with way less and more clear syntax!

 

Parcel is also a great tool if looking to stray from webpack. Here's a great article comparing the two: blog.jakoblind.no/parcel-webpack/

 

Yes, Parcel is amazing. But, most of the modern tools are using Webpack so you'll face it at some point.
I am also still struggling with it.

 

Watching someone/working in Production Databases. There's so many easy ways to accidentally bring the system down in a fiery mess. Especially when watching someone that doesn't give off a strong sense that they know what they're doing.

 

Just as anxious-inducing for me is copying a production database to your local development box. If there's private customer data, ugh. (One consulting gig insisted I copy the production database over for local development or connect to it directly and it was a small business so the owners and employees and contractors can lose their livelihoods with one messed up SQL query or ORM command).

 

Same with me. Well that is a scary situation playing with the production database.

 

Heh, that's referred to around my way as 'playing Operation in prod', aka live heart surgery...

 

AWS. The web interface is really complicated and I always worry I'm going to some how rack up a huge bill by doing something wrong.

 

I have a similar fear when using Firebase. The web interface is okay but logging/debugging is really poor. For example, we pay by the number of reads/writes we do to the database.

One day I was setting up a side project and I was getting like 1,000 reads every time I opened up my app. It was freaking hard to debug where those reads were coming from as they don't provide a way to see stats by documents in the database.

I'm always afraid I'm going to do something stupid and end up having a huge bill.

 

The way firebase works is that all the debugging should be done on your app's side, unless the problem was with cloud functions.

 

AWS pricing is notoriously complicated and opaque.

I did a price calculation recently, comparing what it would cost to host something on AWS versus Linode, and I was pretty shocked to find that data transfer out was approximately 9 times more expensive per Gigabyte compared to Linode (I'm not affiliated to Linode in any way, although I've been a happy user for a couple of years).

But this is nothing new, I believe that billing being notoriously complex and nontransparent (and expensive compared to competitors) is a known thing with AWS.

 

That is the number one reason I decided to go with Google Cloud, as it's easier to use.

 

Anything to do with Android. My first attempt at making an app was about a year or two after Android launched (2009?) I tried again later on and didn't get very far.

And in the last 2 years I've tried to work on an existing app and that went okay except it was 99% React Native/TypeScript (which I already have experience with so I'm not anxious about it, I'm only anxious when people write JavaScript/TypeScript as if it were Java!).

Now I'm trying to give it another go, this time by using Kotlin to cut down on boiler plate.

But it still makes me anxious knowing that the official docs and some books won't have the help I need, it'll be some obscure question on StackOverflow or a random blog that has the answers to my questions about Android.

 

In general, mobile development. It seems soooo cumbersome to setup, tools are like too heavy, too many downloads, so tedious to test(sometimes).

 

Apple/iOS is even worse with their complicated Xcode and "iTunes Connect" tooling (which you have to use even when you're creating a mobile app with Cordova). Android tooling is much, much simpler. And with Google you pay USD 25, one time, while Apple makes you pay USD 100 per year (!) for the "privilege" to enrich their App Store with your apps.

 

Vanilla JS. I had a dream about [object Object] once.

 

Was it the [object Object] of your desire?

 

Uncaught TypeError: desire is not a function

 

For me "Eloquent JavaScript" and "YDKJS" were huge breakthrough on making up with JS.

 

I'll say Redux. It's been a while since I used it, and I like the high level concepts, but the amount of verbosity and boilerplate always makes me anxious.

 

I've never used React/Redux, but Vuex is pretty nice. Especially if you use Vuex modules (which e.g. Quasar does by default). Plus Vue.js uses pure JS/ES6 (or Typescript, if you're into that sort of thing), as opposed to JSX.

I never got the appeal of React, tbh.

Also, I rally need to check out xstate - a JS state machine (library?|framework?).

 

And the amount of hassle to write 'immutable' code, which can however probably be avoided by pulling in a 3rd party library.

 

same. If you have typescript then it just so much bloat that you just go crazy. :)

 

Anything NPM/node related.

It's probably just a permission issue, but I've run into an infinite loop of trying to update one thing, it says I need to update this dependency, but I don't have permission/can't for some odd reason.

I avoid it if I can.

 

I had a permission issue to install elm, I ended up creating a folder in my home directory and change that to be the global one.
Npm actually recommend such an approach (though they recommend npx for global execution, while I just added the folder to path)

 

Oh, yes! I definitely forgot NPM and overall Node package experience in my list. Huge headache.

 

Windows.

I've been lucky in that I haven't really had to use it since ~2013, and I know my way around it (have basically used all versions from 3.1 to 7), but after using Linux, not having a drop-down terminal, or virtual desktops, or built-in SSH, GNU utilities, etc. means I hate every single minute I have to spend in that garbage bloatware.

P.S. I know, you now have WSL (and even when I used it, you had cygwin), so you can make it somewhat usable, but I'd rather not bother.

 

Windows 10 (released 2015) has improved immensely for devs that need bash/terminal/ssh/etc.

WSL literally changed the game. I used to hate Windows because I just want to use terminal (I used Linux, vi, terminal, etc for many years). But then WSL came out with integration in VS Code and it's been a godsend.

I encourage you to grab a Windows 10 device and try it. I guarantee it is light years ahead of Windows 7. You don't have to believe my words, just try it out yourself and form your own opinion.

 

I'm aware. In fact, I mentioned WSL in my P.S.

I encourage you to grab a Windows 10 device and try it. I guarantee it is light years ahead of Windows 7.

Yeah, but is it ahead of Linux?

For my uses, it's way better than Linux. But that's my situation. Your situation may be different. Regardless, it would be good for you to try the latest builds of Windows 10!

Regardless, it would be good for you to try the latest builds of Windows 10!

I focus on web development. I run postgres, nginx, python, docker, sometimes PHP or MySQL...

Seeing as Windows 10 uses up 1.5-2.5 GB RAM idle, and requires a VM when using docker, AFAIK, which wastes clock cycles, it's really not for me.

Use an environment for dev that's as close to what you run in production as possible. If you deploy in docker on the cloud, you're better off just using Linux on your machine, as well.

That said, I'm not opposed to trying it. I just don't have a spare machine or time to waste on that right now.

 
 

Pretty much every dev tool used in the development of native iOS apps. Even just downloading an open-source app from Github and trying to build and run it is a nightmare. Xcode is probably the most expansive IDE around but makes it difficult to complete even the most basic tasks without having to solve a nondescript compile error in the process.

When I first started programming I had goals of becoming an iOS developer. This was when Swift was still a fledging language which meant that most existing codebases, tutorials, and documentation of the time we're migrating from Objective-C, or worse, using both languages in conjunction. This led to an astounding amount of confusion and frustration. So many errors and warnings telling you to convert to a certain Swift version only to find out that the CocoaPods package that the app depends on isn't compatible.

By far the most anxiety-inducing, ass-backward hurdle to overcome when trying to run an app is the code signing and provisioning process. Without being enrolled in the Apple Developer Program it is monumentally difficult to configure and run an application with any advanced app capabilities. Even with the proper certificates you will more than likely experience issues with the bundle identifier not matching your provisioning profile, certificates being revoked for seemingly no reason at all, and the neverending struggle of code signing apps that you're collaborating on with multiple devs.

What makes all of this worse is the fact that Apple's Developer Documentation is atrocious. The documentation for many of the core concepts needed for programming for iOS has been relegated to the shadow realm aka the documentation archive making it near impossible to find. When you do find what you're looking for, chances are that the page hasn't been updated in years and the information you're seeking is only documented in a release note that you'll never find. Worse even are the topics only explained in a WWDC video causing me to comb through pages of video transcript to find the one instance where someone sheds light on the issue you've been having.

 

Xcode.
Just started with it and it is so confusing.

 

I didn't do any serious coding in Swift & iOS development, but I've played a little and AppCode worked fine for me. Consider trying it, though I recommend to have XCode opened, because some features are not implemented in AppCode (e.g. visual editing of storyboards, though trying to open it in AppCode actually opens XCode)

 

Agreed 100%. Apple development is not a calming experience.

 

Completely agree. I've been using xcode for some time now and I constantly lose motivation because it is an abhorrent dev tool. I recently tried Xamarin.iOS just so I can keep using Visual Studio and it's been a much better experience.

 
 

Docker scares me, only really because I'm not experienced in it and if I mess up one bit, I can ruin my whole project

 

Everything new and unexplored makes me uncomfortable still. My manager mentioned building our next service application using REST instead of SOAP and I immediately felt my hands get clammy.

It'll be fine, and I'll learn a ton, but diving into the unknown is still terrifying.

 

Having to run cordova build android in a new project or after having updated anything related (like plugins).

It happens often that the related builds end up in error because of some incompatibility.

Don't misunderstand me, Cordova and all open source plugins are just amazing, I'm super grateful such an amazing ecosystem exists specially with so many contributors who do a great job.

But to me, there is always a couple of seconds of uncertainty after having hit enter πŸ˜‰

 

Projects with massive CSS scaffolding. Hundreds of SCSS files.

 

Capybara testing because of random failures.

Not sure if this is normal, but Solidus/Spree because you are recommended to customize it via monkeypatch and then you don't know if you are going to break any original functionality. I had a suspicion that it would have been better to fork so that you can run the original tests.

 

Some of the AWS tools that I haven't work a lot with. AWS have very complex structure also their pricing plans are not that clear. So if you nee to use a lot of the AWS technologies and different products in a serious project can't always be sure whether I will not induce some large cost.

 

It's probably Angular. In 2019 I did lots of tutorials and few of small projects, but I still feel anxious with it. Sometimes Visual Studio and C# makes me anxious, even if I work with it on a daily basis.

 

Azure, and mainly Microsoft tool except VS Code. Azure caused me so much pain: not creating resources without clear message why, unable to login to VMs, !!!Azure gateway/loadbalancer decoding URL !!! before calling my API so / gets decoded and send to 404, too slow to create stuff, poor handling od network connections lime cutting client from my API in middle of request, or my database connection does not get properly closed on network layer so all driver and frameworks that rely on pooling hang for a long time...

 
 

Rails. I'm learning webdev on my own and Rails has layers upon layers. I have a small project I'm working on and it's taking some time to dig through.

The 2 big things I struggle with are

  1. Learning the never-ending list of conventions and trying to recall how I did X.
  2. Stepping back from my systems/SRE brain that wants to deep dive everything (I got lost in a rabbit hole for several days on webpack, yarn, sprockets, compression, comparisons, pros/cons, benchmarks, etc.)

I counter both of these struggles by trying to do at least one thing daily and picking one or two things to read more about. As with most things, I imagine expertise with rails takes a lot of practice.

Then I spend time working on a kata or two in codewars to improve my ability with Ruby.

 

Every tool that is beyond the compile time. Every tool that might endanger my app during runtime.

 

Lately I have been anxious whenever I install a new version of Ruby using ruby-install because it seems to then do a homebrew update of various dependencies, which in turn often breaks various other things (this most recent time, openssl and postgresql)

I am 95% sure I am "doing it wrong" in some way and that I could avoid these issues if I dug into them, but the problem impacts me rarely enough that it hasn't risen to the level of "need to fix it" yet.

More broadly, any time that there is a combination of the following factors, I am in for a worrisome time:

  • I don't understand the tool well
  • The tool has a potential to do (not easily reversible) damage
  • Solutions to any problems caused by tool are not easy to find and/or I do not immediately understand the solutions and apply them blindly.
  • I do not use the tool often, but I also don't have an easy obvious alternative to use which avoids the other risk factors listed above.

As a general rule I really, really, really prefer to understand the tools I use and their potential impact before using them. But because this isn't practical to apply to everything, all the time there are always some things that slip through the cracks from time to time.

 

You may try rbenv, which does not use brew whatsoever.

 

At the moment it definitely is Kubernetes. I like it when I get things working but mostly I'm just lost :D Hopefully this will change in the near future.

 

Layered build tooling (esp. home-brewed scripts), or worse: IDE voodoo build tooling - it's usually so fragile, and a PITA to debug when it inevitably b0rks something. Please just use one tool (preferably make!) or at least treat build/software construction as a respected part of the code base :)

In a similar vein: opinionated / platform-conflicting package managers (looking at you PIP!) or poorly managed dependencies in projects: 'You will need to build this library from source' usually makes me shudder.

 

I got to say anything about mobile development and docker.

Like example adding a hyperlink, checkbox & string manipulation is a pain to do it in Swift. I assumed that it was mature to have it out of box and it is easy to use but I was really wrong.

 

Android Studio and the Android SDK.
It's broken like Javascript for web development was broken was before the book "JavaScript, the good parts". But worse because not everybody is aware of it.

 

AWS Lambda functions.

I tried so many times to create a simple lambda function and deploy it via the AWS JS SDK but fail every time I try again.

Either the endpoint is not accessible at the end or I end up messing around with every config that can be configured on the web surface or via the SDK client tool until nothing works anymore :D

 

Don't like how AWS works, so I'm using GCloud.

Javascript and the whole npm environment! Scares me when there is a bug because debugging javascript is sometimes like going down a mine-shaft and your torch dies!

I've had countless problems where the bug was in the imported npm package.
So now I try to avoid all the imports as much as I can.
Luckily Typescript fixes many of the issues, wish I started using it earlier.

 

Any one of these in isolation makes me relaxed, but all in tandem I feel nervous modifying the pipeline:

TypeScript files => (check with tsc) => transform with Babel => WebPack (with assorted loaders).

Add to the fact that the end result has to work in IE11/Safari and I feel reluctant to make changes.

 

React Native + Expo: Even when you know the stack fairly well, the setup is somewhat brittle and can break very easily.

 

React Native has a horrible setup experience. The development experience also sucks because you get trapped in dependency hell. I tried react Native, but eventually quit because I was fighting the framework more often than not.

 
 

state management libraries of any frameworks

 

I once worked with ZooKeeper and it gave me heart palpitations

 
 
 

Anytime I'm editing a JSON config file I'm like
{ "CONFIG.JSON": "WHYYYYYYY???" }.

 
 
 

Freaking JQuery, it's so ugly and tbh for starters it can get pretty confusing

 

Homebrew.

Case in point, yesterday I used it to install Qcachegrind and it broke MySQL.

 

Probably PHP (as a language and all frameworks I tried) and AngularJS from the things I dropped.
And Webpack from the things I use.

 

Ownership in rust. New to rust and trying to wrap my mind around this concept.

 

.NET
- me, an ex-.NET developer

 

.NET Framework was a nightmare for me. I used it for many years, but .NET core feels completely different. The very fact that .NET core is 100% open source and developed in the open makes things so much easier. I can go to their github and see issues created by others (as well as their solutions). It's fantastic.

 
 

React, because it’s made by Facebook. Or at least it is maintained there.

 
 
 
 

Google Chrome. Although I use it only for testing but whenever I turn that devil on, it just doesn't stop hunting my System's Memory. Nightmares. 😱😱

 

I used to use Google Chrome for years, but then the memory hogging started to become a huge problem. Have you tried the new Microsoft Edge (based on Chromium)?? I don't know what black magic the team did, but it uses significantly less memory than Chrome even though it's faster. It also has the same extensions. Plus it has WAY better privacy features (makes sense since Edge doesn't make money from mining user data like Chrome does). New Edge is on Android, iOS, Mac, and Windows. Check it out if you get the chance: microsoft.com/en-us/edge

 
  • Setup a python environnement, when you lunch pip install requirements.

  • Execute database migrations on a production environnent

 

Ionic, It always gives problems to me when compiling, and it always happens on the deadlines :)

 

People who create things on production servers, and don't document.... at all!

 
 

Any time I have to modify a Bash script that's longer than, say, 50 lines. Doubly so if nobody bothered to encapsulate the bits in functions and use local variables.

 

Java, though the last time I had to work with it was in 2014 or 2015. No idea how it has changed since then.

code of conduct - report abuse