Learning how to handle criticism and learn from criticism is an incredibly important step for everyone. As you progress your career and certainly as you progress through the management ranks, you are asked to handle more and more criticism in a positive way. It can be infuriating to get criticism after you put your heart and soul into planning a project, building a team or any number of other activities and tasks. You cannot please everyone, nor should you try. Learn five actions to turn even the harshest of criticism into useful digestible feedback that won't destroy your confidence. How great managers handle criticism comes down to looking for the learning points and creating actions, whether the criticism is justified or not, whether it is fair or not. Worry about what you can learn for each situation rather than if the criticism is fair. Get better at dealing with criticism at work by following these five actions for how to handle criticism. Firstly, listen carefully and acknowledge the criticism. Secondly, ask questions to get the specifics. Third, find the kernels of truth. Fourth, create an action plan. And then fifth, practice receiving feedback. Being in positions of responsibility exposes you to more criticism. It is an unavoidable part of the job.  I hope what we covered today will help you improve how you're dealing with criticism at work. My name is Jess Coles, and if you're new here, enhance.training shares people management expertise, resources and courses for you to manage your team with integrity and fairness and get outstanding results. I've included links to additional videos and resources in the description below as well as a video timestamp, so do take a look at these. And if you like this video, please give it a thumbs up and subscribe. The first action to handle criticism at work is to listen carefully and acknowledge the criticism. When being criticised, keeping your emotions under control is the first task. Counter criticising, being defensive, showing anger, annoyance, hurt and any other negative emotion doesn't help you in handling the criticism in the workplace. You mentally turn the, this is personal, response into a, this is a learning opportunity and listen to what is being said. Do your best to take in the messages and information without ignoring or challenging it. Then seek to understand what is being told to you. Don't interrupt, use your body language to encourage them to say everything they plan to. Keep good eye contact, keep your facial features positive and open, use little nods and lean forward in an attentive posture. Developing the habit or action of listening carefully with positive body language when being criticised is pretty key for managers and leaders. If you don't listen to your staff they will stop telling you anything useful. Then guess how effective you'll be. Be as encouraging as possible to the person giving you negative feedback or criticism. After the person has finished speaking, always thank them for sharing their feedback regardless of what you think of their feedback. The second action that great managers handling criticism take is to ask questions to get specifics. The majority of people give feedback in general terms. For example, I think your plan is rubbish or I can't see how this project is going to work or this piece of work has loads of mistakes. Great that they are voicing their concerns. To make the feedback useful to you understanding what exactly they don't like or disagree with is needed. Ask questions to get more depth. Ask questions to move the feedback from opinion led to factually led feedback. Then the criticism and negative feedback becomes useful to you. For the I think your plan is rubbish comment you could ask what exactly makes this plan rubbish? What steps need to be changed in your opinion? What limits this plan from working? For the I can't see how this project is going to work comment you could ask what do you think is stopping the project working? What parts of the plan do we need to change? What would you do instead? Keep asking clarification questions until you understand the specifics of the criticism and the why behind the criticism. Asking questions to learn more demonstrates you are listening and are interested in what they think good for any manager leading a team. The third action to handle criticism at work is to find the kernels of truth. A loss of criticism is individuals expressing their difference of opinion. There can be a huge range of reasons why they are criticising if for example they could feel threatened in some way or they might be afraid of looking silly if they need to learn something completely new or they may have spotted something really important that you've missed. You can learn a lot more than you think from criticism if you work to figure out what is behind the criticism. As a manager or leader of a team learning the cause of the criticism is gold dust when it gives you signposts towards what you need to fix to improve team performance. Don't receive criticism as a personal knock or a put down. Ask yourself why are team members or colleagues criticising? Keep asking questions until you understand what is behind the criticism. When you understand a problem you have a good chance of fixing it to the benefit of all. If you don't understand the problem the chances of fixing it are very small. Great managers look to remove problems and enable their teams to do the best work they can. Removing problems is a key way to leverage the efforts of your team members to produce great results. A manager that can get their team producing great results is going to be in demand and be asked to manage more people. Work to find the kernels of truth in the criticism. The fourth action that great managers handling criticism take is to create an action plan. There is no better response to criticism than taking action to address that criticism. For example, changes you are proposing are resulting in a criticism because a high performing team member feels their status is being threatened. You can invite them to take responsibility for an important high profile project as a way of reconfirming their status and keeping them engaged.  Another example, you are criticised for not dealing with a high performer that treats the rest of the team poorly. Take action to address the high performance behaviour towards the rest of the team. Your team will be impressed and love you for taking action. Another example, if your manager comments that they don't know what you're up to work out what KPIs you can provide and create a projects and activities summary and email it to them each week. Then book in one-on-one meetings with your manager to keep them up to date. Your manager will be impressed by your response to their comments and your proactivity. There will be times that criticism given is criticism to put you down or knock your confidence. The most important action is to recognise what drives the criticism say job insecurity and not let these types of comments impact the job that you're doing. Do the best you can to understand what is behind the criticism and do your best to take action to address the underlying reasons for the criticism. I've found that in 90% plus of the time that I've received criticism I can do something positive to change the situation. Create an action plan and take action so you are personally better off. The fifth action to handle criticism at work is to practice receiving feedback. There is definitely an art to receiving feedback, good or bad. Knowing what to do when receiving criticism helps massively. And practice receiving negative feedback allows you to gain control over your emotions and your responses when being criticised. I've found that when you can control your emotions and responses you can reframe the criticism into a learning opportunity much more quickly which in turn helps you deal with the criticism in a much more positive way. The more practice you have at managing your emotions and mindset in the face of criticism the quicker and better you'll become at dealing with criticism at work. Seek out feedback, ask for feedback and when you receive feedback, good or bad, always be grateful and be positive and thankful towards the person giving you the feedback. Taking this approach will encourage that person to continue giving you feedback. If you deny the feedback, don't take it in, don't understand it or worse be defensive or counter criticism with your criticism of your own the other person won't give you useful feedback in the future. While not getting any feedback may be easier to deal with no feedback will slow your growth and ability to manage teams and others effectively. Encourage others to give you feedback by asking for it and carefully managing your emotional reactions to that feedback. So in summary, learning how effectively does handle criticism makes the prospect of having to deal with criticism at work a lot more manageable. Remember that most of the time criticism is not directed at you personally but rather at your ideas, actions and decisions or the situation these create. Encouraging challenge and criticism from colleagues and team members when creating solutions to problems results in measurably better outcomes. As you progress through the management ranks learning how to deal with criticism constructively is a must. You cannot please everyone and nor should you try. Instead learn how to recognize criticism as a great learning opportunity to improve what you do and take action. The five key actions for how great managers handle criticism are firstly listen carefully and acknowledge the criticism secondly ask questions to get the specifics third find the kernels of truth fourth create an action plan and fifth practice receiving feedback. If you have any questions on how great managers handle criticism five key actions to take please leave them in the comment section below and I'll get back to you. And don't forget to take a look at the additional videos and resources in the description below. Thanks very much for watching and I look forward to speaking to you again soon.


Now, so far this is important so you better pay attention because we will not have sufficient time to solve many problems specifically in object oriented programming. Although there will have to be some questions in the ENSEM, so you should understand a little bit about objects in the context of programming. First, let me quickly describe what do we mean by objects in classes in a generic sense. Then we will look at the notion of properties of a class as we define in the context of object oriented programming which is what C++ is all about. I will in the process also distinguish between the classical procedure languages and the object oriented programming languages. We have not been using the object oriented features of C++ exclusively and that is because at the beginning it was important so as I was saying it was important for us to understand the conditional procedure programming for us and that is what we concentrated in most of the course. However, C++ is a true object oriented programming language and we must understand what exactly object orientation means independent from the procedure oriented programming. So we shall have a brief first look today and we will continue that tomorrow and in the last lecture. Then there will be some announcements regarding the submissions just as a reminder as well as some new information. So here is a general observation this was made not now but in the context of programming it was made many many years almost at the beginning of the programming except that the notion of looking at programming through an object oriented wing was not very fashionable in the early years. That was the time when people wrote programs in machine language or assembly language and the higher level languages were just coming of age. Most of the higher level programming languages concentrate on providing features for which you would ordinarily write programs in machine language and therefore straightforward computational procedures, conditional execution, iteration and some simple data structures and data types was effectively the focus of attention of all programming language designers. However, when people started looking at large programs they found out that the programming language became rather unwieldy and difficult and in order to make it manageable several paradigms were introduced. The first one was called structured programming where you structured your programming to different modules. Then came the notion of functions where you could create independent function libraries and which could be used by many other people as well. To this day all these features of course survived and they have become more and more important and crucial. However, a completely independent way of programming was introduced when people tried to relate programming to the general manner in which we view the world. Essentially the observation was that we view the world in terms of objects. The objects could be inanimate objects such as fish, person, student, a blood cell, dog, tiger, whatever. These are living organisms. They could be inanimate objects such as a light bulb or a phone or a car. They could also be abstract objects, astring, question, syllables. These are abstract objects. What is so big about looking at something as an object? First of all, all the objects which share similar attributes, they can be grouped together in a class. Each object by the way has a set of attributes and each object has a set of behavior. Behavior effectively means the functionality that the object exhibits. Like for example a fish can swim, a car can travel on a road, a string can contain name or address or any series of alphabets. A syllabus will contain topics to be covered in a course, etc. So these are attributes. A student for example would have a whole list of attributes. Each element is possible for any object to list out thousands of attributes. But what we do usually is we concentrate on those attributes of an object with which we are concerned. Not all attributes will be meaningful for the kind of activities that we envisage. And therefore we limit the number of attributes which describe an object. The point is when we read the word as a set of objects, the objects can be classified in terms of common attributes and common behavior. For example all light bulbs will have some powered wattage associated with it. All light bulbs will have a voltage specification. They will work at 12 volts, 9 volts, 220 volts, 110 volts, etc. etc. That could also be distinguished based on the filament that it has. But all light bulbs will share these attributes and therefore all light bulbs can be set to form a class. The behavior of light bulbs is simply described as we are concerned by the ability of switching on a light bulb or switching it off. So obviously we assume that the light bulb is connected to some electric power supply. And when we switch it on, the typical light bulb that we see, the filament gets hot and it emits light. That's the characteristics. So the behavior of a light bulb is very simple. It can either switch on or switch off. There could be more complex behavior that could be observed in other objects. But effectively all objects which have the same attributes and which exhibit the same functionality or same behavior are clubbed together as a single object class. And consequently we deal with the external world perpetually in terms of object classes and individual members of each class. From a programming perspective we will be looking mostly at abstract classes and the objects belonging to those abstract classes. But consider something which is well known to us. It's actually an alienate object. A student is a person. A student could be considered to have the following relevant attributes. Name, role, number, the program that the student is studying. The B.Tech, MSC, M.Tech, Ph.D. whatever. The current year in which the student is studying. The current semester in which the student is studying. The courses registered. This will be a list of courses. Hostile in which the student stays. The rule number in which the student stays. Hobbies of a student, height, weight, date of birth, fingerprint, photograph, SPI, CPR. And I'm sure you can list n number of additional attributes. Whatever, whatever. There could be 100 attributes that one could easily write if you consider a student as a person and therefore names of friends for example. You limit the number of attributes that you wish to describe in the context of programming languages or in the context of writing programs. You constrain the number of attributes to those which are relevant. For example, if you are considering the academic career of a student in IIT, many of these attributes will be valid but some will be irrelevant. For example, height and weight may have nothing to do with academic characteristics of a person. So you might want to limit it from the description of a student object using those attributes. On the other hand, if you are choosing an athletic team, then perhaps the list of hobbies, height, weight, date of birth, in case there is a qualification or a certain minimum age to participate, etc., those things will become important. There will be attributes which will be relevant in many applications. There will be some attributes which will be relevant only for specific applications. But essentially every student in the class of students will share all these attributes. The behaviour of the student is not being stated here in terms of social sense of a behaviour of a person. But we are talking about the ability of the object to change the values of some of the attributes. The entire behaviour, the state of a student or the state of an object is always represented by values of the attribute. For example, the state of light bulb is either switched off or switched off, as we have defined it here. And therefore anything else is irrelevant. But the attribute values which the light bulb will have could say a particular light bulb is 40 watt bulb, another light bulb is 25 watt bulb. Notice that while wattage is an attribute of a light bulb, there is no behaviour known by which the light bulb can change the wattage. Once the bulb is manufactured, the wattage will be fixed. It will be either 40 watts or 25 watt. You can't change it. So what you can change? You can change the status, whether it is switched off or not switched off. Similarly take a student. Once a student joins an institution, you cannot change the date of birth of the student, for example. In fact it cannot be changed after the child is born. But a student's CPI may change, a student's program may change, a year in which student is studying may change, student's hobbies may change. These changes are affected not necessarily by external entities. These changes are affected by the object, particularly object is like a student. And therefore we attribute the behaviour of an object to the ability of the object to change some of these attributes. These attributes will not change on its own. There will be some impetus, something happening in the external world which will trigger a change. For example, students acquire grades in various courses that the student is studying during a semester. As a result of which CPI gets modified or CPI gets computed for the first time. So there is an external stimulus which is causing things to change. But what changes is the attribute of an object. Now so far in the programming context, we have always been believing that when we write a program, the program changes things. We are of course capable of writing programs to change any data value that we use in our program. But when we look at the entire program components as a set of objects in terms of their attributes and behaviour, then we would like to believe that the objects that we define in our program are capable of changing themselves. And for such changes we shall provide functional programming which can, when executed, change that particular attribute. Like for example, changing CPI. CPI is an attribute of a student. So the student objects CPI will change for which we can provide a function. That function then becomes part and parcel of the object class called student. Because every student in that object class can have the CPI undergoing a change. The change will not happen on its own. It will be triggered by some external entity. Let's say academic office declaring a new CPI. In which case I will have to update the value of the attribute CPI for a student by the new value that comes in. The student has multiple attributes of which the academic office need not be concerned with. For example, when grades are to be awarded, academic office is least concerned about which hostel and which room a student lives in. Consequently it is possible that when an object interacts with other objects in life, each interaction will remain specific to certain behaviour that needs to be exchanged or behavioural information that needs to be exchanged between these two objects. All other information can remain buried inside the object itself. The most important aspect of object oriented programming is to consider that everything about an object class or everything about the individual attributes of an object or everything about the behaviour of every object in that object class need not necessarily be known outside that object class. What needs to be known however is that if something else in the world has to interact with that object, what exactly will be that interaction mechanism and if that mechanism is provided that is considered quite adequate. So here is the definition of a class. All objects which have same attributes and behaviour belong to a single class and all objects of the class share commonly defined attributes as also the methods through which they exhibit their behaviour. So their behaviour once again I will describe the behaviour we are talking about not in the social sense. A bell has no social behaviour but the bell has a behaviour of emitting light or keeping shut and there is a method that method is called switching it on. So if there is an external stimulus which switches on the bell, the bell will lit otherwise it will be dark. These two states are changed by an external interaction which is limited to somebody switching on or switching off a switch. The external entity which performs this action is actually sending a message to the bell. By switching it on you are telling the bell, please let the current pass through your filament, let it be heated and let light be emitted. But how exactly the current will pass? How exactly the light will be, the heat will be generated? All these things we need not at all worry about. The object knows what to do. And the important part therefore is that when objects interact with other objects either in the same class or other classes they interact through very specific messages. These messages define what is known as an interface. So at the interface the object understands what kind of message it is likely to receive and what kind of information it is required to give back. This is exactly what you do when you invoke a function. There is a function name which is like a message name and there are parameters. What exactly that function is supposed to do is known to the object but you get only these three parameters. How exactly you compute things using those three parameters and evaluate the function need not be known to the external agency at all. It just says these are the three parameters I am sending and you do whatever computations are required give me back a written value. That is a limited information that external entities need to have. Consequently implementation details of computations of functions can be hidden from rest of the world. And that is the most important thing that not all attributes and methods belonging to a particular class of objects need to be known to the external world. Only those which participate in interaction so which solicit desired functionality need to be known external and this permits hiding of information. Information hiding is an extremely important concept because if every piece of information in your program is required to be known to every other piece of information in your program and if your program is a million lines long then there will be chaos. Imagine the number of independent names themselves that you will have to sort of construct to give variable names, array names etc. Imagine the kind of functional behavior that will have to be written for maybe 5000 functions in your program, 10,000 functions in your program. So if you basically divide in room you say I have objects belonging to different classes, I have 100 classes. Each class has some private information and some public information. The public information is effectively the interface. How I implement that functionality of that particular object is entirely left to some other programmer who writes that function. A case in point would be sorting algorithm. If I want to sort an array of integers in ascending order I only need to know that a function called sort array for example is to be invoked to which I will pass a parameter and array pointer, an object. That is my normal way of functional definition. Instead what I will now say in the object oriented paradigm is an object called array exists somewhere as a class of arrays. It has been initialized by some methods, some marks have been or some integer values have been read into that array. Now I want that array to be sorted so that I can access that object using let's say binary search. What I will then do is I will invoke a member function of the class which I have defined that the array is an object and that member function can be invoked to say please get yourself sorted. Now if originally I have to worry about the details of sorting I will have to implement an algorithm called bubble sort or insertion sort or selections or whatever. There are 20 different kinds of sorts. We have seen one or two of them. The point here is if I am writing a larger program where I need to access a sorted array I need not worry about how that array will get sorted. That's an object and there could be a private implemented method to sort that array. The beauty is that once that method is written I can invoke it, get that array sorted. Tomorrow if a better efficient algorithm gets to be known and gets implemented for that class of objects I automatically get to use that as long as the interface is not changed. I still say Mr. R R object gets sorted and the way it gets sorted may depend upon the current implementation of the sorting algorithm. So this information hiding also permits anybody any programmer to change such hidden information from one particular functional implementation to another as long as the interface does not change the entire programming system remains intact. That's one of the great advantages of the notion of classes and objects. As an example I have chosen to give a class definition in C++ by defining a object which actually calculates and prints time in hours, minutes and seconds. Since now we are talking about object oriented programming we ought to know how exactly object classes are defined in C++. This is one way of defining an object class. So there is a time class. So I am defining class. So I have stored this definition into mytime.h a header fine and this class my time is the name of the class. So we define it exactly like we define a function and this would be equivalent of defining what we define as global let's say integer floating point variables, arrays etc etc you define a class. When you define a class like this it has public and private components. The private components are integer hour, integer minute, integer seconds. So you can see the comments indicate what exactly I wish to store. I wish to store the hours, minutes and seconds in a regular 24 hour format. We have seen this kind of thing earlier. Now you notice the public functions which are defined here. First is called mytime which is called the constructor of an object. Remember we are defining an object class. Individual objects don't exist and therefore individual variables as we understand them don't exist yet by this definition. So this definition only gives a template. All objects belonging to this type we have exactly the same properties, we have the same attributes, we have the same functions. The functions which are defined here wide set time, wide print standard these are called member functions. In fact in the case of files whenever you say my file dot open or my file dot something actually what you are doing is you are using, you are invoking a member function of the class of files. So when you invoke a member function the behavior as indicated by that member function will be executed and correspondingly any attribute values etc are to be changed or any output is to be created input has to be taken in etc will be handled. So that is the behavioral part. Notice the private part it says integer hour, integer minute, integer seconds. So these whenever I construct an object every object of the class my time will have three attributes, hour, minutes, seconds, every object. Now there could be a time at which you collected a fingerprint of a person. There could be a time at which a student went to let's say eat food. There could be a time at which a particular examination started. The time attribute in generic sense could be used by any and every activity that we undertake. So you might require several objects of this type or a class called type. Any object where it is instantiated no object exists originally only a class definition exists. In our program we create objects by constructing those objects and once the objects are created they automatically inherit all the methods that are associated with the class of objects. They also generate for themselves the attributes which are defined for every object in the class. So these are the object attributes hour, minute, second and these are the functions. Of course these functions were formed from sky. We are specifying roughly what we are specifying is something like a prototype for a function call. The actual functions will have to be written by us. So this is where we define public, private components and the class definitions mirrors in syntax exactly like a function definition does. But it does not end here. This is the beginning of the class definition and that is why it has been included in a header file. When I actually describe the class completely I will have to write many more things. So here are some things for example. So I might have include my time dot h. Then I have a constructor which initializes object to zero time. So this is the constructor definition. My time colon colon set time integer h m and s. So this is a particular set time function which is part of that object. Also we are using a question mark operator which will allocate either the value h or zero depending upon value of h here. Hour, minute and second are handled like this. You can look at this through the exercise. We have done this kind of exercise earlier. I will try to put it in a slightly different and a simpler form exhibiting the behavior of a question mark operator here. There is another thing called my time, member function called print standard. So print standard is another member function which I could use in my program once it is defined. All that it does is it takes a 24 hour standard time and prints time in AM and PM as we know it ordinarily. So for example depending upon whether the hour is between 0 to 12 or hour is beyond 12 that is between 12 and 23 it will print either 12 or hour modulo 12 depends upon whatever is the value here. And then again it will output AM or PM using this method. This is just an example. I will repeat again you don't have to use object oriented programming in the exams or in the projects that you do. But since C++ exhibits very strong object oriented features in the next three lectures we will be discussing some of them so that you are prepared to study things on your own or through some additional courses later in the subsequent classes. My colleagues have come so we will start the what you call course evaluation but I will just take two more minutes some announcements. Now this is something I had mentioned but I found some team leaders asking me questions again on this. Please remember apart from the project submissions which I suppose you are doing every deadline two deadlines are passed the last deadline will come at the end of this week. This is an additional 10 mark portion if you recall we have removed 5 marks from assignments and 5 marks from quizzes and we have said we will have a special assignment worth 10 marks. This is a group assignment so this is not an activity where individual student will get any mark. The individual student getting marks will depend entirely upon how that particular group which is a lab dash performs. There are two assignments actually the first is to set test questions which I have explained earlier simple, complex and simple, medium and complex type of hardness requiring 15, 30 and 45 minutes. Now as I said each lab dash will have to set such three questions one simple, one medium and one complex and at least three students from the lab dash must attempt that question. People have been asking me repeatedly will their roll numbers will have to be written etc that is nonsense it's a group activity. So you just call it student one student two student three but what I do not want is the same three students or in fact only one student making all the three attend for all the questions that is nonsense. So team leaders must ensure that the students of the lab dash are allocated this responsibility and they time themselves 15 minutes 30 minutes or 45 minutes. They must write down the answer to that question of whatever way they attempt and they must insert it. The comment merely say lab dash so and so student number so and so not roll number student one student two student three student four student five whatever. Additionally the lab dash will also have to construct a correct decent answer for that question with comments etc which may take much longer than 15 minutes 30 minutes 45 minutes and will have to be inserted in your submission. We have decided to reallocate marks this particular activity will have six marks instead of five which was earlier two marks per question. Additionally each lab dash will have to set two quiz questions on each allocated topic so you have to set four quiz questions. As I explained earlier there could be multiple choice quiz questions there could be course segments and you just want to see the output of that course segment. Or you could say which of these course segments will produce this output it could be even fill in the blank. The choice is entirely yours. A quiz question should not take more than one minute to three to four minutes for people to figure out. And the topics which are allocated you can't set quiz questions on any arbitrary topic. So I have given here list of quiz questions there are two sets and these are the batch numbers. So batch number zero will set quiz questions on data values batch number nine and variable names batch number eight on simple expressions etc etc. All those batch numbers are given you can read them upon the slides which will be put up. These will all be put up on the on the site. This is the elementary set and this is the advanced set. Each lab batch we have to construct two quiz questions on each of these. And this total assignment this time no it's not expected that people will actually participate in a time quiz or something. But correct answer and the reason for other answers being wrong should be listed there. This is the second submission. This submission will be due on 16th which is the last day of instructions. Both the questions and the quiz topics. I think we will close here. We will continue tomorrow morning. My request is if you can get an early breakfast tomorrow we can start the lecture sharp at 8.30. I will appreciate. Please don't leave the course evaluation will be conducted by my colleagues. I will help you leave now however. This one student has not been taking the printouts that I have been bringing here. Is he not here or something? There is somebody else right who used to take these printouts.


Nid o ddiweddau gwahanol iawn, dwi'n meddwl i chi'n sawl i ni bod ymgyrch mewn fforddol. Maen nhw'n meddynu'r gwahanol, ond mae'n meddwl bod hwnnw enw'r hyn yn rhan yn gallu'n meddwl, Darle ym drwy'r meddwl o'r fforddol o'r gwahanol, yng nghymru yng nghymru sy'n meddwl gael gwahogol, sy'n meddwl anghent yniktod am d teknig mewn yng Nghymru, maen nhw'n meddwl yn cofnod yn ddiddordeb arwyd yn bobl o'r fforddol, ac efallai gennym ni'n gynhyrchu. A mae'n gwybod a'r gwaith unig. Mae'n ymdodol yma ar y cyflawn. Ac mae'r rhai cyflawn arall. Ac mae'n mynd i ni'n gweithio i'n gweithio'n ddod o maen nhw wedi eu gwybodaeth. O'r gweithio'r gweithio'n gweithio'n gweithio arall, mae'n gweithio'n gweithio'n gweithio ar â'r gweithio. Mae'r wyliau erbyn i efallai gan gweithio gweithio agfarradau gofodol. Rydym iawn i gael amser yn ddiolch i gael i agn ceremonyd y gallwn, ac gan gweithio y gweithio cyhoeddi'u gwych mae chyfyddoedd o'r tyfu, yn llwyvideo sy'n gwybod i'r gweithio gyda'u tyfu. Rwy'n credu bod ni wedi gael y sectors, ac wych yn oes i'r ffantastiad ac yn ddiolch am gwybod i'r gweithio. One example we have gathered from Northumberland is where the Sure Start operation and the FAR service share premises. That does two things. First of all it keeps in business two services that would otherwise in that local community have had to close It saves costs and keeps a community building in use which might otherwise have just been closed and abandoned. Lots of the example of how better to work together delivering better costs and value on the one hand ac mae'n rhoi bod yn defnyddio'r diwrnod rhai o bobl o'r cymdeithasol yna?  Ymgyrch o'r anhygoel ysgol yn ymgyrch ymgyrch, is that the quality of it is exceptional. The feel of it was young people who don't usually like going to school and don't enjoy the institution of school like the way that they were treated with respect but expected to work. And the innovation was this is a social enterprise. This started out with the council helping it to happen but in order that they grow and can move into other business areas they formed a business and they're running it as a social enterprise and to produce that degree of quality and getting young people into career paths I thought it was fantastic. What community budget says is take the shackles of local government of the health service of police get them in a room together pull their money and say this is the problem we're jointly trying to tackle I can do this bit you can do that bit someone else can do the other bit and jointly we join that up the problem is that not everyone is playing by those rules so I think a great idea but we've got a long way to go to make it a reality. They're important because we're wasting public money at the moment the total place pilot showed that a family in multiple deprivation might have 20 different agencies and 20 different professionals all me visiting them about the same thing and the funding streams for this come from different government departments and yet they're all happening locally and community budgets are about how do we pull that money in order that there's a joined up delivery and that actually the person doing that can also do that and can do that according to what's needed by the client government will devolve money that usually it makes decisions on in our localities government will devolve that money in order that we can commission things from the voluntary sector or the private sector or ourselves we can commission things to join up delivery and make sure that we've got fewer players on the pitch


This is Cam but she's going to introduce herself and today we're going to be talking about becoming a mid-level developer and our two perspectives on leveling up. So I'm Kinsey Ann Durham. I am based in Denver, Colorado. I love to fly fish and that's my dog Harley in the middle. I'm very obsessed with her. And then there's me teaching code in Peru, which is something I'm really passionate about. I also have a different background. I didn't go to a code school or have a computer science degree and I started to learn to code after I went to a Rails Bridge workshop. And I'm coming at it from the more junior perspective having recently made this transition or trying to make this transition thanks to Kim. And I'm Kim Barnes. I'm coming at it from the salty dog perspective. I've been doing this a while so sometimes I use words or tools that other people don't understand. I have to explain them and that's unfortunate and embarrassing. I have been doing this a while. I got introduced to programming from my dad who would assign me basic programming assignments that I had to do before I could play games on the Apple II Plus. So he also graded them. He said, okay, this one's this hard. So if you get an A you get to play this many games of space invaders or sneakers. I have some passions, including my two amazing kids who are both in college right now. I don't recommend that both your kids start college at the same time. It's not real convenient. I also love TDD and pairing and mentoring. And there's an early attempt at my coaching, trying to get this pony to pull my little sister. Didn't work very well. What's really cool right now for Kim to give us talk is that we're on the same team. And so we have the opportunity right now every day to work together and to mentor. So we both work for a company called Ghost Spot Check in Denver, Colorado. And we are always looking for engineers. So come talk to us more if you have any questions about that or want to relocate to Colorado. And we have a lot of t-shirts in general. Yeah. As Kinsey and I were planning this talk, we were trying to decide what words to use. Junior doesn't always apply to people, senior, mid. Who knows what mid is, it's kind of fuzzy. But I think we're going to use junior and mentor a lot. But what we found was that we think we have a lot of ideas that we can share and benefit you no matter what level you're at. So hopefully you can listen for things that maybe you've seen work for you or maybe some ideas that will help you with some problems you're having in mentoring in general. We're going to cover a couple different areas here. First, technical learning where we're going to talk about ways to level up your technical skills. Domain knowledge where we can talk about getting better at learning the why. You're writing the code you're writing. Mentoring, so helping people become better mentors. And then some more diving into the actual relationship between juniors and mentors themselves. And we want to talk about some ways that you can make mentoring work for you whether you're in a pairing or a soloing environment and balancing the two. And then finally dive into some soft skills to help everybody become better, well-rounded developers. So I think Kinsey's going to kick us off with some technical learning ideas. Yeah, and someone's still air dropping me pictures. I see you, I don't know who it is. But it keeps popping up on the computer. So thanks for that, I'm not going to open them on the screen though, I'm a little scared. So I definitely think that the best way to learn as far as technically goes is to teach. And a lot of people think that you need to be a senior developer to do that. And I really think that it's the opposite of that. Even if you've been programming for a month or two weeks, you can teach someone who has never programmed before. Teach your brother, teach your parents. And it really helps establish what you're doing and kind of what's happening because people ask a lot of really good questions. And it also helps combat imposter syndrome because you realize, hey, I actually have been learning. And I really do think that it helps solidify concepts in programming. Also, side projects. You need to be doing extra learning outside of your current job. So doing something like a breakable toy is something that's really awesome. Side code project contributing to open source. There are a lot of barriers to open source, but there's a lot of awesome people at this conference who are doing a lot to mitigate that. So contributing to open source, it also doesn't have to be code. You can volunteer for something like a RailsBridge workshop or get involved in the community. But make sure whatever you're doing, it's something that you're passionate about because already you're writing code all day every day and you want to make sure that you don't get burnt out. And speaking of burnout, I really think that it's important to take breaks. I don't know if any of you have heard of the Pomodoro technique, but I do that a lot when I'm soloing because it actually makes me get up and step away from the computer. So basically you're working for 20 minutes and then taking a five minute break, so on, so on. Also maintain your hobbies. A lot of times I hear people who are in boot camps and code schools who they used to be really into horseback riding or they used to be really into fly fishing. And then once they start doing code school or programming all of their hobbies, kind of stop being a thing. And I think that you should, as much as you can, make time for it. Even if it means like, hey, not finishing this project that you were supposed to finish. I think that it's really important because burnout can really blow up in your face and be a terrible thing. Also, languages you don't expect. I think it's important to learn other languages while you're learning even your first language, and I, Kim, will talk more about this. It'll help solidify core concepts. So one of these, for me, was SQL. This is an example of my first day at GoSpotCheck. I found this, and it was terrifying. Did it find you? It's like it came after you. Yeah, and I was really overwhelmed. Code schools aren't really teaching SQL. I don't really know a code school that is, but if there is one, I would love to know about it. And I think that SQL is a really important language and a skill to understand. So find a mentor that can help you with SQL, be playing around in the database. The only reason I started to talk to Kim is because she was a SQL expert. That actually isn't true, but- I am a SQL expert, but there's other reasons to talk to me, right? Right, Kinsie? Right, sure. Also, approaching problems. I really think that it's important to be aware of how you're approaching problems is not something you think about.  But actually, having awareness around this, I think is super important. And I definitely think there are best practices as far as approaching problems goes. I'm sure you've all heard of breaking things down as small as possible. And working with Kim and other mentors has really, really helped me with that. And they're always constantly reminding me of it, which is what I need. Also, understanding the why and the bigger picture. Like, why am I doing this story? Like, what is the bigger impact? What are the customer needs? We do something called iterative planning meetings? Iterative? Iteration. Iteration, I always get that wrong. Iteration planning meetings where we can ask these questions and say, hey, why are we even doing this? And kind of understand the bigger picture. Also, when you're sitting down to write code, you can use techniques like pseudocode. Here's an example of where I was writing pseudocode before I wrote a line of code. So not only did this help me figure out what I needed to do and the code I needed to write, but it also helped me realize that this was a code smell because I have this assign user places method. And I have so many lines of pseudocode. I'm like, hey, this method's probably doing too much. So another benefit of pseudocode. Also, focus. We get distracted by dogs running around the office, social media phones. And a mentor, so like Kim was for me, can really be that bug in your ear to help keep you focused. Constantly, even when we were practicing for this talk, I think she took my phone away like three times or something like that. So if you have other things that are distracting you, take a break and go deal with them. Like say, hey, I need to take care of this. And Kim gave me that advice and that was really, really helpful. Because then I could actually be present when I was pairing. And it was a lot better for me in my pair. Also, focus on getting better. Set the intention. A lot of times, we don't really think about it in our day-to-day grind. But remind yourself every day that, hey, I want to level up. I want to get better. I want to be the best developer that I can be. And communicate this with your mentor and that way you can both work on it together and constantly have that annoying bug in your ear and keep that in mind. Also, time and practice. I've recently started mentoring myself for a online code school. And a lot of students I have who sign up are just expecting it to be really easy. They expect to know JavaScript backwards and forwards in two weeks. And I definitely think that you're gonna have to make some sacrifices and take the time to really learn and dig in. And I really don't believe that it is an innate talent. We hear that a lot. I think that it takes a lot of grit and determination. So, Sandy Metz gives a really great talk that I've seen a couple times on this. And basically she is saying that you need to be willing to put in a lot of hard work and effort. So go to the ditch every day and dig. So just keep going, putting one foot in front of the other and keep going. So now I know Kim wants to talk. I've been talking a lot and she has some good points on how to level up technically. Thank you, Kizzy. First of all, I love this tweet by Venkat Subramanyam who's one of my heroes. But the idea is that to kind of start the day with what do you want to learn. And actually it's one of ghost bot checks values is go to bed smarter. So I like that idea. Technical learning actually is an idea that my friend David Maduros introduced me to, the idea is that there's two axes, cool. Sorry, the clicker thing isn't working, I messed it up. Must be that airdrop photo. Yeah, the airdrop photo totally threw me off. So there's a horizontal axis which is different languages and technologies that you typically think of when you talk about technical learning. But then there's a vertical axis that here, I'll do that. Okay, you go. Okay, thank you. That's the core concepts that go across different languages. So this is a picture of the horizontal axis. And like I said, it's specific things like Ruby, Rails, JavaScript, React, Backbone, all those things that we are supposed to be proficient in. Who here gets excited about learning a new language? Well, probably everybody because we're here at RubyConf. So yeah, I think that's, I did too. I think that's a big thing that interested us in this career. This area is that there's so much to learn, and it is really important. We have to keep up with the latest languages and the latest features of the new languages or the old languages to stay relevant, to keep our resumes current. And there's jobs that say you need this many years experience in this language. So it's definitely very important, but there are so many, and there's only so much time. And so it seems like we spend a lot of time chasing the latest technologies. And our learning in each area can be kind of shallow. So I think it's important to remember to balance that with the vertical axis, which is the core concepts that go across all the different languages. These are the things like TDD refactoring, design patterns, maybe your IDE or specific tools, UNIX command line, design principles. These are the things that you can apply no matter what language you're working in. And these are the things that help you get jobs in languages you've never worked in before because you've proven yourself in a couple languages and you know the core concepts that work across all of them. And they also help you go beyond solving just simple problems with simple solutions. So you can really level up well if you work on these vertical axis areas. So yeah, I'm supposed to flip the card here. Like I said, the horizontal is important too. And balancing the two is pretty important. What's really cool is that they both build off each other. So the more languages you learn, like if you learn a new language, you already have a couple under your belt, you can apply those core concepts with that new language. You can learn the language better and quicker and you get to build on that concept. And the reverse is true too, as you learn, say, some new design pattern. You can try it across different languages and get so much better and understand it so much better. What I found is that if I'm pairing with somebody mentoring somebody or just pairing with somebody, I can find out kind of where they are on that vertical axis by what language they use. There's like a language of development. And I hear it when I hear people use the words coupling and cohesion correctly. Or discussing design trade-offs and not so much focus on the actual syntax of the language we're working in. So if I'm working with somebody and they're pushing me to think bigger picture, I know that they're growing in that vertical axis. So those are some ideas for technical learning. And we want to talk now about domain knowledge, which is getting better at the company you're working in, the application you're working in, the why you're writing the code and the problem space you're working in.    But- Great question. I have a problem too.  But, for example, you're in an IPM or a grooming meeting and there's right off the bat they're like, well, we're going to talk about such and such. And you're like, I don't know what that means and maybe I'm the only one. But you have to ask those questions because you can't provide value. Developers provide value with more than just the code they write. They really need to understand the problem space, like I said. We're here to solve problems. So if you don't understand what we're talking about, you gotta go ask, you gotta understand it. And another example is like in a meeting they're talking about, we're going to add this feature to this screen. And you're like, well, what screen's this on? You can much better focus on better questions if you have more context. And you understand what they're talking about. The thing that I've found is pretty cool about asking these stupid questions is that once you do it, people start trusting you. They know that you're not going to hesitate to speak up if you don't understand and so they can relax and know you're going to do your job.  So that's one way to get more knowledge or to grow your technical knowledge area. Kinsey has some more ideas for us. Yeah, so at Graspatchek we do something called field trips. So our customers are primarily big alcohol brands. So now instead of going to the zoo or anything, we get to go to the liquor stores for field trips. It's actually really awesome. So it's awesome because I get to put myself in the customer shoes. And I know a lot of companies aren't really doing that. As a developer, how often are you actually getting to interact with customers or put yourself in their shoes? So something like field trips where you actually use your app and do what they're doing I think is really awesome. Also they're really fun. Like I was saying, we get to go to bars and use the app. And also a bigger picture of understanding the why. And it's really helped as far as problem solving goes. After doing these, I feel like I approach writing code so much differently. Also I've been sitting in non-customer meetings and sales calls. And learning all about the customer as much as I can, their needs, why they're using our app. And which makes me much more aware of the bigger picture.  So I think it's important to be proactive about this. Like I said, I know very few companies that do this proactively on their own, so you going out there and saying, hey, I actually want to interact with customers. Can I sit in on this demo? Can we do this field trip or something like that? I think it's really important. And that way you're always remembering the end user. It makes you more well-rounded as a developer. You can provide more value, more than just raw technical horsepower, which I think is really important. And better at solving the problems that you're dealing with as a developer. So now we're going to talk more about mentoring specifically and what we think makes a quality mentor.  She tells me that all the time. Yeah, and really be aware of the word choices that you're using and even body language. It's important to always be encouraging and recognize your biases and also to not be kind of sending. It's really hard to do that, to not be kind of sending, because you know this thing backwards and forwards. It's hard to not be like, hey, how are you not getting this? So make sure that you're being aware of all that. And also watch your own frustration. It's been really interesting, because I was kind of judgmental of mentors who got really frustrated with me. And now that I'm in the other shoe of actually mentoring students through this code school, it's been interesting to see how easily frustrated I get. So definitely, I really think it's important to take a break. If you're getting frustrated, end the session early, or say, hey, I need to go to the bathroom, something like that. Because imagine how frustrated the student is. And it's really discouraging when your mentor that you're working with is frustrated with you. It's like, I don't want to recode anymore when that happens. Also, teach in metaphors. It's super helpful, especially with harder concepts. It's really helped me. So something that I was struggling with was this keyword in JavaScript. And the only reason that I was finally at the light bulb went off when I heard a metaphor for it with a soccer player and kicking the soccer ball. And all of a sudden, that light bulb went off.  Also, think about the bigger picture. A lot of different jobs and companies, I feel like I was judged just because the raw technical skill wasn't always where it needed to be. But it's not just about that. Junior developers have a lot more to offer. And it's really important as you transition into becoming that mid-level developer that you're not just raw technical horsepower. You're the whole developer. And really honing in on these soft skills that Kim and I are going to talk about later. But always seeing what else they can bring to the table. Also, really be that balance of support and challenge. I think it's important to be a support system. Even if I have personal things going on in my life, I go to Kim. And also, she just really inspires me. And I think that's really important as a mentor to try and instill that in someone that you're mentoring. And push and challenge them. If they're slacking, if you think they're being lazy, push them, challenge them. That's something that I really needed. Also, remember that juniors can teach you things too. A lot of times we forget that. They're your peer. Don't treat them as a support in it, because they're not. They can make you a better developer. There's so much to learn as far as this industry goes. And they can also help you keep your code simple and readable. Because if they don't understand it, maybe you should look, hey, is this too complicated? Is this too clever? So yeah, Kim is really good about mentoring. So I'm excited to hear what you have to say about mentoring. Well, first thing I want to share to people being mentored or considering becoming a mentor is that it's not necessarily a senior developer. Does it necessarily make a good mentor? Even a great senior developer isn't necessarily a good teacher. It takes practice. It takes a lot of conscious thought about what you're doing. It's not just coding it at advanced level, letting somebody watch, because that's not teaching. And that's not fun for the person either. Another thing you can do to grow your mentor skills is to think about how the person you're working with thinks and explain in their terms. Like Kinsey said, metaphors work really well for her and worked for the JavaScript, this keyword. Other people, like, for example, I like concrete examples. You can teach me some, explain some abstract concept to me. But I need a concrete example to work through in my head as we're talking about it so I can, you know, make it a little bit more, learn it better. Solidify it. Solidify it, thank you. Also, as a mentor, know when to step in and when to let them struggle. I'll talk a little bit more about this in pairing versus soloing, but you wanna find the right balance between letting them struggle so that you're not too much of a safety net and they can learn those hard lessons. You need to see the error messages and then work them through to the actual solution so that you know what those error messages mean next time. But don't let them get too frustrated and don't let them go too far down the wrong path. So step in when you see them struggling too much. This is an idea of Teachable code that I read in an article Peter Jang wrote in Prague Pub. I really like this idea because I've heard that on teams with a lot of junior developers, there's this concept that you wanna teach the lowest common denominator level so that anyone at any time now or in the future can pick up this code and understand it because you don't want somebody coming in and writing this code that now the rest of the team can't maintain. But I don't think that writing in it at lowest level is really the way to go. I think that does a disservice to the developers and to the code. You wanna level them both up. But there's this idea of Teachable code and for example on the right you see my production example and maybe this is some code that someone you're working with doesn't understand. But you can break it down and create more of a Teachable example. You can extract temporary variables and give them meaningful names. You can inline methods to make it more procedural because sometimes that's easier to think of and then you can turn higher level methods like inject into the simple each. So that's a great teaching tool but also go the other way and then maybe you've written that code that way or maybe they've written that code that way but then you can take it to the next level and like I said level up the developer and the code so that it's more of the way you wanna see in a while and they're gonna see and have to maintain. So Kim, this has been super helpful of Kim doing this with me. So if you are a mentor in the audience I definitely, I highly suggest reading this article and practicing this because it's been super helpful for me on not understanding concepts and it's helped me really level up I guess.  Yeah so we're gonna talk now about some more specific ways that you can help work on the relationship between juniors and mentors or juniors and mentees. Something I find really useful is giving and asking for feedback. So I'll ask often, how is my coaching style working for you? Some people have told me that I'm too nice and I think that maybe I spend too much time worrying about how I say it or am I gonna hurt someone's feelings and that probably works for some people. I think that's probably the way that I wanna be taught because I'm very sensitive but Kinsey just wants it direct and blunt and so if I'm too nice to Kinsey I think it comes off as condescending because it's like, do you understand that? Did you understand what I said there? So ask how your coaching style is working for the person you're working with because everyone's different. Also give feedback and try to do it as quickly as you can but only if you can do it without emotion. As an example recently I had a one-on-one with someone and I told her that I told her some specific feedback on when we pair. Her navigating style wasn't working for me and I think she understood it but it was much better when we were working again in that pairing situation and I could say that right there. That's what I was talking about and then she could understand what I was referring to. Also as a mentor, be humble. You're still learning like Kinsey said and juniors, mentees, anyone has something to teach you. In fact it was my very first person I was mentoring who asked me what map meant in Ruby and I knew what it did but I didn't really know where the word came from and that's what she was asking. So don't quiz me. So. I'm gonna say what's map. So I had to look it up. I had to Google it and find out it comes from the mathematical term and that really helped me learn it too so that was pretty cool. Also when somebody asks you a question you don't know admit you don't know because first of all you're gonna help them with their imposter syndrome. Second, that's what we do. We don't know everything. We have to figure stuff out all the time and it's a great opportunity to model how you solve problems when you don't know them. So how many people here actually have a formal like mentorship or apprenticeship program at their company that they work for? Oh wow, there's a lot. Okay, so Kim and I we don't have a formal mentorship or apprenticeship program at GoSpotCheck so we really had to build this structure and priority into our relationship on our own which has been really great. So I think it's important to have dedicated time where you meet one on one which Kim and I do regularly and with one on ones to make sure that everyone's on the same page and that everyone's working towards the same goal and have that goal of leveling up. Also, make sure that you're in the right environment. So for, you know, this is a lot harder for juniors to find the right environment because you wanna make sure that learning is valued.  So if you're looking to really progress and become that middle-level developer I really think that's important.  I know it's really hard with saturation in the market, you kind of wanna take any job you can at this point, at least that's how it is in Denver but I really think that it is important to find that learning environment and leave when you're unhappy and treated poorly because your happiness, you know, truly does matter and there are a lot of places that you can be happy at. And also, if you are in a situation where you can't really do anything about it, leave or say whatever, even if so, speak up about your needs, try to change it before you move on, help them see like, hey, I really want this, I need X, Y, and Z in order to transition into like a mid-level developer that way, you know, both the company and you win. So goals are super important, taking actionable steps like I said, since we don't have a formal mentorship program, it's so crucial for Kim and I to do this on our own and actually follow them, like be accountable for them and help each other and meet regularly with your mentor about those goals. And also define what a mid-level developer looks like at GoSpotChek, I'm sure, a mid-level developer looks very different than a different company. So I think it's really important to say, hey, what does a mid-level developer look like? What will my pay be, blah, blah, blah, and how do I get there? So now we're gonna dive into pairing versus soloing. How many people here pair on a regular basis? Wow, a lot, that's so awesome. And how many just solo most of the time? So half and half. It's kinda half and half. Yeah, that's awesome. So for me, the biggest thing with pairing was the confidence to drive more. So a lot of times when I was working with mentors or more senior developers on my team, they would never let me drive, but that wasn't necessarily their fault because I didn't have the confidence to speak up to drive more. I was super intimidated and I was not getting a lot out of pairing. There were probably months where I was not progressing as a developer because I was literally just sitting there watching someone write code all day. It sucked. So Kim has really pushed me to drive more. So even, it was really annoying. I was in the bathroom one time and she was under the stall like, hey, you need to drive more. So everywhere I went. I don't know what just happened. Someone's probably air dropping me more photos. Everywhere I went, she was constantly telling me, hey, you need to drive more. And I got so annoyed to the point where I finally started doing it, which was awesome. It helped me get a lot better a lot faster. And so I'm actually thankful for that. You didn't add a new slide about boundaries in here, did you? No. Okay, good. That's important too. Also the right amount of time. So it is really important to struggle. So I let Kim know as my mentor that I needed more time soloing. At Coast Batchek, we pair pretty much 100% of the time. Now I only pair probably 80% of the time because I really wanted that 20% time to be able to struggle and read blog posts and really learn about things that I was struggling with instead of having Kim step in and help. So this balance has really, really helped me progress quicker. Also, we've started doing these things called pairing retros. Those of you who are familiar with Pivotal Labs, they kind of coined this. All you do is have a retro on what went well, what didn't, and how to improve, and just on the pairing relationship. So that really helped me communicate like, hey, I wanna drive more, blah, blah, blah. And really get the most out of pairing and obviously accelerate my learning. And work on being a good pair, which is hard because I was constantly being distracted, so that was super helpful. Yeah, so Kim has a lot of experience with pairing too, also soloing, but mostly pairing. You're big into pair programming, so. Yeah, I like pairing. But Kinsey was talking about her needing some solo time and I think that works well for her. What, maybe a day a week or every other week or something like that. And I think everyone's different too. The people in our team who are happy pairing all the time, even though they are still learning as well. But what I found works really well with solo time is to combine it with code reviews. These can be a great safety net if you've got, you're trying to make sure that somebody's not pushing some big problem to prod. But more than that, it's a great opportunity to have the discussion. So, Kinsey might be off soloing and then submit a pull request and I'll pull her over so as to review it. I wanna discuss the trade-off she made. Why did you decide to go this way or versus that way? What are the pros and cons of each? But I have to remember I didn't have all the context. I wasn't sitting with her when her test failed or when her code got kinda cumbersome. So I need to ask questions about why she made these decisions. But the discussion is the important part. And also, if there are two equally valid ways, Kinsey's implemented one way, but I look at it, it's like, that's not the way I would have written it. But we've discussed the pros and cons and really there's no one right way or much better way. There's no reason I have to force her to change it to the way that I would have written it.  Yeah.  Yeah. Oh. Damn. Who here has tried ping-pong pairing? Cool, not too many. Ping-pong pairing is literally taking turns like ping-pong.  What I really like about ping-pong pairing in particular with mentoring is not only does it help divide the time a little bit more evenly than driver navigator, like Kinsey said, she didn't progress, didn't get to touch the keyboard because they were probably using the driver navigator model. So it shares the time better, but it also keeps both her people much more engaged and on the same page. So if Kinsey's writing a failing spec and I'm like on the edge of my seat wondering what she's gonna write for me next. You know, what code am I gonna have to write? I'm much more engaged and there's much quicker feedback cycle if we're on separate pages. If she writes something that is totally unexpected to me or vice versa, then we have that conversation of well, I was thinking of this kind of design. You know, what were you thinking? So I think this works really well. Also the refactoring opportunities are a great time to model how you do that. You know, maybe stop her right before she's writing the failing spec and say well, do you see any refactoring opportunities or I'm gonna show her what I might do here. And again, great opportunity for conversation. Ping-pong pairing keeps you engaged and also there's other ways you can make sure your pair is engaged. When you're writing a failing spec, for example, often I'll stop Kinsey or whoever I'm working with and saying okay, what failure do we expect here? And I'll do this for myself too. It's kind of a good habit to get into. It's like I'm expecting it to fail because I got a three instead of a two but it turns out that I passed at the wrong number of parameters. That's really good to make sure that I'm thinking clearly because we often get into a habit, especially with TDD, of writing the failing spec, writing the passing code and then writing the failing spec and then much later you realize you actually weren't testing what you thought you were because you weren't reading the failures very well. And as far as driver navigator and helping grow someone in the navigator role, it's nice to ask what's next. You just finish a task or some part of a story to say where should we go next and to help them take that navigator role and think at a higher level. So we've talked about some technical learning, some relationships between junior mentors and I think we wanna dive now into some more soft skills to help make sure we're all well-rounded developers. One example that I wanna talk about is time management. As this tweet refers to, we are really bad at estimating. In fact, I think that's one of the big advantages of Agile over waterfall if anyone has heard of waterfall, I don't know, but it's not that Agile helps you estimate better, it's that it acknowledges that estimates are hard and kind of tries to remove them, make sure that we're working on the most important thing at any given time. One way you can get better at estimating and I think it's important to get better at estimating just for your own benefit, not necessarily that you should broadcast your estimate, but that so you can manage your own time better. And Kinsey mentioned the Pomodoro technique for helping with her soloing and for taking breaks, but also it can be used to estimate tasks. So you can write down all the tasks she used to do for a given story. You can write down how long you think each of them will take and then when you're done, you can go back and compare to how long they took. So this can help you identify patterns maybe in how you estimate or how you can improve, like you always forget that one part of the development cycle or there's always a surprise and you should just allow some extra time for that. Also as far as time management is important to avoid multitasking, but we can't always do that. We can't always control what we're working on. So what I found is if I'm working on something and a higher priority issue comes in and I have to pick it up, I wanna get what I was working on to a definition of done first kind of for myself before I put it down. And that's gonna be much better when I'm done with that high priority bug fix or whatever it is to go back to it. And finally on time management, there's a book, Go Spot Check's doing a quarterly book club right now on getting things done. It's got some great ways to manage a lot of different things coming at you both across work and home life. The final soft skill I wanna talk about is emotional intelligence, which is this huge, huge area and I'm not gonna talk for an hour on this. I just wanna talk briefly about the fact that as developers we can't be the stereotypical heads down, antisocial, introverts that people think us to be because especially with Agile, there's impairing, there's a lot more collaboration and communication required out of all of us. And in particular, empathy. I think empathy is important no matter who we're working with, a product owner, a QA developer, your pair, your mentee, your manager. And I think of empathy as just understanding where the other person's coming from. Not necessarily agreeing with them, but if you can have an open mind enough to understand where they're coming from, you might find that your opinions are a little bit challenged and you can work a lot better together. So we're from Denver, so I of course have to have my hippie-woo-woo slide in here. But I do think it's important to have a balance, importance of balance and mindfulness. I don't know if anyone meditates here, but I think that's awesome thing to do in order to cultivate that. Have work-life balance and another value at Gosbashak, have fun, stay sane, take care, which I really, really like. Also that self-awareness, know your strengths and weaknesses and communicate that to your mentor. Know how you work best with others. We had to take these personality surveys and understand how we work better with others and that was actually really helpful because some people would really piss me off and after I, really annoy me, and after I saw that I was able to have more empathy like Kim was talking about. Personality tests, you can take a bunch of them are another great way to see that and communicating that with not only your mentor, but everyone else on your team. Also knowing how you learn best. So there are obviously a lot of different ways to learn and experiment with that. So originally I was just reading a bunch of coding textbooks and that was not the way for me to learn. I realized that I needed to be hands-on and I was just wasting my time with those textbooks. So really know that. Also your attitude, having a growth mindset. So Kim really helped me with this. I would get super frustrated and be like, I don't wanna do this stuff so I'm not gonna write this JavaScript thing, like any stuff like that and she really helped me realize that I needed to be more optimistic about it and see these challenges as exciting and as a good thing. And that's the beauty of being a developer is we get to solve problems all day, every day and having a good attitude about it. Also networking. I really do think this is crucial for as far as leveling up goals. Find a mentor, as far as finding a mentor goes, finding a job. Also I've never submitted a resume for any of the jobs that I've gotten in tech and I really do think that's because of networking. Making myself known, going to a meetup on Twitter, stuff like that, it can really save you a lot of time as far as that goes and find the right people in order to help you grow as a developer. So we are finally at the end of our talk and we have a couple parting words of wisdom. I really like this quote and I guess I would say to juniors who are trying to level up, just keep going, really set that intention. Find the right mentor, be in the right place and I think it'll all fall into place from there. Cool and I like this tweet by somebody you might have heard of. I like the idea that it's more than just writing code. There's a lot more to it and what I wanna share in particular to juniors is to speak up and ask for what you need. Like Kinsey said, be aware of how you work and setting goals. Also find a mentor. If you're somebody in your company and your team is willing to mentor you, great. But if not, find somebody outside the job. That can be super useful too because you can go to them for maybe things you don't wanna talk to somebody about in the company and they can help you level up on a specific area. Maybe even help you work on a work problem that you got through and got shipped but now you wanna spend a little bit more time understanding it. And to seniors, I wanna say ask for feedback. It's super useful and powerful tool to ask for feedback. It opens those communication lines and you can find out how you can work better with that person. Also if you are in an environment that maybe doesn't pair but you're interested in pairing, you're interested in mentoring and you're more senior, somebody might ask you for help on a bug or a problem. Don't just go over and help them. Offer to pair with them on it or offer to pair with them for the day and see where that goes. And we just wanna say thanks to a couple people for helping us and giving us their advice. Yeah, and thank you all for taking time and coming here and gritting a shirt, we appreciate it. Thank you. Thank you. I just wanna say thank you.


And another one. What's up people in the manner here. Coming to you with a video. This time we are going to be unboxing and reviewing. The Popwise PV microphone with four pin to two pin adapter which is included. Which works well on PC, laptop, desktop and most recorder. It's a professional microphone. Pretty small package but good thing comes in small packages so let's open it up. Nicely packaged. I will definitely say this. Nice carrying pouch. You can put it in your camera gear. You can put it in your laptop. That way the mic doesn't get scratched. Like the logo also. That way you don't confuse it with anything else. Right of the back we have a small instruction manual. The video recording setup. And they also have the contact information right here. They also have the list of adapters that are available. So they do offer multiple solutions for all your recording needs are like that. And the bag. We are given three different covers for the mic and we are also given an adapter. And here's a piece of resistance. The microphone. Pretty long cable right of the back. I will say the Velcro option is definitely good that way you are able to tuck it away, put it in. And looks like the cable is almost six and a half foot long. Nice clip. Right now I am using the microphone that is on the camera. Let me plug this in. And let me give you the audio example. And yes you need an audio jack. Because this is not a USB adapter. With the regular camera or with your PC this might be a good solution. Alright this is the audio that I am getting from the mic. Hopefully there is no static or anything. Testing one two three. Testing one two three. This is the recording that I have using the microphone that I just got from Popwise. This is a box. This is again the same recording from the mic facing towards me. Interesting. You do get additional black cover for the microphone. And you can hear it one two three. One two three. One two three. I am going to disconnect it from the smartphone and you can hear the difference in the volume. Again I am going to disconnect it from the microphone. You can hear the difference in the volume. Testing one two three. One two three. One two three. And now I am recording using the microphone connected to my shirt. Moving my hand tapping the mic to see if it picks up any sound. That way it has the proper review provided to you. Overall this looks like a really good product. This looks like a definite a good addition. Because at times I have to record a video. I have to walk around. I have to go away from the mic. And the audio doesn't pick up properly. Definitely liking this product the way it sounds and the way it looks. As always if you have any questions or concerns please leave them in the comment section below. And I will leave the product description of Amazon including the search option. And that way you don't say hey it's a sponsored link. Now you can just go right through it and get it taken care of. If you have any questions about this product please definitely do leave them in the comments below. And I will be happy to help. As always like, comment, subscribe. I will see you guys in the next one. Later people. Bye.


Okay guys, so I'm back with another destiny video and today I've been with these top five titan supers of the week Now if you guys want to be in with a chance of winning this resurrectionist emblem simply drop a like and leave a comment Details are on screen now, but I do hope you enjoyed the video and I was always guys. See you on that next one Oh, that's definitely going on on the internet Oh


Welcome back to Mechanical AI, did you know that nearly 90% of all electricity generated in the world is by using steam as the working fluid? This makes us wonder, what are the properties of steam? Before we jump in, check out the previous part of this series to learn about what irreversibility is. Now, in a kilogram liquid vapor mixture, if XKG is the mass of vapor and 1-XKG is the mass of liquid, then X is known as a quantity or dryness fraction of the liquid vapor mixture. Mathematically speaking, dryness fraction X equals mass of vapor upon the sum of mass of vapor and the mass of liquid. enthalpy is a measurement of energy. It is equal to the internal energy of the system plus the product of the pressure and volume. More technically, it includes the internal energy, which is the energy required to create a system and the amount of energy required to make room for it by displacing its environment and establishing its volume and pressure. It is denoted by the letter H. In common use, however, only the change in enthalpy is discussed. The internal energy of a system is the energy contained within the system, excluding the kinetic energy of motion of the system as a whole and the potential energy of the system as a whole due to external force fields. It is denoted by the letter U. Hence, we learned about what dryness fraction of steam is, then moved on to learn about what enthalpy is and finally saw what internal energy is. So like, subscribe and comment with your feedback to help us make better videos. Thanks for watching. Also, thanks a lot for those constructive comments. You helped the channel grow.  In the next episode of MechanicalEI, find out what is a mollier chart.


దికర పాకిస్నినింటినిారిస్ట్టిపాత్టి,��డింటస్పినింటిసాలాక,నినింటిస్పాసికింట్� only. ఉనీరింటినిబోంటికఞ్టిసింటింటికకి. Do you love coloring books? Yes, I do See, how about you? What do you think about coloring books? Okay, so for me, I find it as a very great way to calm down I didn't even have coloring books anymore I used to have quite a number of them I used to love journals I had this journal, one devotional journal, one time like that You know, you read the scripture and what it is And then you don't have like that drain where you have the paint I don't know how to draw but I don't know how to color very well And I don't like, it irks me how to book a lot outside the line So I think I like seeing kids with their coloring books And when they actually colored the right way But I've actually never really done it It hasn't really been something that kind of like picked my interest But growing up as a child, I used to love drawing I used to love painting And I was discussing with my friend I was like, you know what, I think I need to go back to painting But I think my own major challenge and the reason why I stopped drawing Was because I didn't have that patience And also, I also think it also comes from the fact that I know deep down that you don't really have the skills Because if I knew the right way to put my strokes The correct way to shade the right pencils to use Maybe I would fall in love with it more And probably just keep at it till I'm able to I have unfinished drawings I still have my drawings with me, a lot of it So even as two years ago, last year Sometimes when I'm bored, I just pick my book up And I start drawing But immediately I start drawing And I'm like, I'm not bored And I'm like, this is the reason why I never finish my drawings You know, now that we're speaking about painting We should actually have a sip and paint A sip and paint, right? Yeah, we should We want to have a sip and paint session, actually We'll have my head for you Anyway, Jenny, what do you find for us in the news? Okay, so for me, very laughable Nigerian Army reportedly increases Feeding allowance of personnel from just 1,000 Naira To a whopping 1,200 And the comment section is very chaotic Because people are upset Because people are asking what is that supposed to do Right? The major general on behalf of the chief of army staff Has said that, oh That due to the full subsidy situation And the fact that food prices have increased They have decided to graciously Those are my words, right? So don't quote me I'm the messenger And then they said that they have graciously Increasing the price Increasing their allowance to 1,200 So don't generate something You don't think so? Like you said, it's a whooping Whooping I think it's graciously that was added to it I mean, well When people do things like this A part of you wants to say I like the gesture, right? But is it really in the right direction? I don't know what 200 would do For anybody right now In the current economy that we are in Maybe it would help some people It would definitely help some people But a large percentage of people How much, like What are you going to buy with that? What would 200 help you do? 200 can buy anything in the market You can buy you water now A bottle of water now is 150 Some places 200 You can buy you pure water You can buy you salts You can buy like maybe a few cubes A few cubes of Maggie Right? I don't know if I think you can also get Ugu With that But you really cannot get more Because it won't end on me It won't end on me One part of it will end on me It's luxury It's luxury, right? Is it now a high-end meal? I don't know I just think with this situation Because it feels like Everyone is just trying to join the bandwagon It's like if I don't say I'm increasing allowance Or salary I would look like a bad person But then the truth is If you're not going to do it the right way Then I don't know You might as well just drop it 200 Come off it Come off it Isi, what did you find For us in the news? Okay Despite the numbers That we will pay 200 million was added to One thousand dollars Thank you very much I must do that My story is What happened previously The actress in the lab Badmuff The fit talker actually Famed her character Or She definitely Bugled In the lab In different ways And In the lab There is a lot of badmuff But we think that We are also not friends We know what That is That is Famed her character And But we have to Don't know And What and Let's say If it was In the lab In the lab In the lab In the lab They say But I am not Think about it And Because But before I go to the analysis, I need to actually give you an analysis of what actually happened in the court. So the third most high court in Lagos Wednesday said that the lady of court did say that she wanted to take a go for three years imprisonment for a side of court in the other world after a family of about six months. Now she did plead for me with family duties in charge. However, she was given a fine to pay $150,000. This young lady won't be able to pay a back of a side of court in the office because she has promised $200,000 to pay for her house rent. Now in your Lagos Thursday, and she said so many mean things about her in your Lagos Thursday. I mean, in your Lagos Thursday, what happened? I said before, have you seen before, do I know you, do you know me? And she was like a monster. And there was a reason why the judge actually gave her something sort of something like a place on the sidewalk. She is required to pay $150,000 of pay three years in jail. So she offered for the fine of $300,000 for the $150,000. Now while some people have thought that it is wrong, I will say, you are the judge of my judgment. The internet is going to be a funny one. One of the things people are offering you will be the same people against you. And some of these individuals will not know on my judgment generally, will not know where to draw the line when they are interacting on social media or online because they know that they will not be held accountable. I'm not a flaw in your background, but people will know that. And some of these young ladies have come to me because she was totally innocent of whatever she was affectionate with. And I think it's a good thing for you to be talking and doing things like that. Thank you. Thank you very much, Issy. Producers shared this story with me. We might be having a conversation about this in depth tomorrow, talking about cyber bullying and cyber stalking and all of that. I really don't understand why people feel they need to go and express false stories on the internet knowing that such news will spread like wildfire.  I asked myself, what were you thinking? What do you think was going to happen? So doing that was supposed to do what? Was supposed to make any other bad ones give you the money? She was supposed to give you in the first place? No. So, I mean, she's very lucky that she got, what's it called, the option of the fine of 150,000 error instead of 3 years, they should have allowed that to stay. I mean, 3 years. I feel like a lot of individuals, right, tend to cyber bully celebrities. And for some reason, they think they are not human beings or they don't feel things. It was few days ago or probably 2 days or something when Cardi B was performing on stage. And someone in the audience, a lady in the audience poured a drink on how, why she was performing. Cardi B carried the microphone and threw it out her head. Now the lady is suing Cardi B. And to me, it's like, what exactly were you expecting? Why would you pour drink on someone? Because she's a celebrity, she's supposed to take it. You slap her and she's supposed to turn her face to the other side. I'm all for arresting people, honestly. Jennifer is not a woman. I'm not your woman. She's a woman of blood. You need to start arresting people. I think when you start using people as scapegoats, other people fall in line. True.  It's very unfair to cyber bullying. Please, let's say not to cyber bullying for whatever. It's their money. If they want to give it more, they will give it. If they don't want to give it, they will not give you. Rest in the name of Jesus. Amen. Okay, my story. Interpol declares Nigerian woman wanted over 750 million era fraud. This is quite a lot of money. I mean, we don't have intricate details of how she went about this scam. But then it's been said that a Nigerian businesswoman known by the name S.A. Cynthia Daniel has been declared wanted by the international police over an alleged 750 million era fraud. So there's a bulletin that has already been published. They have mentioned that she held from Delta State and she conspired with accomplices to fraudulently convert the sum in Lagos between January 24th and January 26th, 2023. The suspect allegedly obtained the said amount under the pretence of paying the United States of America dollars, but declined and absconded to London. This even goes further to even describe her. This is what even made me laugh.  I don't know who comes up with these things and how they are able to write these descriptions sometimes. But anyway, it's funny, but it's not funny. Please, if you find this woman anyway, blow the whistle. She has been declared wanted. And her home address is 302 Therese 4 Bagnamna Island in Coiliagos, Nigeria. She also resides at No. 1 Bagnolian Road, She's weak London. So, if same, please hand her over to the nearest police station or to the office of the assistant inspector general of police to enter home. Thank you very much. Okay, now back to our conversation. Before we continue anyway, let's go for a break up when we come back. We'll dive into our topic.