In software development, effective communication through well-formulated questions is a fundamental skill. Eric Raymond’s essay, How to Ask Questions the Smart Way, guides us poor “lusers,” as he states, in methods to ask smart questions. This technical essay will focus on the nuances of two distinct questions posted on StackOverflow, one exemplifying the smart way and the other falling short, and the type of answers or “no answers” they may receive.
“I am new to Django and I am doing a Django tutorial project to create a portfolio. When I first started doing the project, my Django project was able to run the browser correctly and display ‘Hello World’. However, after adding new lines of code to my project, I still only see ‘Hello World’ which is my first project run. How can I fix this issue on VSC to show the result of my new line of code? I’m not sure what the issue is.
I tried running ‘python manage.py runserver’ or ‘python manage.py migrate,’ but, it still only shows ‘Hello World’. With the code I added from the tutorial, I was supposed to see a display of ‘first project’, ‘second project’, and ‘third project’.”
Reference: StackOverflow, Django Tutorial Project
The not-so-smart question, initially presented, exemplifies common pitfalls when seeking help. The author provides a detailed narrative of their issue with a Django project but needs more specificity. The question needs clarity, concise details, and a well-defined problem statement. The absence of code snippets or error messages hampers the ability to pinpoint the issue accurately.
The user’s attempt to resolve the problem is vaguely outlined, with generic attempts to run server commands. The lack of a focused inquiry and clear information makes offering precise and effective solutions challenging. Additionally, the question hints at a possible misunderstanding of the “tutorial,” adding an extra layer of ambiguity since it forces the person answering to click the link and find what he is talking about.
“The three dotted items are a <ul>
tag. Each time an <li>
item is clicked, the app navigates to a route using the routerLink
appending a query string (/bands
, /bands?active=false
, and /bands?active=true
).
The part of the web page starting at ‘Bands’ (belonging to the component called ‘band-list’) is the content the router-outlet
displays according to the route. The grid below is loaded according to the query param ‘active’. Then, each time an <li>
item is clicked, the grid reloads.
Also, the ‘Refresh data’ button reloads the grid.
I’m trying to implement, using reactive programming, the following logic:
At initialization, the ‘band-list’ component…”
Reference: StackOverflow, Angular Component in a Reactive Way
In stark contrast, the smart question reveals a developer well-versed in asking questions. The inquiry is structured and concise and presents a clear scenario involving Angular, reactive programming, and the implementation of specific functionalities. The developer articulates their current understanding, making it easier for the community to grasp the context and provide informed assistance.
Including detailed information, such as the logic the developer is attempting to implement and their concerns about reactive programming operators, showcases a proactive approach to problem-solving. The question is not just about seeking a solution but reflects a genuine effort to understand and apply best practices. Code snippets and thoughtful analysis of the attempted solution further demonstrate the developer’s commitment to effective communication.
The not-so-smart question highlights the importance of clarity, specificity, and concise details when seeking assistance. On the other hand, the smart question underscores the significance of providing context, articulating the problem clearly, and demonstrating a proactive attitude toward problem-solving.
In conclusion, asking questions smartly is a skill for any software engineer and has to be developed. The position of the not-so-smart and smart questions from StackOverflow emphasizes the impact of clear communication on the quality of assistance received. By principles outlined by Eric Raymond, developers can enhance their ability to seek help effectively, contribute positively to the community, and ultimately accelerate their growth in the ever-evolving field of software development.
References: