I haven’t worked in Oracle for a year now, and I know many of these prob­lems were fixed in later ver­sions. Jeff Smith sent me a very nice email and of­fered to help me work through any re­main­ing is­sues; if I still worked in Oracle I would have taken him up on it.

I don’t like Oracle’s SQL Developer. It’s hard to like a GUI with so many us­abil­ity prob­lems. The first ver­sion was re­leased in 2006, but the in­ter­face feels much older. It’s cer­tainly not bug-free, let alone pol­ished.

I’m told that it’s bet­ter than our of­fice’s pre­vi­ous Oracle GUI (possibly Oracle Enterprise Manager?), and ap­par­ently Toad has it’s own prob­lems. And hey, it’s free! At such times I imag­ine some­one say­ing, I know you don’t like get­ting punched in the gut, but it’s a lot bet­ter than back in the day when we got punched in the face. And hey, it’s a free punch in the gut!”

OK, so I’m us­ing hy­per­bole. A bet­ter anal­ogy would be death by a thou­sand tiny cuts. Here is my per­sonal list of the most an­noy­ing of the cuts, in no par­tic­u­lar or­der.

Tabs

Attention mak­ers of pro­grams with tabs: all I want to do with tabs is move them left and right. I don’t want to pull them out and snap them in­side the pro­gram win­dow à la Windows 8. I don’t want them to float in front of the pro­gram win­dow. And I cer­tainly don’t want to only be able to move my tabs to the far right of the tab well, Oracle.

Copy/paste

Normally you can copy/​paste a field from a table with­out prob­lems. However, some­times, for no ap­par­ent rea­son, in­stead of copy­ing the con­tents of the field, the field will go into edit mode with­out plac­ing the con­tents onto the clip­board.

Collapsing pro­ce­dures

One of my fa­vorite Visual Studio key­board short­cuts is Ctrl + M, O, which col­lapses meth­ods so you can browse method de­f­i­n­i­tions. SQL Developer kind of sup­ports this; there’s no key­board short­cut but you can right-click the gut­ter and se­lect Collapse pro­ce­dure de­c­la­ra­tions/​bod­ies”. Unfortunately, col­lapsed pro­ce­dures will not stay col­lapsed for long; they’ll ex­pand if you copy/​paste into the pack­age. Or if you ex­pand other pro­ce­dures nearby. Or some­times if you just hit the re­turn key. Or if it’s rain­ing on a Tuesday.

Search

When I’m search­ing in a pack­age header, I of­ten want to search for the same thing in the pack­age body. The search bar should do a global search, not just the cur­rent file.

Undo func­tion

When you com­pile a pack­age header, your undo his­tory is deleted. Why does SQL Developer as­sume I would never want to undo code that I’ve just com­piled? Also, the undo his­tory is very lim­ited; I es­ti­mate the last 50 changes.

Ctrl + click

If you hold Ctrl and click on a func­tion name in a pack­age header, it will take you to the func­tion body in the pack­age body. Except when it does­n’t. There are some pack­ages it just never works for. Sometimes it works”; it takes me to the pack­age body, but nowhere near the body of the func­tion I clicked on. Even when work­ing cor­rectly, the nav­i­gated-to func­tion is at the very bot­tom of the screen. Why can’t it be in the mid­dle of the page, like when I search for the func­tion name?

Table scrolling GUI

If you scroll through the con­tents of a table, switch tabs, then come back, you will be at the top of the re­sults in­stead of where you had scrolled to.

Error log win­dow

When you dou­ble-click on a pack­age com­pi­la­tion er­ror in the er­ror log win­dow, of­ten it will bring up the line of code at the bot­tom of the work­sheet…un­der­neath the er­ror log win­dow. This is un­avoid­able if the code is on the last line of the pack­age, but I’ve also no­ticed it for func­tions right in the mid­dle of the file.

Font Choice

I like to be able to cus­tomize the font for pro­grams, and in SQL Developer you can change the font used for the SQL ed­i­tor and table data. I like to use a mono­space font for code edit­ing (Source Code Pro is my cur­rent fa­vorite.). However, when you edit data with the table GUI, SQL Developer al­ways uses a pro­por­tional font. This is the op­po­site of font best prac­tices: edit­ing text in a mono­space font is much eas­ier. Proportional fonts are eas­ier to read, so you would ex­pect to find these used for dis­play text, not for edit­ing text.

Table fil­ter au­to­com­plete

If you start typ­ing a col­umn name into the table fil­ter box and then ac­cept the au­to­com­plete, the col­umn name will be put in place of what you have typed. Good. However, if you fin­ish typ­ing the name of the col­umn and you ac­cept the au­to­com­plete (which still pops up even af­ter you’ve typed a valid col­umn), what you have typed will re­main and the au­to­com­plete will be tacked on to the end. Not good. For ex­am­ple, if I type tableid = and the au­to­com­plete of­fers tableid = 123”, when I ac­cept the au­to­com­plete I end up with tableid = tableid = 123”.

Code tem­plates

Code tem­plates are SQL Developer’s brand of text ex­pan­sion. My main an­noy­ance with them is that they don’t work in stored PL/SQL win­dows, only in work­sheets. Since most of my time is spent in pack­ages, I was never able to rely on this fea­ture. However, this does­n’t re­ally bother me any­more, be­cause I now use Breevy, which works every­where. Highly rec­om­mended.

Lack of col­umn mode

Nowadays I con­sider this a must-have text ed­i­tor fea­ture. Visual Studio and Notepad++ have a ba­sic sup­port of the fea­ture, al­though nei­ther com­pares to Sublime Text’s su­perb col­umn mode. Even Geany has a col­umn mode. Why does­n’t SQL Developer have col­umn mode?

In the end, SQL Developer does the job, and per­haps these points are all quib­bles. I still think that there’s no rea­son that a seven-year old pro­gram (albeit a free pro­gram) should have so many us­abil­ity prob­lems.