Skip to content
Notifications
Clear all

Unpopular opinion: Q makes junior devs too reliant on autocomplete.

3 Posts
3 Users
0 Reactions
0 Views
(@benchmark_bob_43)
Estimable Member
Joined: 3 months ago
Posts: 90
Topic starter   [#9556]

Alright, let's get the hot takes flowing. I've been running Q Developer through its paces for the last few weeks, not just on toy projects but integrating it into a real (if small) cloud-deployed service. My conclusion? It's actively creating a generation of devs who can't think past the next suggested line.

The autocomplete isn't just goodβ€”it's *aggressively* predictive. It doesn't just finish your variable name; it suggests entire blocks of logic, error handling, and API calls. The problem? Juniors are accepting these without understanding the *why* or the *trade-offs*. I've seen:

* A junior implement a Q-suggested DynamoDB query pattern that was perfect for the example but had no thought to cost (SCAN operations, anyone? 😬).
* Blindly accepted boto3 error handling that caught `Exception` and just logged it, swallowing critical failures.
* Complex list comprehensions generated that were unreadable and unmaintainable, but "they worked."

It's like giving someone a race car who's only driven a golf cart. They'll get somewhere fast, but they have no instinct for why the tires are smoking or how to correct a skid.

Here's a trivial but telling example. They start typing a simple filter:

```python
# User starts typing:
filtered_data = [item for item in data if item.get('status') == 'ACTIVE']

# Q might aggressively suggest this whole, more "robust" block:
filtered_data = []
for item in data:
if isinstance(item, dict):
status = item.get('status')
if status is not None and status.upper() == 'ACTIVE':
filtered_data.append(item)
else:
logging.warning(f"Non-dict item in data: {item}")
```

Is it more "production-ready"? Maybe. But the junior didn't *decide* that. They didn't weigh readability vs. robustness. They just hit `Tab`. Now they think that's the "correct" way to write a filter. The learning feedback loop is broken.

The tool benchmarks well on completion accuracy, but we're not benchmarking the *developer's growth*. It's creating a dependency where the skill becomes "prompting the IDE" instead of understanding algorithms, data structures, or system design. The real cost isn't the subscription fee; it's the atrophied problem-solving muscles.

benchmarks or bust



   
Quote
(@hobbyist_hex)
Trusted Member
Joined: 1 week ago
Posts: 45
 

I see your point about the autocomplete hiding trade-offs. But isn't that more about how we review the code? I'm pretty new and I use Q, but I still have to explain my PRs to my team lead. If a suggested line is a black box, it gets caught then.

Your DynamoDB cost example is interesting. I wonder if the real problem is that juniors aren't getting the context about *why* a SCAN is bad. The tool gives the "how," but maybe we need more mentorship on the "when" and "why."

It just feels like blaming the calculator for a wrong answer, you know?



   
ReplyQuote
 annt
(@annt)
Estimable Member
Joined: 1 week ago
Posts: 71
 

I think you're right about the code review being a critical control point, but that assumes the team has both the bandwidth and the specific domain expertise to catch these things. In a fast-moving startup, a lead reviewing five PRs might miss the nuance of a suggested SCAN operation if they're focused on the broader feature logic.

Your point about missing context is the core of it. The tool provides a syntactically correct solution, but without the operational and business context - like cost, data sensitivity, or compliance requirements - that a human mentor would embed. It's not the calculator's fault, but if the only math you ever learn is from hitting the equals button on a calculator, you'll never develop the intuition to spot a nonsensical result. The tool accelerates output, but it can inadvertently decouple the developer from the underlying system constraints.


β€”at


   
ReplyQuote