 Excellent. Thank you. So this is going to be a very high level talk, so it's not going to be technical in any way, although it is about using Python for in smart things. Short introduction about myself, I'm Mark Lemberg. I've been with Python for a very, very long time. 1994 I studied with this. I studied mathematics originally. I have a company doing Python projects, currently mostly working as consultant or so much, so much as a company. I'm the EuroPython Society Chair. I've been on the board of the PSF, so I've been around a bit. And this is also what I want to talk about today. So the theme of the talk is basically to tell you a bit about my experience in enterprises. With enterprises, I mean companies that have at least 100 employees, usually from 500 to like 20,000 employees. So much, much bigger sizes than what you usually see. And also companies that often don't have a lot of use Python, or where the company itself often doesn't know that it is using Python. So when working in these companies and consulting for these companies, I always had to deal with enterprise applications, and sometimes also selecting enterprise applications for them. And I found that there was very, very little Python being used in these companies. So this talk is basically about at least maybe hinting at ways of maybe how we can change this. So what's the current status that we have with Python in the enterprise? So if you go to a large company, where do you see Python being used? Like I said, most of the times the companies they don't know that they're using Python. They're probably using Python somewhere, at some low level, for into-credit companies. So what's the current status that we have at some low level? For integrations? For calculations that they're doing? For managing batch drops? For testing for these things? But it's not really very well known that they are using Python, and if they're using Python only at the low level. So it's hardly visible in actual applications that use in enterprises. They are using it for web applications, as the web frameworks, Django, for example, or Pyramid. Some of the companies also use Python for implementing in-house applications, but those are again usually just very niche applications, not the big ones. And you almost never see it used in any enterprise applications. And with enterprise applications, I mean applications that you typically just hear about using acronyms. Acronyms are very popular in enterprise world, right? So it's just about acronyms. The more acronyms you use in your talks, the better. So these are a few of them. So ERP, for example, is one, is enterprise resource planning. It's actually a stack of applications. You have a CRM, which is a customer relationship management system, a PM project management system. Then there are probably some acronyms for accounting billing and procurement as well, but I didn't put them here because I didn't want to explain too much. Then you have BI solutions. BI is business intelligence, with intelligence in the sense of like, you know, what the CIA does, except that you look at your data and other data. So this is mostly reporting and analytics, so they're trying to find out how the company works internally, how well it performs. The managers want to have reports. They want to analyze trends. They want to identify certain weaknesses within the enterprise. That's why you have BI. Then, of course, you need to store the data somewhere, so you have data management systems. For that, they usually have something like a data warehouse, or recently, more recently, it's more popular to talk about data lakes. Don't ask me what the difference is. Don't ask me what these are. I don't think that they actually work, but this is what enterprises use. Of course, they also have a whole ballpark of different database systems that they need to maintain, so you get basically all different large databases in there. They always have to have some way of storing static data. Static data meaning, for example, customer data, so names of customers, billing addresses, phone numbers and so on, or things about details about products they make, certain aspects, properties, and so on. That is usually stored in MDM systems, it's called, master data management systems. Then, of course, these companies, they take data from other sources. Sometimes these other sources are actually other departments inside the company, and then they have to convert data between different databases, different applications. For this, they use ETL tools. ETL is ... What is ETL? It is, anyway, exchange, transform, and then load. I don't know why it's that order, but it doesn't really make sense, but it is about transforming data from one format into another format, maybe applying some extra logic to it. Then, of course, they have systems for making it possible to use APIs for the applications. Another one is CMS, content management systems. In the enterprise, it's not called CMS, because CMS is always seen as something that's used for websites. In the enterprise, you call them ECM, enterprise content management. It's essentially the same thing, only that you focus more on internal knowledge, how to manage documents, and so on. Of course, there are many others, but I don't want to go into that level of detail. If you look at where Python is being used, or where Python actually has entered this space, there are only very few things. In the ERP space, you have ODU. How many of you know ODU? A few, maybe half. ERPnext is another one. Very few. Interesting. But both of those are small scale, especially ERPnext is tiny. I've never been working for an enterprise company that uses one so they always use SAP or Oracle or many other systems. For BI, what we have is the Anaconda stack, I called it, which is not completely accurate. It basically means everything that has to do with the PyData stack. I think the best tool that we have right now in Python is Bokeh for doing charting. But again, it's just low level. We'll use it to just create a few graphics and put them on PowerPoint slides and then use them in presentations. That's about the level that is being used there. For data management, we have, for ETL, we have a fairly new tool called Bonobo. How many of you know Bonobo? Again, a few. This is, it's a nice start, let's say, but it's way too simple for what enterprises actually need. For APIs, we have Swagger. Swagger itself is not really a Python tool. It's more like a tool that you can use to build APIs that then build libraries that work against APIs. For CMS, we have Plone. How many of you know Plone? About, like, maybe half. Of course, you can also do this in Django. But the kind of CMS that enterprises use with lots of permission management, with workflow management, this, I've not, so far I've not seen being done in Django. So Plone is basically the only solution that we have for that. But it's not a widespread use, which is kind of unfortunate. Because if you look at the market sizes of these tools, these are numbers from Gartner, mostly. The market sizes are huge. There's a huge potential that could be used for Python applications. So just look at the ERP market size, like with almost $42 billion expected by 2020. And it's just two years away. And similar for the other things I took out of the list. So there is a lot of money in this. So if someone wants to do something in this area, even if you stay tiny, it's still going to make you a lot of money. And it's definitely worth it. Because there are so many issues with these enterprise applications. So some of the issues I mentioned on this slide, of course, the biggest issue is cost. When you are in an enterprise, you want to have one of these systems installed at your place and you want the system to be used. You always have to customize it. And this customization is usually called an implementation project that you run. It takes at least a half a year to run this project, usually longer. The estimates that the vendors come up with are usually wrong. So the expectations that they have are different than the ones that the enterprise has. And so there's a mismatch there. So you have to address that. You have to project management. You have to transition from your old system to this new system. So it's a real project that you have to run. It's not something that you do on the side. It's not like installing quick-in on your system and then be ready to run and select two hours. Most of the time you have to get consultants in for this. The consultants for these things are typically quite expensive. So let's say you want to have SAP in your enterprise. They usually cost between 2,000 and 3,000 euros a day. Some of them are even more expensive than that. And even though they charge a lot, they are not necessarily all that useful, let's say. So they don't actually meet the expectations that you put into someone who costs that much. Then of course, once you have it installed and it's running, you always run into issues because things don't work the way that they should. The processes change a bit. Let's say you have a form, it needs a new field. You need to get a consultant to add that field. Or you want to have a new export format. Then again you have to get consultants in. They have to work for you. You have to set a project, project management and so on and so forth. It's really costing enterprises a lot. Of course enterprises are aware of these things. So let's say they do care about the cost, but they expect these costs to be like in the hundreds of thousands of dollars every single time they do these things. On top of that, of course you have maintenance and licensing costs for these applications. And there you can easily reach a million a year. No problem at all. Once you have these applications installed, then you find that basically you're locked into that application. And it's very hard to get out of it again. Because what most of these applications do, and most of the vendors do of these applications, they try to take ownership of all of your data. And basically this makes it impossible to take your data out again or makes it, let's say, not impossible, but it makes it very hard for you to take the data out again. And as example, for example you can have like the data put into a database. And the database you don't get access to database schema. So you cannot actually just go to the database, export the data in some other way using some other tool, Python for example, and then just do something with it. Sometimes they even go as far as encrypting the data in the database without giving you the encryption key. So you cannot really access the data anymore without asking them for permission. SAP for example has licensing contracts where they actually take ownership, I mean literal ownership of the data that you have in the SAP system. So if you want to export data from SAP and give it to someone else, you have to pay them extra, unless your license allows this. So those are just a few disadvantages of these existing systems. And of course I didn't mention most of these are written in Java and in C sharp or C++ or languages that like Fortran, Cobol, you know, really old stuff. Or systems that where basically you don't care how it's implemented like SAP for example, because it doesn't provide you with any decent interfaces to customize except for the custom interfaces that they do want you to see. So you don't have any good way of integrating without going through their APIs. So what are the advantages of Python solutions we could have in this field? So one major advantage is that because Python is so easy to learn, it's so easy to understand. You can actually have the enterprise staff itself do the customization. So you don't have to run projects with consultants, external consultants, or at least you don't need as many consultants to do this. Licensing can also be had cheaper because most of the Python applications would typically use a complete OSS stack. So you use open source software which you can use as let's say if you were a company implementing one of these solutions you can use to lower your price and be more competitive. We can have open APIs because standard is all over the place in Python. We don't need to have soap interfaces or bloated XML to store stuff just to be enterprisey. We can do things in JSON. And we can also make it possible to choose the database in any way you want and to open the schema so that you have easier ways of integrating. What we currently don't have, or at least I don't really see in the Python community is we don't have big companies in the field. So we are lacking something that's very important for enterprises which is good company backup. So they want to be able to go to a company, they want to be able to phone up a support guy immediately helping them. Maybe even a key account manager that's basically dedicated to that particular customer or depending on the size of the company even people going in from the vendor company into the enterprise and working there directly on site. So this is something that we don't have. And of course because most of the companies are smaller companies that we have in the community there's a huge risk for enterprises because of vendor default. If the vendor just goes away then what are they going to do with the enterprise solution? And this is something of course would need to be addressed if Python wants to enter this kind of space. So the solution to this is to not start in the usual way like opening up a small shop, having an idea, implementing something, doing a bit of marketing and expecting then huge revenue. It doesn't work like that so you have to take a different approach there. Another thing that I saw with for example Python libraries not all of them of course but many is that they are not polished enough to actually compete in the enterprise market. If you look at solutions that are implemented in Java, a C sharp, then you very often have much more polished interfaces so much more care is being taken about how the UIs look, how the functionality is implemented. They focus very much on what people actually need in terms of interfaces rather than just making up things and thinking what could a customer need. These other solutions they typically go out to the market, do market analysis all the time and iterate and then basically improve their solution constantly to fit the actual customer needs. And then finally of course as part of this because we have small companies, we cannot provide the level of documentation training and marketing that would be needed to enter into these fields. So what we would need to do in order to reach this level and enter the enterprise with Python, we need to change all of these things so we need to find ways of having a good company backup. One way to do this for example is if you want to start a smaller company you enter partnerships with larger companies that do provide a lot of these services and then via the partnership then to the enterprise you look as a larger company because then you can say okay I have this partner, the partner is going to do all the training for you, it's going to do the support for you etc. So that's a way to do it. There has to be a lot more focus on support and training. This is essential for these solutions because of course the people in the enterprise want to use it and they want to be like a thousand or maybe even 10,000 people using the application. So this is essential if you want to be successful in this area. And then like I said you always have to look at the customer, you have to see that everything is built in a way that addresses actual customer needs and not things that you just think that the customer would need. Plus something that small companies usually forget, not including myself for example, I have a similar story. I started building a product. I had an idea, I started building the product, the product was done, I started a company to sell it and then I started marketing and then I started sales and then I found that there is no market. So I basically spent five years of my lifetime doing something which in the end did not really generate any significant revenue. So this is where small companies happening a lot and if you want to start into this or head into this area then this is definitely something to keep in mind. So you have to start with marketing and sales first and then do the development. So what's the strategy to get there? Unless you are a billionaire and can easily afford just spending like 100 million or so on one of these ventures of course you need to find and the way to find good investors is you have to have a good strategy, you need a good execution plan and you have to have a vision for the future because it's not only about getting there, getting the product out of the door, it's also about what do you want to reach in let's say five or ten years with your product. Ten minutes left. Okay, that's good. You need to find the markets, you need to do market analysis, you need to see what the market actually wants, you need to pick the right market so as we saw on the other slide there are different market sizes so it might actually be better to reach for a smaller market and not for the bigger ones so let's say not ERP but let's say go for BI first and then enter that market because you might be more competitive in that market, it might be easier to do marketing and as I said do sales and marketing. That's good, just a second. Right, and this brings us to the dream that I have. I would really like to see Python enter the space, I don't know exactly how it could be done, I just want to maybe see the few ideas here. I think it's well worth it, I think there's a lot of potential out there for this. Python could actually make a huge difference in this market So many more people could have the possibility to do the customizations, for example, or you could easily extend it. It could be much more open. And then I and my job as consultant to enterprises, I could then pick a Python solution instead of a Java solution, for example. So right now, we just have web applications, we have data science applications. And if we enter these other areas, then I think we could actually make a big difference in enterprises. The solutions I've seen in the RFPs I've done for enterprises, RFP is like a procurement process where you go out to the market, ask the vendors to send you in details about the products, including the prices of course. And then you basically do an assessment of all the features they have and compare them and then pick one and then maybe do a pilot project with them and then see how it goes. For these things, it would be so much better to have a Python solution in there because I would immediately know that this has to be better because it's so much easier to customize. Of course, I have this knowledge. Other people in other consultants and enterprises don't necessarily, so you need to do a lot of marketing there. The best way to do marketing is to have nice flashy websites, lots of PowerPoints, people walking around the places and talking to a lot of other people. And of course, you need to pay them and so you need a bit more money and you need to have investors to finance this. And then the development can then be done in parallel to that. So I have a bit of time left, eight minutes. So I have some questions for the audience. So maybe you can come up to the mic and maybe answer these. So the first question would be, do you agree that there is a potential there or you can just shout out? I can repeat the question for the video. Maybe you raise your hands. It's easier to see. Okay, not all of them. That's interesting. Would you like to work in such markets? Even less. Also interesting, what is your favorite, let's say, market to work in? Are you more like in the web space and do you like low-level work more than, and this is not a question basically, I don't want to say that low-level work is bad in any way. It's just different, right? So do you think that working in that space is easier or better than in an enterprise or is it just the size of the company that you think is intimidating or maybe not the right place for you? Okay, that was a hard question to answer by hand. So, okay, how many of you think that that small is better than big? Okay, about maybe not half, maybe a bit less. How many of you think that that enterprise is boring? Okay, maybe a third. How many of you would like to work in the enterprise as freelancer and customize things and earn a lot of money? Okay, plenty more. Yeah, I know, it's the money question again, right? How many of you think that this is not a viable way forward because we don't have enough pricing programs available to actually pull off this thing? No one, that's good. Oh, one, okay. This is already much better than like 10 years ago. How many of you think this whole thing is way too risky? Okay, one back there. Jacob, I have a little story. I taught a Python course in London a few weeks ago and some people were from the financial district and they're saying that they're really, really interested in Python these days for data processing purposes. For importing Excel spreadsheets, doing processing and then exporting to Excel spreadsheets again. So that's very much the business intelligence part and it's hot in London right now and I've heard it from other sources as well. I'm currently working for a fintech company in Cyprus and basically that fintech is doing exactly that. It's basically taking data processing it using Python and then pushing it out again to other data, basically imports and yes, definitely. So there's a lot of work being done in Excel. There's lots of import from Excel and processing and output to Excel again. This is definitely something very hot in the finance industry. I know that Bank of America is building a complete system in Python, for example, internally. I know that many other banks are using Python internally to build systems or to integrate systems. The fintech I'm working for has built a middle office service completely in Python and because it's in Python, it's extremely competitive against all these other solutions that you have out there and so they're actually doing quite well. So definitely finance is a big industry and it's one of these enterprise level industries where Python does already make a difference but again it doesn't have this. They're not using the Python for any of these enterprise applications or at least I haven't seen any. They do build custom systems internally. They do a lot of integration and data management using Python but all the larger systems that they have are different systems. Yeah Fabien or maybe you? I'm just connecting to the spreadsheet. I have a library which does the spreadsheet so my client and my users turn the comments coming back from them is that using Python to process the spreadsheet in terms of performance wise is slow. So they usually have gigabytes of data. They want to transport transcoding and then also try to do data computation. It takes too long using Python to do that and then the second observation is that I use Python for web development and then they only trust me to do the internal applications but then when it comes to the business core activities as you said the SAP applications they already have been decided like this is SAP. There's no question you can't work around so they have already salesmen working to the bigger management and to say oh my product is good. It's good it's decided so Python, me as a Python developer as there is so small that I have no voice. So that's the thing. Yes I completely agree that's what I'm seeing as well. So Python currently is being used a lot for integrating things but it's not actually pulling off the big thing. So yes Fabian? A big thing especially where it's still growing is also the cloud that things are not anymore as earlier maintained inside an enterprise but that each service and that might be even human resources is managed through the web portal somewhere in a different company and in the end there it doesn't matter anymore whether it's Python or not because it's internal to that company. Can you say something into that direction? Yes I mean of course the applications that I was talking about many of these applications have web interfaces right so of course the user doesn't really care what it's implemented in whether it's Java or whether it's some other technology could even be Python but I'm basically coming from the side of the procurement basically the decision makers deciding which enterprise solution to use in an enterprise and I think at that level we can enter that market. It's not so much that the user will actually see Python it's more that we are able to provide these solutions to the enterprises and to create a name for Python in the enterprise which goes beyond just in being a nice integration language that kind of thing. How many of you are working in fintech? Not that many I'm looking for a few fintech freelancers so if you want to contact me yeah another just an observation for myself I do make money doing enterprise Python computing my view is the main barrier to entry is not really technological it's really that the cost of sale into enterprises can be very high and you need to spend a significant amount of time marketing and actually closing a sale after you've eventually found the right person to sell to in the organization which are not normally the kind of people who show up at conferences like this. Exactly this is not supposed to be a talk for like sales people and business people obviously I mean I put on a jacket today just to look more enterprisey but the of course I mean the the europe Python conference is not or not yet let's say it's not yet for for businesses businesses maybe eventually we'll get there my hope is that we'll get there and I would very much like to like to see this so with that thank you for your attention.