 I eventually, I submitted, was a bit too big in the slide, so I cut it down to the main three topics I'm gonna talk about, which I feel are all related to each other, and that's kind of what I'm going to talk about here, it's about productivity, learning, and teaching. Ways I've managed to, or I think are good, to improve all of these in your lives and how they can relate to each other, okay? So let's start with productivity, and the first thing I want to talk about here is trying to define what is productivity, okay? Because learning and teaching, I think, are easier to define, so learning, you can simplify it as you're starting here by not knowing something and you end by knowing something, so whatever happens in between doesn't really matter. And in teaching, hopefully someone else starts by not knowing something and you help them get to knowing that something. But what about productivity? That's harder to define. So I looked it up on the Wikipedia page and I'm not gonna read all of this, but it basically says that it's a measurement of efficiency and that's output per unit of input, that's how you measure the efficiency of productivity. But what is this, right? So what is output, what is input? Is it lines of code? Don't really know. So this is actually the economics definition of productivity, so it probably doesn't apply. Let's look at, again, from Wikipedia, the programming productivity definition, and that takes quantity of software per cost of software. But again, what is quantity of software? Is it lines of code? Lines of tests? Lines of codes with dot bugs? Number of features that clients are happy with? Again, this is too hard of a problem and too much of a philosophical problem for us to discuss, I think, in 20 minutes, which are like 15 to 20 minutes, which is what I'm gonna spend in this section. So I'm gonna talk about something that I call perceived productivity. And the definition for that is that you're gonna reach the end of the day happy and confident that you did a good job. So you completed the task you had set up for that day, you're happy and you can go home, have quality time with it by yourself, your friends, your family, your dog, whatever, without feeling guilt that there's something you needed to do today that you didn't. To quote Game of Thrones here, like, who said this, me, right now? So I couldn't find a definition of this, but this is exactly what I wanted to talk about. There's a couple things I have been doing lately to try and achieve this, and that's what I wanted to share with you today. So the first thing that I think is very important is to plan your day. Like, this is something I started to do recently and has really improved my productivity or the way I feel about it. So this is very important for me. And I'm gonna go over like a couple of steps you can do to plan your day. So first one I would recommend is list all your tasks for the day. So this is, I usually do this the day before, okay? You just write them down wherever you want, just have a list of all the tasks. Next step is to prioritize those tasks, okay? You can do this in a lot of ways. I'm gonna show you two ways you can do this. There's one inherent way kind of implicit, that is you just do it ad hoc, just put whatever you think is more important, just put it to like the top of the list. But there are two more organized ways I'm gonna talk about. First one is called ABC analysis. It has like a fancy name, it's pretty easy. It's just like you give a letter to each task, and A means urgent and important, B important but not urgent, and C unimportant. So as you can probably imagine, if you give a C to a task, you can probably just drop that task, because it's not important. This is often put together with the Pareto rule, which says that you should, like 20% of the work should get you to 80% of your goal. So you can put the 20% tasks that will get you those 20% at the top. So this is one way. The other one is a bit more complex. It's called the Eisenhower method, and it comes from this quote from Dwight Eisenhower. And basically it divides your tasks into four quadrants. So urgent and important, not urgent and important, urgent and not important, and not urgent and not important. So looking at each of one of them, urgent and important means like your house on fire. So these are like big issues that you have to take care of right now. And the idea is that if you don't do them right now, at least plan them to be first. And this is something you have to do personally. You have to do it yourself. These quadrants, like not urgent and important, this is like recreation, exercising, this planning of the day, like this is important, but you don't have to do it right now. So you can set a deadline for them and do them personally again. Urgent and not important. These are like interruptions, meetings. These are stuff that you should delegate if possible. If you don't have to attend a meeting, delegate to someone else, okay? Not urgent and not important. This is busy work, time wasters, stuff, but it doesn't really matter. You should try to drop these activities as much as possible. Now, once you have all the tasks for the day that are prioritized, it's important to write them somewhere that you won't forget, right? For these, I use a tool called Action Ally. I don't know if you've heard of it. I think it's a Mac-only tool, but there you can use anything. This one, it's really nice. It has an overlay over your screen. So whenever you're not doing anything, your tasks are just there in your face. So you don't forget them. I highly recommend it. It's a paid app, but it's like a one-time payment, so if you use it every day, it's a good deal. Another thing that I would like to recommend is do not set times for each task, okay? I think it's very hard to plan your day in terms of I'm gonna do this task first and I'm gonna do it from 9 a.m. to 10 a.m. This will set you up for failure, I think. Because you're gonna go over time on some tasks, some are gonna be shorter. And what if you have an hour and it takes half an hour? Are you going to go on Twitter for the other half? It's not a good way to plan your day, I think. And I also think that we should be getting better at time management, so doing more with your time and not at time allocation or estimation. I think that's a hard problem that we don't wanna solve in our lives, per se. So time management, I feel, is important. So you have your tasks and you should manage your time to be able to accomplish those tasks. That's the more important thing. In terms of time management, like this sound like get things done, okay? So this sounds like very basic thing, but if you prioritize your tasks correctly and you consistently get things done, you'll be in a very good place at the end of every day, okay? And I stress this just because sometimes you're focusing on a lot of stuff and you forget like to get things done. One way I like to do this is, I know you've heard of the Pomodoro Technique, but I said this is an adaptation of that. Like the Pomodoro Technique has a lot of stuff. I'm just gonna focus on one major thing about it. And it basically just states that you should do around 25 minutes of uninterrupted work. This means like forget everything else in the world, focus on the unit of work you have at hand, so your task, and then take five minutes break to celebrate, to stretch your legs, talk to someone else. Like if someone wanted to interrupt you then, ask them to interrupt you when you finish with your Pomodoro. Okay, Action Ally, that's what I just mentioned, also allows you to do this. For each task that you have planned, you can say I wanna do like 25 minute work and it will set up an alarm like five minutes before to let you know it's ending and stuff like that. Now, this is all nice and theoretical, but what if you, like I do, what if you work in an open space? Like how can you achieve 25 minutes uninterrupted work? I bet if you have worked in an open space before, you felt the pain of like having a lot of noise, a lot of people around you. One thing that I feel is important when you are working in a setup like this is to be able to control your interruptions, okay? So people can interrupt you, but on your own terms. First thing I would say is to set alarms. I set alarms for like everything, so you don't forget, like if you're doing Pomodoro's, like after 25 minutes, you have an alarm. If you need to do something at like one hour after, set an alarm, okay? Like someone wants to talk to you, set an alarm to talk to them, whatever you're able to. Slack, we use Slack internally and Slack has a functionality for this. It has like a remind command that you can just say remind me of whatever at this time. It will remind you, so that's how I use alarms, but again, anything, you can use your phone, alarms, whatever, but do set those alarms. This is good for another reason, that is it takes your mind off of the things that you should do at that time. Once you set an alarm, you can forget it. Like once the alarm goes off, you can think about it again. So this kind of clears your mind to work on what you're working on at the moment. Again, I think it's very important to be responsive on your own terms when working in an open space environment. And this means that you should have a way to communicate to your team that you're not available, okay? It can be like you have your headphones on, that means do not disturb. There are a couple of products right now in the market, like for one that's just like a piece of wood. That has two colors, like red and white, and you just turn it around. Like there's a lot of stuff you can do to just say I'm available. Set do not disturb on Slack. Slack has the functionality now. Or quit it entirely, just quit Slack when you're not available. If you can, go to a separate office. If not, that's bad. But be sure to explain those signals to your team. Do not assume that they know that because you have headphones, you don't want to be disturbed, okay? Like talk to your team and let them know. If I have my headphones on, do not disturb me. But one thing that I also feel is important to like for you to be able to be responsive on your own terms is to not always be offline, okay? Like be aware that if you're working in a team, that team might need you sometimes. So if you're doing the Pomodoro technique, it's easier, you have every 25 minutes, you have five minutes, but I'll say at least every hour, take some time to look at what people want from you. Otherwise, it's gonna be hard, at least in my experience, it's gonna be hard to work in a team. One thing that I feel personally, and I think a lot of people do, about setting not disturb on Slack or quitting Slack, is something called the Fear of Missing Out, also known as FOMO. And I think like you really need to try to control that. For one of the main reasons, that's probably one of the main reasons you don't want to leave Slack in the first place, because you think something super exciting is gonna happen and you're gonna miss it. There's actually now a product called, not a product, like an open source project, called FOMO Box, that you can put in your Slack, like Slack channels, and it will measure activity on how many people are talking, and it's like more than three or more people talking a lot more than usually in that channel, it'll let you know, but probably something interesting happen. So if you're afraid of that, you can use FOMO Box. But in general, if something really matters, you will know about it, okay? If there's something on fire, someone will get up and tell you, like hey, you need to really work on this right now. So it's usually okay if you turn off your email, your Slack for long stretches of time, like if something really matters, you'll know about it. One other thing that I find, and I have to be honest, a hard time doing this still, but I think is important in order to be productive, is to have daily routines. This is often perceived as bad, like to have like something that you do, like it's every day the same thing, but they are very good for productivity. This is things that you do not need to figure out every day. If you do them the same way every day, you don't need to think about them. For instance, have a routine that means it's time to work. Lately, about two months ago, I started doing what I call daily standup videos, pretty much for myself, but I basically record myself on, like I have a standup with myself, saying like what I done yesterday, what I'm doing today, and what's blocking me. I record a video, about a minute video, and I put it in a Slack channel so everyone on my team can see like what I'm doing if they want, but it's also something that I do every day before going to work. So for me, it just switches my mind into like work time. It's also good to have a routine that means time to switch off. I know some people that just like put everything on the right order in the desk and just say computers switch off or whatever, like just have something in your life that means start working, stop working. Or else you're in the risk of just working all day and all night. Get up and go to bed at the same time. I have a hard problem with this, but it would be nice if you have a routine there. Famously, Steve Jobs and now Mark Zuckerberg have this routine of always resting the same way. Like because that's one less thing that they have to think about every day. So just clear ahead and do whatever you have to do. A bit apart and now these more focused for like developers, which I think most of you are. I think your editor should be there to help and not to fight you. So regardless of the editor you use, I think you should be able to run tests from your editor, assuming that you have a test suit that I think most people do or that you do TDD, especially important, but running a test from the editor, if you have to leave the editor to run your tests, that's painful, I feel. You should be able to extract repetitive tasks into shortcuts. I think most editors support this, so do try to be conscious about stuff that you do every day. That's boring, repetitive, like busy work, and put that into shortcuts. You should be able to change files at the pace of your thoughts. And I think this is important. There are a lot of like fuzzy searchers now for editors. This is very important. Like if you have to keep thinking about, what's the structure of the project? Where's that file? That's just time wasted. And I think you also should, if you haven't, you should learn to touch type. It's also a major product you boosted. At least it was for me when I took some time to actually kind of not look at the keyboard. So any editor that you use please try to do this, I think, and there's more things. I think these are the most important ones. So wrapping up this section of the talk, the main things out I think are important in terms of improving your productivity every day is to plan it. Cannot stress is enough. Planning each day is great. Like you know what you have to do, you don't have to think about it, and you can see like the progress of your day going on. And improving your time management skills I think is also important. Things I've talked about like the Pomodoro technique and being able to know like, okay I'm gonna work on this task for this long, like uninterrupted, and this is gonna go fine. Like if I work uninterrupted on a task for 25 minutes, regardless of where the task is in terms of completion, I know that I gave my best for those 25 minutes. And if I do this all day, I can end the day feeling fine because I gave my best entirely. Like if I haven't done more, it's because like what I can do is not enough to get to that. So and that kind of links to the next section of this talk that is if I'm not, at this point I'm not good enough to do more with the time that I have, even if I can plan a lot and I can manage a lot, but if I just don't have the skills, then I'm not able to do enough. So one thing that I'm preaching here is to try to learn every day, every week, all the time, keep learning so that you can, so there's like a feedback loop so you can do more with your time. So you can manage and do more tasks better. In terms of learning, I'm gonna separate this into two subsections. So things you can do as an individual. So yourself, anyone can do this and things you can do in your company. So as an individual, the first thing, again, this seems very simple and very straightforward, but sometimes it's not. Just be conscious and make an effort and take the time to learn. So if you don't take the time to learn, you'll never be able to learn anything. This seems like very simple, but it's not always, so I do stress that this is important. One thing that you can try to do, and this will really speed up your learning, is try to find a mentor. It can be in your company, if you work in a company where you have someone more senior than you or that you look up to, look at, like ask them if they can help you out. Outside of your company, even internationally, a lot of people, if you reach out to them, if they have time, they're more than willing to help you and guide you in like choosing what to learn because I feel that, I think Godfrey talked about this yesterday. I think this is one of the hardest things as someone that's learning is what to learn next. And if you have someone with more experience that you respect, that's a very good way to learn. So if you can, do try to find a mentor. Now in terms of learning, we have a lot of places where we can get input. Like we can read books, read articles, can listen to podcasts, attend conferences like this one. There's a lot of stuff we can do. So there's a lot of information out there. But how do we take this information and what we do with it is the most important thing. So there's this dichotomy between learning and doing and how much you should be doing of each. And so when should you stop learning and start doing? Because if you're just learning, if you're learning all the time, you're not gonna be able to apply it. I think this is true for everyone. If you're just learning, you're not learning the details of it. It's not sticking in your head. Like you need to apply it as well. So you need to strike a balance here. But it's super hard to know when to stop learning. So when have I learned enough that I can do something or when have I done too much that I'm just not doing good work and I need to go back and learn some. I'm a fan of this thing called just-in-time learning. And this is actually a thing. I didn't make it up. And what it states is that you should only learn what you need right now. And the reason for this is that a lot of your knowledge will probably become obsolete. Like if you're, for instance, if you're learning social media. Social media work and SEO stuff, that changes a lot. If you spend like a month learning it today and you only need to use it like two years from now, it's probably completely outdated. And this works for a lot of stuff. Like for instance, I'm now learning Elixir, but the goal is to get client projects in it and to do like real work on it. If I stop working on it, my knowledge right now in a year will probably be obsolete. Now, that being said, it's also important, I think, to not stop learning. So this very technical things and specific things, it's good that you just learn them when you need them. But it's also important that you learn a lot, like from every area of life. And like go out of your comfort zone, broaden your horizons, because that's where best ideas will come from. So if you learn from a lot of different things, that's the mix of areas and domains is I think would make the best ideas. So keep reading books, keep learning stuff. But also have in mind that this is not necessarily, so if you're going to read the book and you don't need it right now, don't necessarily think that you have to understand everything that's there or you have to learn everything that's there. It's more as a tool for you to have in your back of your head. If sometime you need it, you know something about it and you can relate to it. And you know where you learn that and go back to that. This relates a bit to what the panel was discussing yesterday about college, like in everyone not remembering pretty much anything that happened in college. That's not exactly true. You learn stuff and you can relate back to that if you really need it. Probably even if you don't know everything about it right now. As a company, and this is if you are in a position of changing your company culture or influencing someone who can. There is a lot of stuff that you can adopt I think as company-wide practices that will help make your company a company where people can learn. A lot of this what I'm going to go through right now is stuff that we do at Subvisual, my company, and my personal experience. So pairing, if you haven't tried it, you should. It's a good, especially good way of tackling new problems that you have no idea how to tackle. This is very good to learn. Even if you're at the same level, it's good, you're gonna learn something. If it's someone that knows less than you, it's also good. You're gonna see different things happening. If it's someone more senior than you, it also works. So pairing is a very nice way of learning new ways of working, new workflows, new, like in terms of the development, like new commands for the bash that people use that you don't, like new techniques, everything. So I really enjoy pairing people. Like now as a company-wide thing, we have four hackathons a year, and I recommend doing this. If you can in your company, just take a full day and do a hackathon. Doesn't, some interesting projects might come out of it, but even if not, it's just good for team members that don't usually work with each other to do that. So you have some cross-pollination of ideas and knowledge, and I think that's good, especially if you have a big company with big teams, like you can, people can know each other, they can relate, and learn different things. It's also good to work on different problems, different technologies, so if you're doing mostly the same thing every day, this is a good way to have an escape from that. Another thing that we do is, I call it development meetings, but this could mean anything. What this means is that we hold monthly meetings, and as of late, we start doing something that I've been really enjoying, and it's the, these development meetings are mostly a show-and-tell moment, where everyone can have like five minutes to show a small side project. New technique is learned, so it's a great way again to disseminate knowledge throughout the, across the company. So very interesting, someone is doing anything they can just go there, okay, I'm gonna show you this. Really enjoying it, highly recommended. Something we have been doing for a while now, we call them Friday talks, you can call them Monday talks, whatever. It's just on Friday, on the lunch, the company pays for the lunch, and someone always, someone has at least one talk, usually two, about whatever, like this is me speaking, giving this exact talk last week at the Friday talk to prepare it, but anything's good for this Friday talks. Every week, we have a talk about a topic, big or small, doesn't really matter. It can be management, it can be anything, so I would also recommend having this as a good way of sharing knowledge, and this is because of my company, we have like awear consultancy, so we have a bunch of small teams working on different projects for clients, and a lot of times, we don't work with each other, we have different technologies we're working with, so it's a good way for everyone to be kind of in the same page. Another thing we do is book clubs, so it's pretty much what the name says, it shows a book, and you read it as a group, and this is good, oh, and every week we have a meeting to discuss the chapter we just read, if it has exercises, we do them and discuss the code, if not, there's other things you can do, but this is also a great way to both share knowledge, and for me personally, take advantage of peer pressure to finish a book, because as there was talk, like someone said yesterday, I think, Godfrey again, he has, I also have the problem of not being able to finish books. I started reading them, and at some point, like midway, I lose interest, and this is a good way to have someone else like pressure you in a good sense to finish those books. Takeaways for this section of the talk is, again, take the time to learn, be aware of balancing learning with doing, because both things are important, and if you can, use your company as a learning catalyzer to help you grow, it's very good if you're in a company that is interested in helping you grow. I'm gonna interrupt this for a mandatory commercial break, where I'm gonna talk about my company really fast, so as I said, we're a consultancy based in Braga, we're opening an office in Boston, and so if you're interested in talking more about this, or consultancy in general, development, whatever, please do come talk to me, and also we are the organizers of RubyConf Portugal, it's happening in October this year, so you can buy tickets already, the CFP is open, if you want to send me the talk, please do. We have a pretty good lineup for this year, have Aaron Patterson, Martin Toller, you're the cats that are gonna be there, so I think it's a very nice conference, and if you've never been to Portugal, you should definitely go there. That was it, that's the commercial break. All right, now onto the last section of the talk, I'm gonna, it's the smaller one, I'm gonna talk about teaching. I didn't really talk about myself, but apart from my company, I also teach classes to different universities, and I teach at a local boot camp as well, so I have some experience teaching people Rails, mostly, the web in general, and this is some of the things I learned, and some of the things that I want to tell you about teaching, sorry. The most important thing, and the most difficult one, it was for me, and I think it's important for everyone that's starting to teach, is to leave your ego aside, like when you're teaching, and even right now when I'm giving this conference talk, I'm hopefully teaching you something. This is not about me, okay? This is about you, it's about people that are getting the message, and the quicker that you get to that mindset, the better you're gonna be able to teach something to someone. This is from Phil Collins' song, but in teaching you will learn. I really do believe this, this is very cliche, but it ends up being true in most situations. It helps you both get out of your comfort zone, helps you get beginner's eyes again, beginner's eyes again, which we sometimes lose that mentality, just like you've been working probably on Ruby and Rails for so long, that you do not see it from the eyes of someone that's just starting with it, and that's important as well. You'll be surprised how much you can learn from that. It's also a good way to meet new people, if you are teaching in the broad sense of the word, like in conferences, meetups, it's a very good way to meet new people. One thing that I really like to stress, and this is the most common people I think I see with people in general, is that they think they cannot teach because they have nothing to teach. It's never too early to teach, and there is always someone who is just where you were. Regardless of what you just learned, there's someone that is trying to learn that, so you can at least teach them. So please do teach wherever you can. It can be like a blog post, it can be whatever, like you do a short video, podcast, whatever you want to do, please do it. The world is better for that, I think, because sometimes the best teachers is not someone who knows a lot about a topic, because they can be completely distanced of what a beginner needs to know right now. I think that's why bootcamps, a lot of times take alumni from those bootcamps and integrate them into teaching, like the faculty, and I think that works really well. Now you can say, I have no idea what or where to teach, how do I do that? So in terms of what to teach, like as I said, wherever you're learning right now and you're interested in right now, teach that, like pay it forward. Now, where to teach? You can look at the community in general, there's loads of places where you can teach. You can teach at universities, probably the hardest one to get in, but if you can, if you have a CS degree, go to your university, ask if you can teach, I don't know, there's a couple of things you can do there, but if you can, or even, so this is my university, it's me giving a crash course on Rails, it's not actually a class, so there's always workshops and stuff that you can propose in your local universities. You can talk at conferences, there's a lot of conferences, okay, and you can submit talks to them and sometimes you get accepted, like I did to come here, which is really nice. You get to know new places, new people, it's a very good way of sharing and getting something out of it as well. If there's a bootcamp where you leave, you can try to teach there as well, we actually created one, and so this is a picture from that. So this is, again, a way you can teach, this is very intensive if you ever try to do it, but it's a good way to teach people. If you have local meetups, you can try and speak there. Usually meetups are desperate to find people to speak, so if you have one here, this is a very good place to start and usually a smaller crowd and that's a place where you can improve your speaking skills, test your talks, so I again recommend talking at meetups and if there's no meetups, then just start one. That's what we did in Braga where I live. Again, Friday talks, coming back to this, a very good way to improve your speaking skills and a very easy way to start speaking because it's, in your company, to your people that you work with every day, it's very easy to get in, like there's no approval process or anything, like it's pretty easy to talk there. Mentoring, if you can do it, like one-on-one mentoring, stuff like that, we have some of it, like we have an apprentice program and that includes a bit of mentoring, I don't have any pictures though, but if you can and want and feel that, you can help someone, please do. There's also events, all kinds of events related to programming where you can teach someone something, like this is a picture of Kodor Dojo, I don't know if you've heard of the, like this is an international thing, to teach programming to kids and this is happening in my university, yeah, we also started this and every Saturday morning, like kids go here and they can learn to code, now they just got Raspberry Pi's and they're gonna do stuff with that, so it's an interesting, another interesting thing you can do, if it doesn't exist, you can just create it as well. Now, takeaways from this section is that, I think you should care about your students, as I said, put your ego aside, this is about the people that are learning. There is always someone you can teach, I see so many people that have very interesting stories to share and very interesting knowledge and they're just afraid that no one will care or that is not good enough, it is, just share it and actively look for places where you can share that. Now, all this I've said is very good, but it's also okay if you don't want to do any of this, but you do have to be prepared to face the consequences of that, which I feel is or are that your knowledge can become obsolete or too specific and this becomes very hard for you to change jobs or if you get fired, very hard to find a new one. I see a lot of people that just have this knowledge, this is what I do, I work nine to five and I don't care and that might be problematic or not, but just be aware that that might be a thing. One of the major things that you will not do, I think, and this I think is important, that you will not build your personal brand and I don't know if this is stress enough, but having a personal brand is very important, like being active in social media and by social media I also mean like GitHub, which is kind of social media right now, but so having open source contributions, being active on Twitter, talking at conferences, putting yourself out there is very good, like you'll know a lot of new people, you put yourself in a position to meet new people, probably working at interesting places and if you ever want to change jobs, you probably can get a better job than you would if you're just sitting at home watching TV. But most importantly of all, I think you'll miss out on the joy of learning. At least I feel this every time I learn something new and I can apply it and it works, I'm very happy. So at the end of the day, I think that's the most important thing, you should be proud of what you do, you should be happy and I think that's what we're all for here, so thanks.