
Ask HN: What is your biggest pet peeve in your development workflow? - sshamoon
I&#x27;m curious as to how the rest of the community feels about development workflow. For me personally, one major painpoint is enforcing coding standards across my team. Thankfully sites like CodeClimate and BitHound popped up to help with that.<p>What are your pet peeves?
======
angersock
Two big things:

First, Use of legacy build systems (hodgepodge of different development
environments and in-house tools). We don't need a custom migration tool, we
don't need to badly reinvent make in batch files, and so on. I've been slowly
grinding through and bringing sanity, but it's very annoying work and the
"well it works fine once you're used to it" is a strong thing to overcome.

Second, developing on Windows instead of a 'nix-derived OS. For daily
programming, I like having terminals with reasonable tools installed and ready
to go, and Powershell just doesn't scratch that itch and neither does cygwin
or git-bash. Honestly, this is what exacerbates gripe one: if we were on a
proper OS, we wouldn't have to reinvent so much stuff anyways.

~~~
blakeyrat
On the other hand, I'm dyslexic and I have a _lot_ of trouble with CLIs.

My biggest pet peeve is that there are a lot of development technologies that
have no GUI, or only a terrible half-complete GUI.

Currently I'm doing back-end development where I can get mostly everything
done in Visual Studio, but whenever I have to interact with Git (which has
several GUIs, all of which are either incomplete or intolerably slow) or the
front-end guys (Bower/NPM/Grunt) I end up struggling in a console for waaay
too long to get basic stuff done.

There seems to be this belief in the industry that it's ok if the interface is
kind of rough and crappy as long as only developers are using it. Gripe if you
want about Microsoft, but at least the vast majority of their tools have at
least a decent GUI.

~~~
angersock
You seemed to type this post just fine--out of curiosity, did you do that
aided with anything, or what sort of problems do you have with CLIs resulting
from your dyslexia?

I prefer CLI tools during development because the tools tend to be simpler
("rougher") and easier to compose into pipelines. If you _aren 't_ using your
tools this way, you're missing out on a lot of what makes them useful. They
also are a lot easier to script and write documentation for...type this, type
this, type this--okay, according to your shell history, _you didn 't type what
we told you to_ and there's your problem.

GUI tools are useful for when I'm debugging graphical issues in the frontend
(what is the DOM looking like starting under the cursor right now?), or need
to _very rapidly_ switch context in the backend (what are these variables set
to? What is the prototype and doc for this function invocation?). They are
annoying to script, and annoying to document for other developers. They also
tend to be much larger and less composable than other tools.

As far as the git stuff, well, it's best used from the command-line.

~~~
blakeyrat
I do ok with text, probably purely due to practice. (Playing MUDs, writing
stories, etc.) I've learned what kind of things trip-me-up and carefully read
everything twice before hitting submit.

To be perfectly honest, the main problem I have with CLIs is that there's no
safety net, and a single typo could lose hours of work or loads of files.
There's no Undo, there's no Recycle Bin (or Trash Can or whatever you want to
call it). It's unforgiving and I make a lot of errors, and the combination of
those two things is that I have zero confidence so I avoid them whenever
possible.

I can't think of any development-related task I've ever need to do where it's
helpful to "compose tools into pipelines", except building the solution which
Visual Studio just kind of magically does for me.

And yes, obviously I know Git is best used from the CLI. I hope you realize
how off-putting and discriminatory that feels to somebody like me...
especially now that it's become a de-facto standard _before it has a single
reasonable GUI in Windows._ I can't even imagine how a workplace adopting Git
would feel to a person with a _real_ physical disability.

~~~
angersock
So, on Windows, TortoiseGit isn't too bad. I like some of what the Github
client does, but it gets confused sometimes and that terrifies me. For a while
I maintained our in-house Git tool that enforced a particular workflow--a nice
GUI that had buttons for particular work stages and checked to make sure the
devs were following process. :)

That said, we kept getting nibbled by little issues the interfaces had glossed
over, and eventually I just sat down with the team and started practicing and
reiterating how to do what we did with git, and made sure our team's wiki had
explicit reference instructions. They weren't really CLI folks, but within
about a month they were all fine, and I cleaned up any messes they made and
helped them gain confidence even after big oopsies (like deleting the master
development branch on a weekend).

I think that if your development environment is more server-y ('nix,
basically) you'd be getting more exposure and practice with composition of
tools and CLI stuff. Don't give up!

~~~
blakeyrat
I develop server apps all day. We don't use Unix servers, we use Windows
servers. Which is great, because it means I can use C# which is one of the few
programming languages available that actually has competent GUI tools.

Your post is misconstruing my point quite a bit. I don't _want_ to learn CLI
tools. (Why would I, when they're clearly inferior to GUI tools I already
have? From my perspective.)

What I want is for developers of programming tools to be more aware of
usability issues in their products, and to test their products with a wider
audience of users. (It's obvious the authors of Git never thought for even a
brief moment about usability or accessibility issues.)

Usability isn't just for mobile apps; _all_ applications should have effort
applied to make them as usable as possible to as many different kinds of users
as possible.

~~~
MasterTurdle
These CLI tools are generally developed by and for * nix developers.

These developers generally prefer CLI tools for a bunch of reasons: their
power, flexibility and ease of automation, integration and combination,
standardized in/outputs, use over SSH and speed.

They prefer making CLI tools for all these reasons, and because it takes much,
much less time to write a good CLI tool than to write a good GUI tool.

So, if you prefer hand-holding and mouse-holding, fine, use Microsoft
products, they have something for almost everything you could need.

However, you can not expect developers, who work for free, to spend their free
time to solve a problem they don't have, for a platform they don't use.

If you want these as GUI tools, why don't you build them yourself? No one is
stopping you.

Edit: readability

~~~
blakeyrat
> These CLI tools are generally developed by and for * nix developers.

Duh, I know that. But I'm not a Linux developer, I don't want to be a Linux
developer, and I still have to use Git.

> They prefer making CLI tools for all these reasons, and because it takes
> much, much less time to write a good CLI tool than to write a good GUI tool.

Too lazy to make software properly; gotcha. They wrote about 1/3rd of a good
source control program, then just kind of gave up, stopped, and called it
"done".

> However, you can not expect developers, who work for free, to spend their
> free time to solve a problem they don't have, for a platform they don't use.

No; but I'd expect _someone_ to do it. And it would be nice if open source
developers actually felt a bit of guilt or remorse over how difficult their
products are to use.

> If you want these as GUI tools, why don't you build them yourself? No one is
> stopping you.

I already have a job. My job is significantly more unpleasant because I have
to work with Git. Volunteering my time to work with Git _more_ is not
appealing to me.

------
hamitron
I'm part of the team that handles development for an excessively large
business unit. Basically they meet up a few days of the week, argue
extensively, and pass down the most ridiculous requests for us to complete.
Essentially it means that no project ever gets finished, because everything is
in constant rotation between back-burner and top priority. Even simple UI
improvements have to be run up the chain of mid level executives who feel
obligated to provide input. It kills morale, and leaves little room for
innovation and actual improvement of our products.

~~~
Someone1234
That's why "it's better to ask forgiveness than permission" is so key working
in that environment.

While you cannot do massive things and get away with it, you can get in a long
of small fixes and improvements (which can add up) and just apologize if
anyone notices.

If you had to ask permission for every tiny change it may take weeks and the
ultimate decision would contain the kitchen sink anyway. Instead just do what
has to be done and try not to get caught.

~~~
allendoerfer
When a customer micro-manages me and does not listen to my advice I usually
lose the interest in the project and just finish it to get paid. If I would be
employed in such an environment I probably would not care to slip in
improvements, because I would feel no sense of ownership in the project.

------
gee_totes
When I'm working on multiple monitors/desktops and I switch to one and want to
do some work there, but my 'active window' context is in previous spot where I
was working!

I wish someone would invent some type of eye tracking that would intelligently
assign the context to open windows on your screen(s).

~~~
allendoerfer
You could use a window manager that supports following (instead of clicking)
the mouse or keyboard shortcuts to switch focus. Maybe I have been on the
geek-road too long, but the latter should be supported in Windows/OS X as
well, shouldn't it?

------
Jemaclus
Syncing configuration files across environments, especially when they contain
sensitive info. It's difficult and time-consuming to ensure that production
configs are up to date when deploying new things. Super frustrating.

