Tuesday, 30 December 2014

10 Rules to Build English Communication Skills For Developers

Abstract

Today's world is about distributed teams across the globe. A team member sitting in the Indian Silicon Valley or a software company of the financial capital of India might be reporting to a manager sitting in Microsoft Headquarters in Redmond, Washington (a suburb of Seattle, Washington, USA). This is almost as if you have travelled around the world. Hence, long-distance communication has become prominent over the last couple of years.

How it matters
But I am technically strong, so how does it matter to me?

Well, if you are really interested in moving up the career ladder then communication is the key. For instance, if you want to be promoted to be a Tech/Team Lead then good communication skills will help in the longer run.

Good communication demonstrates good leadership skills and so helps you to pave the road to new roles and responsibilities. Would you like to send a software architect to a client or listen to him on the phone when he can barely communicate; would you like to work with a team/tech lead or on-site coordinator that can barely explain what the client wants? I am sure not.

Why English has become so important
Do I really need to explain that? If you are reading this article of mine, then you are in the same boat as I am. In other words, the software development field. English is a global language to communicate with anyone whom you don't know how to connect with. Besides, if you are planning to travel, work abroad, deal with higher management in your company and pave your road in a highly competitive society then a good command of English is like “Cherry on the Cake".

Many deserving candidates are rejected every year for a USA visa (H1B, L1B even studying abroad) in their interview because they can hardly communicate well and can't impress the consulate person who is interviewing the candidate.

Consider that, even for technical interviews, how to express that you are a good candidate and understand the technology. That time is gone when you can cram for the questions and spit them out to the interviewer. The trend of interviews have changed. For instance, now people don't really ask the difference between “Abstract class and Interfaces”. Instead they will ask you a scenario where you choose to implement an interface instead of an abstract class or vice versa. Even, based on your project description they drag you into a totally un-imagined situation and ask for your views. Such just-in-time situations and scenarios are hard to cram for, or even prepare for. So you end up sharing your thoughts or thought processes during the interview. Do you feel little sweating in your palms or forehead?

Techniques to develop good English communication skills
So what's the technique to have good English communication skills?

The following is the Rule of Thumb as it appplies to those candidates whose Mother Tongue or Native language is not English, just like me.

Don't panic about or fear English communication; rather work on it. I can share how I (a small town's boy of Hindi medium from northern India) made it possible.

Rule #1: Focus on learning English grammar to strengthen the fundamentals. If there is a need to improvise your English grammar then work on it for some time and the remaining can be learned by listening and speaking with others. Here is a good E-Book to strengthen the fundamentals from the basics to the extreme expert level.

Rule #2: Don't focus on accent (American, British and so on) immediately; instead focus on grammar for the correct usage or words and accurate sentence formation. Accent will come automatically later when you work with people across the globe and have developed a good grasp of the language.

Rule #3: Your skills building, in other words learning, must be by using English only. For instance, I see some people prefer to learn technology in their native language. I don't understand how learning .NET or any other topic will help you better in your native language, because most of the terms are English only; C#, CLR, Framework, Language, Compile, Code, Debug and so on. So why to worry so much for some of the plumbing or the gluing together of words in the middle to make sentences.

For example, if I need to learn what is .NET then what is it you won't understand in: “.NET is a platform and framework that allows you to build applications using many .NET compliant programming languages and even deploy and run those on many non-Microsoft platform OSs”.

I am totally against the reading of novels and so on to build an English vocabulary. Instead start a book of your choice on MVC, .NET, C#, ASP.NET, WCF and so on cover to cover. Yes, cover to cover; you read that right, from the About the Author to About the Technical Reviewer to the Acknowledgement, Dedication and so on and the chapters of your choice. I guarantee that the first few sections has much to teach you about general-purpose English communication. So your time is better invested into building your skills with books of your areas instead of reading a 1000 pages fiction novel like Harry Potter, especially for this cause.

However; if you wish to read a book other than for your technical benefits then reach out to me, I can guide you to some good books that might be helpful in various ways.

Rule #4: Listening is very important. When I was in college I heard people saying that listening to English songs will help you to learn English; well to be honest I never found time to double up my efforts to listen to English songs and then learn my study topics in English. By the way, I also don't recommend listening to English music and trying to read English material at the same time; it could turn out to be pretty messy, especially at the beginner level.

So listen to some of your favorite speakers for the topic of your choice. Listening causes great learning, especially in terms of the usage of words, sentence formation, accent, pitch, pace, sound quality and so on. My YouTube channel MyPassionForDotNet has a couple of videos from 10 minutes in length to 2+ hour long sessions.

In your free time, even listen to the people in your office, market, shops, conference calls, elevators, parking and so on.

Rule #5: No slang language; say “Yes”. I have often seen people saying “yeah” “bro”, “You know after each line”, “cool” and many more terms. Well, I suggest always say “Yes”; believe me this has an impact on your way of building skills. When you are good with English communication then an occasional use of yeah is OK. Basically, this puts you into a habit of strictly respecting the core of the language and also teaching your tongue what to utter, which is very important.

Rule #6: Hang out with the right people. If you know someone that can help you to polish your communication skills then find such people if possible. Well, I was not able to find any because I grew with people like me but time has changed. I am sure you might have someone around you.

Rule #7: Think big, start small. If you are in a discussion then start whatever you can using English and see how far you can go. Anyways, in our native land we speak in a mixed mode (some English and some native language) so instead you should focus on speaking only the English part and as precisely as possible.

Rule #8: Go slow. I have observed many people think that good English communication is all about speaking fast. Actually, that's a myth. I have earned a large amount of my professional experience working outside of India with people from various English speaking continents. One thing I have found common in all of them is that they speak slow, soft and clear.

Rule #9: Pronunciation, when speaking no matter what language you are using, the way to utter a word is very important. It becomes very important when you speak in English. Here is a great pronunciation tool to help you learn how a specific word is pronounced.

Some examples; I would like you to try and see what you thought was and actually how these must be pronounced. For example Scythe, calcium, pronunciation.

Rule #10: Get away from your native way of pronunciation. Our native place (town, city, country) has a huge impact on how we learn how to pronounce a word; many times we continue to speak the same way, but with an associated cost with that approach. If you have been speaking incorrectly then it can take a while to practice speaking it right.

For example, most of the Indian people, even Doctors, pronounce Calcium as “Cal-Shi-um” but actually there is no “Sh” sound in it. It's just a very small example of how our native culture has an impact on our way of speaking. Many people have the tendency to add the sound of other letters when speaking something. Try again how most of the people say “Pronunciation” and compare that with the tool I referred to in Rule #9.

Such issues can be fixed with caution, awareness and practice. There is nothing a human mind can't conquer or achieve.

So let's summarize the rules:
  • Rule #1- Learn grammar for better English communication.
  • Rule #2: Don't focus on Accent immediately
  • Rule #3: Learn technology in English only; strictly books, audio, video and so on
  • Rule #4: Listening results in great learning.
  • Rule #5: No slang, use words that reflect a respect of the language.
  • Rule #6: Right company, connect with people who speak good English.
  • Rule #7: Think big, start small.
  • Rule #8: Speak slowly but steadily and you will win the race.
  • Rule #9: Pronounce correctly; this is impressive in its own way.
  • Rule #10: Go global; to some extent, get away from your native tongue and pronunciation.

Enjoy with work....

Create Data Script in SQL server

Right-click the database , select "Tasks", "Generate Scripts...". As you work through, you'll get to a "Scripting Options" section. Click on "Advanced", and in the list that pops up, where it says "Types of data to script", you've got the option to select Data and/or Schema.
Screen shot of Advanced Scripting Options

Saturday, 27 December 2014

Error Handling In ASP.NET

 Add in web config use statuscode for redirect to another page when error/exception

occur on page.

 
 
<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404"/>
    <remove statusCode="500"/>
    <error statusCode="404" responseMode="ExecuteURL"
    path="/Pages/Public/Error404.aspx"/>
    <error statusCode="500" responseMode="ExecuteURL"
    path="/Pages/Public/Error500.aspx"/>
  </httpErrors>
</system.webServer>
 
 
NOTE : And Other method i think u know like try catch method... 

Error handling in ASP.Net

Error handling in ASP.Net has three aspects:
  • Tracing - tracing the program execution at page level or application level.
  • Error handling - handling standard errors or custom errors at page level or application level
  • Debugging - stepping through the program, setting break points to analyze the code
In this tutorial, we are going to discuss tracing and error handling and we will look into debugging in the next tutorial.
To understand the concepts, create the following sample application. It has a label control, a dropdown list and a link. The dropdown list loads an array list of famous quotes and the selected quote is shown in the label below. It also has a hyperlink which has a nonexistent link.
<%@ Page Language="C#" 
         AutoEventWireup="true" 
         CodeBehind="Default.aspx.cs" 
         Inherits="errorhandling._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Tracing, debugging and error handling</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblheading" runat="server" 
            Text="Tracing, Debuggin and Error Handling">
        </asp:Label>
        <br />
        <br />
        <asp:DropDownList ID="ddlquotes" 
        runat="server" AutoPostBack="True" 
        onselectedindexchanged="ddlquotes_SelectedIndexChanged">
        </asp:DropDownList>
        <br />
        <br />
        <asp:Label ID="lblquotes" runat="server">
        </asp:Label>
        <br />
        <br />
        <asp:HyperLink ID="HyperLink1" runat="server" 
        NavigateUrl="mylink.htm">Link to:</asp:HyperLink>
    </div>
    </form>
</body>
</html>
The code behind file:
public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
      if (!IsPostBack)
      {
         string[,] quotes = 
        {
        {"Imagination is more important than Knowledge.", 
         "Albert Einsten"},
        {"Assume a virtue, if you have it not",
         "Shakespeare"},
        {"A man cannot be comfortable without his own 
         approval", "Mark Twain"},
        {"Beware the young doctor and the old barber",
         "Benjamin Franklin"},
       {"Whatever begun in anger ends in shame",
         "Benjamin Franklin"}
     };
     for (int i=0; i<quotes.GetLength(0); i++)
        ddlquotes.Items.Add(new ListItem(quotes[i,0], 
        quotes[i,1]));
     }
   }
   protected void ddlquotes_SelectedIndexChanged(object sender, 
                                                 EventArgs e)
   {
     if (ddlquotes.SelectedIndex != -1)
     {
       lblquotes.Text = String.Format("{0}, Quote: {1}", 
          ddlquotes.SelectedItem.Text, ddlquotes.SelectedValue);
     }
   }
}

Tracing:

To enable page level tracing, you need to modify the Page directive and add a Trace attribute as:
<%@ Page Language="C#" AutoEventWireup="true" 
            CodeBehind="Default.aspx.cs"
            Inherits="errorhandling._Default"
            Trace ="true" %>
Now when you run the file, you get the tracing information:
Tracing Info
It provides the following information at the top:
  • Session ID
  • Status Code
  • Time of Request
  • Type of Request
  • Request and Response Encoding
The status code sent from the server, each time the page is requested shows the name and time of error if any. The following table shows the common HTTP status codes :
NumberDescription
Informational 100199
100Continue
101Switching protocols
Successful 200299
200OK
204No content
Redirection 300399
301Moved permanently
305Use proxy
307Temporary redirect
Client Errors 400499
400Bad request
402Payment required
404Not found
408Request timeout
417Expectation failed
Server Errors 500599
500Internal server error
503Service unavailable
505HTTP version not supported
Under the top level information is the Trace log, which provides details of page life cycle. It provides elapsed time in seconds since the page was initialized.
Tracing Info2
The next section is control tree, which lists all controls on the page in a hierarchical manner:
Tracing Info3
Last in the Session and Application state summaries, cookies and headers collections, followed by list of all server variables.
The Trace object allows you to add custom information to the trace output. It has two methods to accomplish this: the Write method and the Warn method.
Change the Page_Load event handler to check the Write method:
protected void Page_Load(object sender, EventArgs e)
{
   Trace.Write("Page Load");
   if (!IsPostBack)
   {
      Trace.Write("Not Post Back, Page Load");
      string[,] quotes = 
.......................
Run to observe the effects:
Tracing Info4
To check the Warn method, let us forcibly enter some erroneous code in the selected index changed event handler:
try
{
   int a = 0;
   int b = 9 / a;
}
catch (Exception e)
{
   Trace.Warn("UserAction", "processing 9/a", e);
}
Try-Catch is a C# programming construct. The try block holds any code that may or may not produce error and the catch block catches the error. When the program is run, it sends the warning in the trace log.
Tracing Info5
Application level tracing applies to all the pages in the web site. It is implemented by putting the following code lines in the web.config file:
<system.web>
<trace enabled="true" />
</system.web>

Error Handling:

Although ASP.Net can detect all runtime errors, still some subtle errors may still be there. Observing the errors by tracing is meant for the developers, not for the users.
Hence, to intercept such occurrence, you can add error handing settings in the web.config file of the application. It is application wide error handling. For example, you can add the following lines in the web.config file:
<configuration>
 <system.web>
 <customErrors mode="RemoteOnly"
  defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
</system.web>
<configuration>
The <customErrors> section has the possible attributes:
  • Mode: It enables or disables custom error pages. It has the three possible values:
    • On: displays the custom pages.
    • Off: displays ASP.Net error pages yellowpages
    • remoteOnly: displays custom errors to client, display ASP.Net errors locally
  • defaultRedirect: It contains the URL of the page to be displayed in case of unhandled errors.
To put different custom error pages for different type of errors, the <error> sub tags are used, where different error pages are specified, based of the status code of the errors.
To implement page level error handling, the Page directive could be modified:
<%@ Page Language="C#" AutoEventWireup="true" 
            CodeBehind="Default.aspx.cs"
            Inherits="errorhandling._Default"
            Trace ="true" 
            ErrorPage="PageError.htm" %>

Wednesday, 24 December 2014

Top 10 Things Every Developer MUST Do

1. Missing Documentation
I have seen developers do not like to write documentation. Obviously, there are tight deadlines and frequent deliverable but it does not take too much time to write about the functionality you are implementing. If you spend 1 hour for every 7 hours of code you write, it will go a long way and eventually will save you a lot more time.

OK, let's try to understand this with an example.

So here is some sample code. As you can see from this method called MessySample, I create two ArrayList objects and add some integer and string values to them and display the contents on the console.
private void MessySample()
{
    ArrayList obj = new ArrayList();
    obj.Add(32);
    obj.Add(21);
    obj.Add(45);
    obj.Add(11);
    obj.Add(89);
    ArrayList obj2 = new ArrayList();
    obj2.Add("Mahesh Chand");
    obj2.Add("Praveen Kumar");
    obj2.Add("Raj Kumar");
    obj2.Add("Dinesh Beniwal");
    int bs = obj2.BinarySearch("Raj Kumar");
    Console.WriteLine(bs);
    foreach (object o in obj2)
    {
        Console.WriteLine(o);
    }
}

Nothing wrong with this code. Right? WRONG!  
Problem with this code is, if I end up using these ArrayList objects somewhere else or some other programmers read this code, they have no clue what obj and obj2 are, unless the go through the code line by line. I also do not know what this method really does and where can it be used.
OK let's spend 2 minutes on this above sample code and apply some comments as shown in the sample code below. As you can see from this sample code, now if anybody reads this code, they will exactly know what this code will do. Only thing you did is, just added some comments to the code.
/// <summary>
/// This is a MessySample method that shows how we can write messy code
/// </summary>
private void MessySample()
{
    // Create an ArrayList object to store integer items
    ArrayList obj = new ArrayList();
    obj.Add(32);
    obj.Add(21);
    obj.Add(45);
    obj.Add(11);
    obj.Add(89);
    // Create an ArrayList object to store string items
    ArrayList obj2 = new ArrayList();
    obj2.Add("Mahesh Chand");
    obj2.Add("Praveen Kumar");
    obj2.Add("Raj Kumar");
    obj2.Add("Dinesh Beniwal");
    // Apply binary search
    int bs = obj2.BinarySearch("Raj Kumar");
    // Display index on the console
    Console.WriteLine(bs);
    // Send ArrayList items to the console
    foreach (object o in obj2)
    {
        Console.WriteLine(o);
    }
}

2. Messy Code
Keep it clean brother. Don't be messy. Writing code is an art. Make it cleaner. Make it pretty. Format it. This part is more about focusing on naming conventions and proper representation of your methods, properties, and variables.

So here is my original sample code. As you can see from this method called MessySample, I create two ArrayList objects and add some integer and string values to them and display the contents on the console.
private void MessySample()
{
    ArrayList obj = new ArrayList();
    obj.Add(32);
    obj.Add(21);
    obj.Add(45);
    obj.Add(11);
    obj.Add(89);
    ArrayList obj2 = new ArrayList();
    obj2.Add("Mahesh Chand");
    obj2.Add("Praveen Kumar");
    obj2.Add("Raj Kumar");
    obj2.Add("Dinesh Beniwal");
 
    int bs = obj2.BinarySearch("Raj Kumar");
    Console.WriteLine(bs);
 
    foreach (object o in obj2)
    {
        Console.WriteLine(o);
    }
}

With additional comments and giving proper names of variables, my new code looks like this. As you can see from this code, even reading my variable names such as authorsArray makes sense and tells me, it's an array of authors.
/// <summary>
/// This method is a clean sample that shows how to write
/// clean code.
/// </summary>
private void CleanSample()
{
    // Dynamic ArrayList with no size limit
    ArrayList numberList = new ArrayList();
    // Add 5 Integer Items to ArrayList
    numberList.Add(32);
    numberList.Add(21);
    numberList.Add(45);
    numberList.Add(11);
    numberList.Add(89);
 
    // Create Authors Array List to store authors
    ArrayList authorsArray = new ArrayList();
    // Add Author names
    authorsArray.Add("Mahesh Chand");
    authorsArray.Add("Praveen Kumar");
    authorsArray.Add("Raj Kumar");
    authorsArray.Add("Dinesh Beniwal");
 
    // Display and apply binary search
    Console.WriteLine("====== Binary Search ArrayList ============");
    int bs = authorsArray.BinarySearch("Raj Kumar");
    Console.WriteLine(bs);
 
    // Display authors to the console
    foreach (object author in authorsArray)
    {
        Console.WriteLine(author);
    }
}


3. Copy but with Love
You can't avoid copying code from sites like C# Corner or MSDN but you certainly can verify the code and get into it. Copy code but understand it. Dig it. Before you copy the code, understand it, change it, format it and then verify it before locking it down.

4. Think outside of box
If you are involved in a project that was already developed by some other developers do not just follow what other developers have written. Before you follow same steps, think if prior code was implemented is the right way to do it. I may have shared some code on C# Corner but that does not mean I have written the most efficient code. You may come up with better ideas.

5. Testing! Testing! Testing
This is one of the areas where I find most of developers rushing to deliver their code but do not through test it. This I have seen over and over when a new functionality is added to a project, there may be chances that code may have affected other areas. You as a developer need to test all areas are tested well before it is given to your Integration Manager or deployed on the Test server. 

6. Debug! Don't Guess
Don't trust yourself. Don't guess what your code would do unless you have already used that code before. Always debug the code before even running it. When I write a piece of code first time, I go line by line, add my debug variables and use debugger to step through line by line and variable by variable to see if values of these variables are passing my tests. You can avoid this if you use #7.

7. Write Test Cases
Visual Studio 2010 comes with a very powerful tool to write test cases for your project. Use it. You can also use third-party open source products such as Nunit.

8. One thing at a time
I have seen some programmers will write code for one week straight and then do the testing. Write code based on a smaller unit of functionality and test it before you move to the next functionality.

9. Think Modular
You can keep writing 1000s of lines of code in a single file but think modular. Think how you can break down your 1000s lines of code in few reusable classes and methods.

10. Do Not Trust Your Testing Team
Do not rely on your testing team and thinking like they will find all the bugs. You are the one who knows code and functionality more than anybody else. You test it and than hand over to the testing team.

12. Good Team Player
You must be a good team player. It does not matter how smart or expert you are, if you are not helping your team, not sharing with others, you will not be liked by the CIO or CTO. Personally, I would rather have less smart developer who is a good team player than otherwise.


13. Ask Questions. Ask again and again
Some developers (I was same in my early career) think asking questions to a client or manager will make them look bad or less experience. This is not true at all. I would rather explain same thing 4 times than get something that is not right. So keep bugging your requirement guy unless requirements are not clear.


14. Be Ahead. Give 110%
This is from my personal experienced. I was balled the "crack programmer", "coder on crack" and other names for solving problems instantly. Most of the times, I got requirements, they were done before the deadlines. So when my manager would come ask, is that feature done. My answer would be, "yes it is live already.". 

There are three ways to work.

1. Do what you were told to do.
2. Do less what you were told to do and still working on it.
3. Do more than what you were told to do.

Do not assume that your boss knows more than you. He/She may know more than you but it does not mean that you cannot give your ideas or suggestions. You may have better ideas. Even if they are not, it does not harm to open up and let him/her know.


15. Me, Myself, and I and whatever else
This is from my personal experience and it had happened twice. I was working on these projects where I was doing pretty much everything and knew all the ins and outs of the products and I though, Jeez, I don't think this project or even the company would survive without me. So I started talking to management and start negotiating. There is no harm in negotiating but it should be the right moment and right way. So I left that project but project still went on. Company still went on. I learned my lesson.

Top 10 Things You May Not Say To Your Boss

  1. That’s not part of my job
  2. I don’t know
  3. How do I benefit from this
  4. Well, I did my best
  5. I’ll leave
  6. I just assumed that…
  7. At my last job we did it this way
  8. I don’t have a solution
  9. I can’t
  10. I am amazing 
Being a developer is not an easy task these days. Every client is looking for quicker turnaround. Here is one of my.
When you don’t deliver a solution on time, there will be times when you would want to say one or more of these phrases to your boss. I’ve been a developer for my whole life. I’ve been there. I’ve done that. But in no way, you should be using any of the above listed phrases.
Note: This article assumes that you're working on a software project. You're a part of one of my team. If you tell me one of these lines, what I am thinking in my head :). Some points may apply outside of the project development.
Remember, the success of a company, or a project, or a team depends on the performance of the entire team, not just one member.
 
Team work wins 
OK here is my personal interpretation of these phrases and what answer should you give. So be careful when you talk to your boss.
That’s not part of my job
What you’re telling me is that you’re not a team player. You also don’t want to take any responsibilities. You’re also looking for easy way out. A company is a group of people working together to achieve a common goal and you being a team player will not help it.
You should never use this language. If there was something out of your scope, you can easily say, I’ve been busy dealing with this problem and did not get a chance to look into yet. But I am on it. It’s in my high priority to do list.

A team win is more important than a personal century.
Software development is a team project and the goal is to get the job done. Does it matter if Sachin hits a century but India loses the match? To Sachin, it may matter. But to India? Probably not. Your goal should be to win the match, not a personal century.
I’ll leave
Ahh .. You never want to say this.
This is telling me that you’ve no interest being with the company and the project. I will fire you right away.
I was a developer once. When I started my first job, within 6-month of my career, I started managing this project and I started thinking, this project can’t survive without me. I went to my boss and put this one condition and he told me to leave. Trust me. Project will still be there. Only it will be you who will be replaced.

He is just not into you.
In my company I’ve seen couple of guys who have said this. This is a direct challenge and threat to your boss. You’re also challenging his authority. Unless you really want to leave, you do not want to say this. Your boss may agree with you for time being but in his head, he is probably looking for your replacement.
 I don’t know
If you really don’t know something, you say nicely that you’ve not had a chance to look into it yet and you’re going to look at first thing you get a chance.
How do I benefit from this
This is telling me that you’re a selfish person and looking for your interest only. I would not want you in my company. A company is more than an individual, you.

My precious.
Well, I did my best
And? And what happened? This is telling me, you gave up.

You can’t just give up.
You can’t just give up. If you need more time, ask for it. If you need more resources, ask for it.
I just assumed that…
In my early career, one day my boss walked into my office and ask me for something. My reply started with, “I assumed….”. He
ASSUME = ASS + U + ME
That was the last day of my career, I used “I assumed..” in my phrases.
At my last job we did it this way
If you really want to piss your boss off, that’s how you start. No boss want to hear what and how did you do things at your last job.

Don’t talk about your past jobs.
I don’t have a solution
There will be times when you really don’t have a solution but you don’t need to announce it. If you really can’t solve something, you better bring a valid reason for it and explain it in a reasonable matter to your boss.
The best way you can deal with this is, I am still working on it and will continue to do so until I figure something out.
I can’t
It tells me, you’ve already given up. Just don’t give up. Keep trying and your response should be. I am working on it.
I am amazing
OK, so you’re a rock star but it doesn’t mean you have to announce it.

Want more?