 There's a problem. I'm I'm used to teaching classrooms So I'm used to shouting a lot because we in Moldova don't really have equipment like this, you know So if I'm shouting just to do this It works for my students So hi everyone, welcome to day one of Eurocam, I have the honor of breaking this My name is Ivan I work at the technical University of Moldova out of all places and I teach things like design patterns and such right before I start Talking about some of the experiments we had in the University I'd like to provide you with some context about where I come from and this is Moldova. This is Kishineau The IT industry in Moldova is primarily based on outsourcing Which is a bit different from what you have in innovation based industries or product based industries, right? Because for our country, it's very good Because it creates a lot of good salaries a lot of job positions right where people are paid very well Did I break something again? Not innovating a lot as you see Okay, good It creates a lot of good salaries, right? It It also because all of these jobs are usually accessible to everyone They also have a very low barrier to entry so you can basically write a bit of php. You're good to go You're good to have a job right for as an educational system It can be a problem because it also has a bit of a darker side to it a Lot of our students who come to the university are studying for the wrong purpose They only need to have a degree and not to have all the knowledge necessary for the degree, right? Can you hear me? Okay, this is better. I broke it for everyone else. Yay So getting back to the outsourcing industry and how it works for our country and for our university is that? Unfortunately, a lot of students are getting into the university for the wrong things they want to get a degree so they could apply to their jobs, right and Moreover because the barrier of entry is so low a lot of students already work While they are studying so they don't come to classes and this is a very bad thing for us as a university, right and Of course, this is a systemic issue We need to address it as a systemic issue However, as a small team at the university would try to switch the focus a little Instead of punishing the bad performers We thought of why wouldn't we provide more value to For to incentivize people to come to our classes Why wouldn't we give something that would be immediately applicable? So if you work right now at a Drupal shop, right and you come to the design patterns course you need to have something that you could apply today and For us as course designers, it means that we need to synchronize very well with the industry and Identify what is important from the industry so we could incorporate that into our curriculum Cool So let's find some things we can teach of course the first thing is the actuals are the actual subjects But for me design patterns have been the same for quite a while So what else can we give? Well? This talk will focus on two things skills and Values so skills that we want to have as an industry and values that we want to to believe in Of course while teaching skills and values We also have to make it fun and a bit of engage in engaging for students But always keep focusing on the fact that the skills and the values we pass need to be relevant to the industry So let's start with skills What skills are relevant to the industry that we can incorporate in our courses? And this is a pretty tricky question because it demands an objective answer now I would rather twist this question and pose a different one What skills instead of trying to identify what skills are important for the industry? Why not identify what skills are important for me or rather what skills? I would like my next teammate to have my future teammate right because we've all been Frustrated with the fact that someone comes along and they don't they don't know how to Google things or something else, right? So what are the skills that you consider important for your future teammate? I've tried to identify a couple For me it's reading the source code or not being afraid to dive into the source code Another skill I believe is debugging Right people. I think we need to debug and we need to teach debugging and We need to put people in positions where they have to choose tools. This is a skill that can be trained So going over them one by one. I'd like to discuss some of the examples we implemented As course designers in order to well facilitate these skills so Reading source code the most important thing about reading source code is not being afraid to go to the source as an authoritative source, right? This means that we have to do some life coding classes and The life code experience while we're teaching right and we're writing code life Actually eliminate some of the barriers that students have Because they see the typos we make They see the fact that I write pretty bad C++ code and They're not ashamed of it and they also are Engaged everyone is because they can write the simplest class They can tell me how to write it another way we could We could train reading source code is by giving Assignments with source code and not with a couple lines of it, but with a couple of files Then we can jump a bit further and show actual code to illustrate a concept For instance, well, I teach design patterns I found a little gem on on github. This is called YouTube DL It's a program not too small not too big It's a Python thing that downloads videos from YouTube, right and a couple of other places and during the course We took this thing. We had to read the documentation To go look at the source and see how to extend this app And this was exactly what was the strategy pattern So it wasn't a textbook example, but a live real example The second skill is debugging and by debugging. I don't mean attaching a debugger or setting break break points, right? I mean digging Digging into hard problems that are not at the surface. This I believe is something that is missing from a lot of engineers these days or any day And here's an example we used in class during debugging Right this is How the high scores leaderboard for flappy bird looks like remember flappy bird, right? It was it was one year ago the example. So it was a thing this is The highest score you can imagine that it's a couple of universes old and This is an interesting debugging question Because when we came to the students and when we asked ourselves How did they get this right? This is a software issue This incentivizes students to to dig a little and to find out how could they actually get this and while digging They develop a couple of other skills as well so to Teach debugging as a skill. We need to provide a good context an engaging context for students we need to teach debugging as a whole and That way we will have a couple of other skills developed along the way for instance googling googling is an important thing, right? And moreover in this very example, you're not Always thinking about googling how to convert 64-bit integers into something something, right? So that's debugging good tool choice We have a lot of pressure in our work because there's a lot of tools available and we need to choose them and Especially when we choose the wrong tools, we face pretty dire consequences for our projects, right? Sometimes so what if we could Help the students choose a tool and Eliminate the risk and the consequence Thus encouraging students to be pragmatic and reasonable in their choice This will actually provide them with an experience of choosing tools without the risk itself And then let's have a discussion About why did we choose a particular tool? For instance in our class we had to choose a Ruby HTTP library And there are 27 projects listed on Ruby toolbox This is something you need to go through a couple of times and then it would help you do that in real life So getting back to the skills. We have three skills with their respective examples We have to read the source code We have to develop debugging skills and googling skills and We have to go through an experience of choosing tools values Remember with skills, right? We had to identify what skills are important for the industry The same thing applies for the values, right? What values are important for the industry and we can of course Apply the same approach to Asking what values do I want my future teammate to have and for me? Here's a couple. I Want them to be able to appreciate constant progress over Larger jumps, right? So slow and incremental things. I Want them to think in concepts and not in particular implementations or in code and I would like my next teammate or my next pair if you will to be able to own their code to claim ownership of the things they built and This needs to be somehow integrated into the curriculum. So let's start constant progress The main thing about constant progress is that When we try to teach test-driven development, we focus on the test parts and A lot of the times this especially to students or to people who already work and who have already seen tests This highlights a different value of test-driven development that it helps us get rid of bugs whereas the the whole Why do we write tests first thing is that we Set small milestones and we get there, right? We take the bigger problem with split into smaller chunks and we take them one by one So how can we encourage that in our students? We can give them a program with existing code and tests They're not familiar with tests yet, but we can tell them Hey, if you run this in your IDE or if you run this script, you'll get a grade, right? The more green you see the better your grade is which is good. We conditioned Then we can give a program without code But with tests and you need to write the test and you can use the tests as a guiding tool for your design Then we can give you a program to write and Some students were so comfortable with the approach of incremental building that they had to write their own tests and Without highlighting the value of hey, it gets you rid of bugs We could I send incentivize students to write tests as An example they had to explore the builder pattern in small talk So they had to see a lot of green if you make all of these green you get the highest mark, right? Which is okay next value concepts over code a Lot of times when we speak about concepts and not code we try to make this this is a singleton in Java Look like this. This is a singleton in Ruby So we try to give all the possible implementations of a singleton and say to the student hey This is pretty much what it looks like try to distill what you need from it. I Tried that it didn't work very well what worked better was having a discussion and Trying to come up with metaphors and Being frank about the fact that hey, it's hard to take the singleton pattern and apply it to your JavaScript job Because you need to know lots of other stuff It's hard because we cannot introduce the same concepts of module pattern or things like that to someone who writes Java or Android right or sometimes we can even pair them and Help them identify the concept from the code so if you have someone who writes Android pair them with someone who writes Python for a living and Make help them Identify the pattern from the code and the last value. I think is Important for us as an industry is owning code a Lot of the times when we teach these or when we Have these best practices right or patterns or things like that They are because our industry as an engineering practice is slightly different than other industries the product of our creation as opposed to this very building Changes Radically changes over time and this is why we develop these practices that helps us design things for change now The important thing here is that when we teach the patterns themselves We don't incorporate change We don't build bigger things. So let's try and build bigger things during the course and incorporate change Try to change the requirements as a market would and then you will get a different kind of reward as A student you will get ease of maintenance and you can get features done quickly right, this is the reward and Otherwise if you cannot get the features done quickly You will feel the pain of poorly designed software without having to actually risk your business for it as an example last semester we had to Write a markdown parser so students got a subset of markdown a bit of custom markdown and They knew that there will be changes so they had to Upload their code Receive the changes to the format so something was different and They had to implement those changes as quickly as they could so back to the values. We had appreciation of constant progress We had concepts over code and code ownership Of course these things coupled with skills give a lot of our students Some of the things they need to apply today. However, it's boring Right, it has a lot of bullet points. It's boring so we need to make it fun and This is Alex say the chinchilla He is my ultimate tool of making things fun Doesn't work very well, but oh well For example, I tried to add a bit of stillness in the assignments By integrating the chinchilla For example, Alex is a bit older now, so he needs to make a family. So he wrote himself a dating app that downloads pictures of chinchillas from all over the internet and Since he has a 2g connection He You have to optimize the app basically, but he wrote some tests too. So he's good at that so While you're building this app, right? Well, you're solving this assignment. You have to look at a lot of chinchillas and You're sitting there at night, right solving the assignment for the course and then you see this And then you need to figure out what this is Even later right when they when the Sun is almost up you see something like this And you get to class you submit your assignment you go like you're very tired and such And then you have a thank-you note from Alex say the chinchilla because you helped him This makes it a bit more fun So these are skills and Values that are important for the industry and we have to wrap it them into a bit of fun However, I think there's something missing here I think there's something missing that defines us us the people who are here at uru camp that have something special than other communities do and This is the spirit we have the spirit that is better defined as the hacker spirit, right? the our way of taking things apart Putting them together seeing if they work Right changing things if even if they work properly Displaying curiosity towards new languages. I mean look at the look at the talks here. It's new stuff Continuous exploration and when you encounter something that doesn't really work for you. You just hack it Right. You just change it. So it would solve your particular problem and you can hack anything In our example Our teaching curriculum didn't really work for us Our way of teaching didn't work for us. So what we did was we took the Hacking philosophy and we applied it to the thing we knew which was teaching and as a matter of fact This was a very vivid example for our students because we're very open about it This was a very vivid example of hacking itself Because we were open and we said hey, we're not sure. This is the way it should work, but let's give it a try and It actually thought a bit of hacking While we were hacking teaching Thank you Do you have any tips how to convince our teachers at our universities to make something more applicable? This is a very good question. Can we make our teachers or help our teachers at our universities? Make something better. Is that correct? I believe we can we can't buy inviting Teachers here at Uru Camp by sharing the experience and being absolutely frank about the fact that the industry is moving at a much Faster quicker pace than the academia mostly but also it's It's very neat that some of these techniques and some of these skills and values are applicable to other ways of teaching like like Rails girls or or or Hack days or things like that and I believe we we as a community can can focus on Trying to incorporate these techniques or other techniques that we consider important in a newer format Something that maybe is not in academia Any other questions I have two minutes left so I can dance. Oh, come on Thank you