 Mae yna nôl agor rhywbeth leirio yng Nghymru? Mae hynny'n gweithio fod yn ysgrif iawn, yn ysgrif iawn, yn ysgrif iawn, yn ysgrif iawn, yn ysgrif iawn. Rwy'n gweithio'n ymlaen o'r proiectau oherwydd mae gallwn yn gwneud i'r fan y phall Wael, ac yn mynd yn ei wneud yn wneud iddyn nhw yn fwy'n gwaith. Mae wna ychydig i'r fan y ffaith wael ac i wneud i'r fans, yn y ffordd a ffordd i'r baprwygiad, here. Mae hwn yma yn ei ddwyllach. Doedd yna, mae'n rhan o'r ddaeth rhai. Mae'n rhan o'r ddaeth yr oedd ymlaen, rwyf yn gweithio, mae'n ddysgu'r meddwl am y cyfnod, a'n ddysgu'r meddwl am Ipwnespan iedwch i ddrwmae, mae'r ddysgu'r meddwl i ddod, nawr mae'n ddysgu'r meddwl i ddod, mae'n ddysgu'r meddwl i gydag y byddwch yn y ddod. Mae'n ddysgu'r meddwl i'n ddod, mae'n ddod o'r ddod o'r ddod o'r ddod, ti'n gweithio hwnnw i yw'r ffordd, i gweithio hwnnw i gweithio'r ffordd, ychydig yn ddechrau, ac mae'r ddweud, ac y ddweud sy'n ddeg yn ystod, mae'n ddeg yn ddechrau i'r ddweud, ac mae'n ddeg yn ddeg yn ddeg yn ddeg yn ddeg yn ddeg. 1. Dyma'r cynnig. I do not endorse any of the names that I'm going to put here. There are open source products, there are pay for products. They are just simply convenient for if you are a small team or you are an individual. I don't endorse any of them or any of the brands that I showed at the beginning. And it's an opinionated talk. I will try not to swear, but sometimes I get carried away. So, spare with me. No kids here now. And in Bristol last year, some of them are not here. But one guy took his kid to one of the talks. I wasn't talking about that, but he was like, whoa, careful. These frames, something that I learned in engineering, I've seen here repeat, repeat, repeat, and I have very clear, we make things as badly as possible, as bad as we can do it, but not worse to the point that they will not work. And I think you can see that in every machine that we have built and probably most of the projects are the successful ones that are there. So, let's start with the advice. All the advice that I'm going to say here is my personal experience, may not agree with you in any way. But just in case, I recommend you to wear sunscreen. You know, it's been proven by science that it will be, at least you have a bit of good advice in this. First, we are all in the business of selling. The sooner we realize that, the better. That's the only business in the world. That's the only thing to do, sell. The sooner we realize, the better, as I said. And I'm going to try to expose some ways of streamlining that and make the most of that. We are not in the business of developing. That is something that we decide to sell. So, let's try not to waste too much time in that one. An important thing that I've realized after working for big companies, for small companies, is do not sell your time. Sell the product of your work, know your time. And I think that being a small group probably will be your own group. Maybe you are freelancer. You can do that. Is, again, go back to selling. You have to negotiate how you are going to sell that. But my own experience is do not do body shopping. Do not sell yourself to sit down in the client premises and be there for anything that comes your way. I think it's a waste of your time. We can talk about that, but as I said, no time. Well, small is good. I work in big teams. I've managed large teams and now I have a small team. And I think it's the best thing to do. It's right. You can focus the team. You can do things much more fluent than big ones. I've scaled back or down. And I'm very, very, very happy with that. I recommend to keep it that. I moved to London to go into big projects. I've done big sales, big projects in Gavling, and things like that. There is no much difference with small projects because big projects will see, have constraints that will prevent you from doing some things. I'm going to put some quotes here and there. This is what I felt. Oh, my God, yeah, I'm going to be part of a big company with a big project. Is that stronger? Is that better technically in any way? No, now it's quicker, easier, and it's more seductive. But it's not better. You don't have the control that you have with your little team in your projects. And to me, that's important. That is very important to have that control and have that direction on my life. One of the reasons is in big companies, I've experienced again and again and again the broken telephone effect. There is a massive change between what the company, whoever represents the company once, and what we are doing. Loads of teams, everybody talking in different directions, everybody with their own agenda, with their own interests, and in some of the projects I had the feeling that nobody cares about the project. Everybody cares about their agenda and not being fired or passed the blame to one of the other teams. With the small teams, no, that shouldn't happen. Four or five of you are all in the same group and you should really focus and clear that. Yeah, this is what happened. Basically, when our big companies, when the deadlines approach, you are running out of budget, but everybody starts being afraid of losing their jobs and what it leads to, you know, the amount of suffering. Just, you know, recommending you to avoid that, if you can. Another thing that we have is our industry is cheap. Coding is cheap. We realize or not, I have the conclusion that, especially if we are doing body shopping, I don't know if it's an English term, we use it in Spain, you are basically transforming yourself in a modern slave. You are just selling your time for everything and, you know, think about that. It's not a good idea that paying you every day to sit down in an office is something that was invented, I don't know, 18th, 17th century, probably when they started paying people, and I don't think it matches 21st century and certainly it doesn't match what we do. I'm very bothered about having to do a project sitting in an office and then resolving all sorts of collateral problems, you know. Yeah, we have agile, anyway. Well, whatever works. I have all sorts of expressions, experiences with agile. I have loads of opinions about agile, but we cannot enter into that. This is something that I've seen in many, many big, big, big projects. Oh, we have a big project. We have 12 developers, three designers, 10 managers, I've seen that, don't know why, things big, 20 developers I've worked with. And when you arrive, normally I have the good or the bad luck of being called to resolve triple problems. I've been in here for a long time and when you arrive, everyone has started at the same time. The project definition, the specs, the architecture, the developers, and it's crazy. I see it all the time and people that do this justify that to me, well, this is agile. So this is one of my comments about agile. Well, first solve the problem, then write a code or do the rest of the things and that's something I see very, very, very little. Again, being a small team, probably working with a small client, doing that is much, much easier. Yeah, but even being the chief industry and so on, at the end, what projects cost more and take longer than building a house? The average time to build a single family house is like six months in the United States. I guess here is approximately the same. It's probably cheaper than building a website for a public institution. This is, I have some theories about why those things are. One is the bicycle chain effect. All of you have heard about that. Nothing to, no? Okay. It's basically an effect that happens in management, if you want. When you are discussing a project, it was represented with the construction of a nuclear power station, then the discussions around the technical bits about how to build a nuclear reactor are very technical, very complicated, and they were resolved in like five minutes in anything. Yeah, yeah, yeah. Okay. Do that. Engineers take care of it. And then it has to be discussed to build a bicycle shed in the entrance of the station for the people to build bicycles. Everyone has an opinion about that. Everyone knows about colos, about how to build sheds. It's a problem that is perceived very easy. So everyone has an opinion, and that goes for ages. Nobody agrees and so on. This is a business. We've been, we've been. Someone has been selling since 1992. Eh, anyone can do this. This is easy. This is super easy. And all the tools that we develop framework is like easy like before. Easier, less effort. And everyone involved in projects and this is reading how everyone writes in blogs. Whoa, this is easy. This is super easy. Or you should do this and you should do that. So everyone has an opinion. It makes a work, I think, difficult. And in big companies it makes it, it creates a real trouble. Another thing is the Pareto principle. Everyone has heard about that. 80, 20. Yeah, everyone. Perfect. So yeah, also, I am very much into that. When I get to a project, I challenge specs and requirements to death, to the point that I become to death, because I don't like the Christmas lists that normally clients prepare for projects. It's a bland sheet of paper. They want absolutely everything. They really don't know what they want. They want everything. So I try to distill that 20% of what you want will do 80% of what you really need. And well, the example is Google Docs and Microsoft Word. Who here is using Microsoft Word? That's what it really goes to the world with those. Yeah, I moved to open office, liver office, and then I moved to Google Docs and I didn't look back. I mean, I don't need any of the things that the extra offer that is not in there. So that that affects as well. And another one is Netcouch Law. Everyone has heard about this as well? No. This is basically the complexity of the interactions in a network increased exponentially with the size of the network. The bigger the teams, the more relationships, the more teams involved in something, the more relationships are, things get complicated very, very quickly. Especially when you are in a company, telephone broken effect, many teams interacting, you go into Agile, Agile is a lot of communications and suddenly the company finds out that they have meetings all the time between everyone if you want to keep things coordinated. So all of this and last but not least, playing but planning. I think humans have very, very bad plans. And are there managers here? Okay, I am a company. I'm managing people, but you know, I normally blame, you know, like the Pareto effect. 80% of the problems have the source in 20% of the team and that 20% is the management team. I say this opinionated, but again, planning is very important. Forget about plans, you know, but put the time into planning, put the time into planning before throwing yourself into the code. Also because, you know, as soon as you get the, you know, get going, your plan won't survive. But as I'm going to say later, you know, a bad plan now is better than a perfect plan next week. So, oh, I have another one. Yeah, if the plan doesn't work, change the plan, but never the goal or the requirements. Okay, about things that I use every day. I use checklists. The aerospace industry is built around checklists. You believe it or not, the airplanes are built with checklist, list of things, tick, tick, tick, tick, done. All technology, very reliable. The pilot cockpit procedures for emergency operations, they are checklists. Is reliable, works, use it for absolutely everything. Very simple. Everybody understands it, is it going to implement? I use gang charts and I've been, oh, this is how you don't do this, discount from engineering, but we need to control the work allocated to tasks and the dependencies between them. We have to give the developers a view of that because this is how I do that, just post this. Tasks, days with the developers, I can allocate them very broadly, but gives everyone the idea of the time they really want, they really have to develop something because the Parkinson's law that basically says that work tends to fill the time we have to allocate it. So, if we have a sprint, everything is perceived to be done in that sprint when it's not true. We have to perform the things. And I haven't seen any other tool that does the work better than this. You have project management tools that will do that automatically, but if you have a window and post it, you're done. So, things that I think we need as a small ones, well, you need testing. You need automated testing, you do that. That's something that we cannot leave without and that is the first thing that we throw out of the window. I'll talk about why I think that happens, but remember you need this. Also remember that after working in aerospace and here, the only valid reference to determine if something is good is if it's maintainable and if it's reliable. The number of features and now nothing to do about that because when it's been used, this is what is going to the telling that that product will succeed or not. We can build a million features. I had a client that had, I don't know, ridiculous number of features. The payment process was insane because they wanted to incorporate in everything. The management on the content was crazy. Won't they start using that? They start calling you, oh, by the way, remove this. Oh, no, we don't want permission. Workflow. Did we say workflow? So, you know, challenge your client and to make sure that you build something maintainable and something reliable. Reliable is simple. Central India's reliability is complexity and simplicity is a prerequisite for reliability to the two ways of saying the same thing. Yeah, I have to show this. This is the motorbike of my father. Now I have it in Spain. It's 45 years old. It's very simple. It's absolutely reliable. Hasn't ever broken. You know, we don't do things like that anymore. And I think what we experience in the rest of the industry, we are suffering from that ourselves. We want to add lights and things. Just remember that. At the end, a happy client is going to be happy alone the time they use the product, not when you give them the keys and they see all the lights. But when they are alone at night trying to figure out how to do things and if the product doesn't break, you know, okay, they may not call you to fix it, but personally, I'm not in that business. I'm in the businesses of resolving a problem. I like to get into a client, whoa, what is your problem? I'll resolve that for you. What I don't want is you depending on me and calling me at night and to sort. No, no way. That's for others. There are other companies to do that. But I do my projects right. So those companies won't have to do much here. But that's our personal philosophy, not everyone agrees with this. An interesting thing, just a fact. How can we quickly estimate the cost of unit testing just to have a quick practical thing? Well, we can calculate the end-path complexity. That is the number of unique parts in a routine and is the minimum, basically represents the minimum number of tests required to completely test a routine. We have tools. I'm going to talk about them later to do this for you. These common line BAM numbers. Example of Drupal 7. Entity load and plaf 2. Wow. In theory, we have two tests to prove that. All of this is from ISE Maxwell. He has a complete presentation. Development by the numbers is worth watching or reading anyway. It goes around this in formal detail. Drupal 8 to be replaced. This is insane. It's absolutely crazy the way it's done. So this is a simple way or a very simple tool that we can have to help us in our design to review the things as we are being done and to prevent. Oh, yeah. I add a new method here or a new loop or what. Think carefully about that. And you don't need continuous integration. If you're a small, you can do that. Very simple. Continuous integration is a script that blah, blah, blah, blah. That would simplify your setup. You can have it. I'm going to talk about the tool to do that. But we have trophies. We have all of these things. They are fairly easy to implement. But if you're very bothered about that, for as long as you do the tests and you run the tests when you send a code, you can do that by money. Testing is as low. Everybody criticises. Oh, simple testing in Drupal 7 is so as low, blah, blah, blah. Yeah, it's as low. Oh, we should use testing framework, blah, blah, blah, JavaScript, node, blah, whatever. Because it's super fast. Yes. It's super fast when you are testing one thing. But when you have a content, a site with loads of pages and loads of things interacting, the tests become large and everything is slow. That's what I found. I haven't found a tool that after months of development and automated tests, it just tests like an hour, a test of two hours or whatever. So, you know, your continuous integration is going to be slow. You don't need cloud. Local is good. We'll see some tools to do things locally. I don't know why you put this here, but, you know, good and now is better than perfect and tomorrow, tomorrow never comes. Oh, yeah, this was because of the testing. I would rather start having imperfect tests with an old tool, selenium or whatever, now rather than wait for the perfect test architect that brings into my team and build the thing correctly and then I finish the project and I don't have tests. And I've been there. And this is true for, I say, cold, interesting and in love. Yeah, when you are in small team, higher professionals, well, or people with some experience, or if not, just, you know, bring them on the run and help them to grow with you. This goes also for the need of making sure that there are some things that you have. You have a lawyer or you have the telephone for a lawyer. You may need that or an accountant to remove things that you shouldn't put your time on, you know. And this is something that I think you need. This is how I approach the projects and why some people try to kill me many times. I like to turn the building process around. I arrive to a place and people have hired wonderful designers that have many prices that design something with the marketing department and the CEO and blah, blah, blah, and then, you know, bring it to us. Yeah, you can do that in agile, I don't think, but my experience in design agile without this external design team and so on is difficult. We did something brilliant in Selbang Centre with internal team, but that's for another story. So instead of building something and then build it with a tool, I can do that. Oh yeah, okay, we'll do that with symforing or with cold igniter or with pitchlead, whatever you want. But normally we are here building a good tool, but we have restrictions, we have limitations, and we chose it because it gives us some things and it doesn't give us others. So my approach is doing it the other way around. Oh, you want a tool, give me you space, your requirements, your user journeys, whatever. I do that with Rupal in no time. We test it, we validate it. If it works, designers, you have to make this beautiful if you want and polish the UX and blah, blah, blah, but this would save weeks of work. It's difficult, nobody wants to do that, okay? Nobody wants to, everybody wants to see something beautiful early. So I'm not the only one, and I've been doing this since I was in Spain in 2009, but there is an article of phase two that talks about that, and there is an article of promubics that talks about the same. So I may not be, I may not be that crazy, you know? And one thing important, we are small, just make sure that we understand the basics. So there will be very few basics that will help us to build on top. Don't bother about knowing every single password and reframing of, you know, because if you need the basics, you will be able to solve and put things together without relying on them. Very, very basic. HTTP protocol, just get to understand it, especially HTTP2. Still, I see many projects working with HTTP1. Well, you can, there are plenty of implementations that will solve lots of your problems. One problem that I see is that there is a problem in planning. There is a problem in design. There is a problem in infrastructure or systems. And I don't know why, always, the design, the development team ends up fixing those problems, developing them. And this is very common. So understand what's cashing. You can figure out many ways of cashing things pretty decently. And Drupal has very good tools for that. Technical depth. Understand technical depth. Is not, do something wrong knowingly and then, well, we'll see, take the risk. No, no, no, not really, not really. We shouldn't do anything wrong knowingly. We should do everything as best as we can. The technical depth should come from a partial understanding of the problem that at some point in the life of a project, that could happen. So we develop something with not complete understanding, but we develop it as well as we can. So I have another talk about technical depth. So sell, sell, sell, sell. First of all, you have to find your unfair advantage. All of you have something that is natural to you and do better than others. Find it, find it and use it. You know? Yeah. What's the time? What time do we have to finish? I won't tell you anything. Every client thinks that these are unique unicorns. Every single client thinks that they are unique and they are wonderful. No one is. No one is. Everyone is the same than others. Remember about that. Okay? Build your proposal and sell it. Sell it and sell it. That's what companies do. No other company except development companies reinvent everything every time they have to sell it. They build something reasonable. It's something that they know very well. Okay. And imperfect. Yeah. Fine. But they sell it again and again and then convince the client and they meet the common points with the client. Do that. Do that. Don't fall in the trap of rebuilding something new for every client. That's very expensive. That will make all of you profits very... So no one is. Yeah. Minus expectation through the client. Time to market. Beats, features, hand down. Make the client understand this. Yeah. This is what I say. Build a product and blah, blah, blah, blah. You have to learn. You have to know your product. And this is very important. Lie. Lie about your professional standards. Lie to your client. Yes. Don't say, oh, so much time developing. Well, that's also a trick. Oh, you have to tell me how in detail how much time you are dedicating each one of your tasks. That's a trick. But you know, oh, I do all of this and why have you taken so much time? Well, because I have to do the architecture and I have to do the coding or whatever. And then I have to do a testing. What's that of testing? Well, you know, we have to test. Why? Why? And then you have to test because you don't do things right and blah, blah, blah. When we start in that conversation, client always wins. Project managers always win. You must know that. Sorry. It's very easy to corner the developers because of that. We try to be good guys. We try to please if you want. And it's very difficult to tell someone, no, I cannot do that. That cannot be done because we know, well, you know, call this free world, no limits of physical world, blah, blah, blah. Lie about that because then they will decide what you have to do, test that you don't have to do. And this is what happened in other industries when that occurs. This is the Taiwan earthquake. One building collapsed entirely, killing hundreds of people, and they saw that inside of the concrete there were teams to reinforce the concrete. Did an engineer agree to this? Probably not, you know, project budget restrictions or something like that. And this is what happened when we don't test. So tools quickly. Know your tools well. Don't change tools every year. Don't use the latest fancy thing, you know. Do you use Apache or NG Next? Whatever, but not well. In vision, well, this was to sell a funny story about this, but we don't have time, so. Some miscellaneous tools. I will go fast. Ansible. Ansible. Everyone knows Ansible? Yes, use it. This is all that you answer here. Okay. Quality analysis, PHP tools. This is a site that gets all of them here you will get. Lovely. Task runner. Task runner. This is my task runner of choice. This is a PHP task runner. You can do your continuous integration with this. For example, your deployment, anything that you want. Choose something that will help you. In general, a good source of PHP code, independent migrants, the league of extraordinary packages. 10 minutes. I use PHP storm because it solves the problem you have to pay for. Big bucket. Big bucket. You can have private projects for free. Dropbox. If you develop it locally and you put your things in Dropbox, you have backup for free also. Drupal development tools. Trust commands. Everybody knows about this website. Very easy. I'm convenient. Well, of course, use make. Make. Make. If you do Drupal development, you do make. You do profiles. That's how you do the products I mentioned before. Drupal VM. Nice to have virtual machines in local. Like magic. It works pretty well. Has loads of staff. How about that? Deploy your throne. This is getting stale as apparently no one is developing there. But it was a way of a philosophy of deploying Drupal scientists was looking into that. Profile builders. As I say, build your profiles. Build your tool and reuse it. Reuse it. Reuse it. Master. Master is a very good thing that gentlemen over there introduced me to allow you to have different environment configuration in your project. So you can see the code and switch things. I use paragraphs abundantly at these days. Yeah. The bug in tools. Extra bug. Extra bug. Uses the bug. Uses the bug. User IDE to have this inside. BHP, the bug. Is into go now. Have a look at that. You have 5 PHP. You have block 5. Performance testing is new. Online service. Interesting. Pay. Paperwork tools. Contract. Anyone know about the contract killer? Check this URL. A contract written for humans by humans and developers. I do all my content now like that. And the client is finding it very funny. But how about you? Testing tools. Millennium. Interesting project. Doing testing. Oh, this is what I mentioned. PHP continues integration. It's an online service and you can, it's open source. You can host it and use it yourselves. Some performance. Low testing. We have a patch of benchmark. Make sure that you have weight HTTP. It's from the light HTTP server. Very nice. And you have worker. Down from the guys of engineers, I think. Anyway, some design tools. Style tiles. I use pencil project to do UX and prototypes. I do music charts to do my diagrams online. Pay for. Interesting resource about UX myths to have conversations with your design guys. Well, here we are. Question. Which Drupal? Shall we use? Well, this is how I see the different Drupals these days. Where Drupal seeks where? What type of things that I did with Drupal seek? I started before. Types of things I've done with Drupal 7. I've reached enterprise. And the type of things that I think are the type of people that will, will cater Drupal 8. So I wanted these because, you know, if, if, if, if we print the code of, of Drupal 6, 72 lines per code, we have 700 pages book. Imagine Drupal 6. If we print Drupal 7, we have three books. Imagine these are 700 pages books. And you know where I'm going. If we print Drupal 8, I expect that the bigger books were going to be bigger than this will do. We have. No, we'll talk later about how I did this. But interesting thing is that there is something in between. Drupal 7 will not be supported. That thing is backlit. Okay. It's slightly bigger than Drupal 7. Fairly easy to work with. Maybe, maybe for small and medium projects, it will be an interesting option. I don't know. This is the same graph than above in lines of code. This is the numbers. I, I used to see that one volume, three volumes, four volumes, 24 volumes, a million lines of code. I'm just saying I'm into Drupal 8 as well, but choose the right tool for the size of the project that you are in. Well, tool for cyber monitoring. Sensor, monitor, logs aggregators, logistage. You have to install it yourself, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah. Paper trail is very easy. Not great, but very easy. This looks very interesting, but the easier I found out to set up, you have to pay for. Eventually it's lovely. You can send your logs to there and you have a web interface to manage everything. It really, really helps. And for searching my last thing, elastic, don't do anything with anything different. That's my advice. Elastic probably is a piece of technology that surprised me more of everything I've ever seen. It really works well and it's really, really powerful and really, really simple. Again, if you want to do super things, things are complicated, but well, that's it. And wow, yeah, finished. We have four minutes for questions. Sorry? Solar versus elastic? Elastic. Do you have the depth of features that you can get from solar? Yeah. You have such API, but I don't link it because I have my elastic ones. I push my things as Jason and then I do everything with elastic independently. But I work with the paid project. It uses solar for the search and to do loads of things and it was hell. I had to rely on solar guys and it was impossible to understand. And after it was done, I don't think they even themselves understand. Later, I came across with elastic and I cannot get tired of installing it. I have a team of contractors. We are a team of peers. It's a different organisation. I make sure that we get enough projects to keep going because I want them to keep working with me and I paid them more so I don't have to deal with the social payments or whatever. They are being paid more and I counter them. We go for closed projects if you want. I sell a client to closed project with a margin and that's what we do. What I want is one of the things I like from agile is commitment. One of the things I like from agile is the team is committed. We are going to do this. We are going to do this. We estimate it wrongly. We put our tiers and our blood on that but we deliver that because we promise that. And that is the first thing that everyone I've made around working agile is a commitment and I think it's very important and I try to work with that and it's like, yep, if you are a brilliant guy and you solve me the problem in one week and you charge me what you were going to be one month for you, you solve the problem. That's what I value. I need this result. How much is this? 2000. 2000. 2000. You do it in one day? Well brilliant, you know, but I don't like to enter. It's like, oh, how are you going to do that? How many days are you going to work? But no, no, no. You have to deliver a solution to me and deliver it with a quality and that's it. And I think it's a good understanding. It's a different approach but yep. On parsers, I was expecting to see some logic and I didn't see it in there but because you haven't used it or you haven't used anything, it's... I haven't used it. Yeah, what do you use as a front-up then for elastic searches? Do you use Angular or something? We have worked with Angular. Yeah, but yeah, yeah, the project we didn't finish. Well, no, it's part of the finishing intake. Use Angular to consume elastic search. But it is what I say, understand concepts. This is a nice little trick. Understand concepts. Understand caching and understand what you want to do as we've been using elastic search as a cache server for our API content. It does it brilliantly. If you understand the concepts, the basics, you can figure out these solutions. You don't have to rely on any external applications or... Yeah, more questions? Bang on time. Yes, how do I put them in the content?