“Good developers aren’t enough to create a company”: Jeff Proseiz about business and machine learning





For most affiliates, Jeffrey Richter is a guru and most important author. But for Jeff Proseiz, he is primarily a friend and former colleague: they together founded the company Wintellect (among its customers - Microsoft). Now Jeff and Jeffrey have gone their separate ways, but both still devote their lives to .NET.



Last year, Jeffrey Richter spoke at our DotNext conference, we then interviewed him for Habr, and among other things asked what it’s like for an IT professional to go into business. And now Jeff Proseis is also coming to DotNext, so it has become interesting to ask about this and him. How did this “star” company come about? What can Jeff recommend to developers considering their own business? What error can the Wintellect experience caution against?



And since DotNext will give a talk about ML.NET at DotNext, they also asked a few questions about machine learning.



Biography and books



- You have a long career - tell us how it began.



- I received a diploma in mechanical engineering in 1982 in the USA. It was a time when the first personal computers had just appeared. I became interested in them, saved up money and bought one of the first models. It turned out that I really like to program, as well as write about programming, about computers and train computer users, especially developers.



Therefore, in 1990, I changed everything dramatically, leaving the work of an engineer. By that time, I had already written articles for magazines, but then I first wrote a book. Since then, I no longer worked in my old specialty, I began to speak at conferences, write books and train developers with the latest technologies in our industry. I believe that helping other programmers and their companies write good software is a matter of my life.



- What was this first book about?



- It was dedicated to DOS 5. The release of DOS 5 was an important event, just like the subsequent release of Windows 95. My first book was about a thousand pages long. My agent then said that usually people start with short books, and I gave birth to an elephant. Then I wrote some more books about DOS, and then switched to Windows and some other topics.



In 2001, my last book was published, it was devoted to Microsoft .NET - it was the first book about .NET published in Microsoft Press. Since then, I no longer write books, partly because people now absorb information in a different way. Previously, training took place mainly in books, now there is the Internet and much more. My teaching method has not changed, but instead of books, I now use conferences, online courses, and more.



- Has the process of writing books since the 1990s changed significantly, or is it still the same for the authors?



- Yes, changed. In the 1990s, the author first had to type the text in a text editor, then print it in two intervals and send it by FedEx to the publisher, and after several weeks of editing, the text returned in red. Now this whole process is happening in electronic form.



But more importantly, people are now learning differently. A well-written book on an important subject in the 1990s was almost guaranteed to be in demand, it could be expected that people would learn from it. This is partly true today, but the demand for books has become much less, because there are so many other ways of learning, and books have become much less important than they were 20 years ago.



- On the Internet you can often find a mention of your book “Programming Windows with MFC” - has it become the most popular? How did she appear?



- Yes, she was one of my two most popular books, along with a book about DOS 5. She had very high sales, and for a long time I received from her a good income. Most of those who know me as an author are familiar with this book.











At that time, programming under Windows began to be very popular, and many studied it from Charles Petzold’s classic book “Programming Windows”, which focused on the C language. But by the mid-1990s, most professional Windows developers had written not in C, but in C ++, and used MFC, a C ++ class library for Windows made by Microsoft.



I was surprised to learn that Microsoft Press did not publish books for MFC, similar to Petzold’s book. At that time, I had known Petzold for a long time, and I asked him if he was going to write a book about programming under Windows in C ++. He replied no, because with C it’s more convenient to teach people the most basic things. After that, I signed a contract with Microsoft Press for a book about MFC, and as a result, it became a pretty important tool for programmers who wanted to write Windows under C ++ rather than C. I still have copies of it on the shelf, and I I still meet people who at one time read it and remember me from it. It’s always nice to know that your book has helped someone’s career.



Wintellect, Business, Jeffrey Richter



- You are already the second of the co-founders of Wintellect, coming to DotNext. Therefore, I would like to know: how did you meet Jeffrey Richter and how did the company appear?



- Jeffrey and I have been friends for a long time, and still communicate a lot. Now he works at Microsoft, and he really likes it there. We met in the mid-1990s; if I’m not mistaken, this happened in Redmond, where we were shown Windows 95. Microsoft held this meeting because they wanted to receive feedback. At that time, I already read one of Jeffrey's books about programming for Win32, and at this meeting I went up to him and said that I really like what he writes.



After that, we quickly became friends. In the 1990s, we conducted training almost every week for various companies like Intel and Microsoft, mainly in the USA. The third founder of Wintellect, John Robbins, did the same, we were friends with him too. At the end of 1999, we decided to create Wintellect, because we liked what we did and we wanted to do it together.





Jeffrey Richter at last year's DotNext



If my memory serves me right, the company was registered in April 2000. At first, we mainly conducted trainings. In 2005, Todd Fine, who is now our CEO, came to our company. Then his task was to create a consulting department. Me, Jeffrey and John wanted to do consulting, but our experience in this area was limited, so we needed Todd's help.



We still provide trainings, but most of our income today comes from consulting participation in development. We have many talented developers, both in Atlanta and across the country. We help other companies write software, sometimes we participate only in the creation of architecture, sometimes we help with both architecture and implementation, in some cases we are asked to make some kind of tool as a whole. Both regular employees and contractors, whom we have known for many years, work with us. Our activity as a company lies in the fact that we are looking for our clients the most intelligent and talented people to write the software they need, and I get great pleasure from our work.



- When IT people create a company, they understand everything with the technical side of things, but the business side has its own requirements - what do you think about this?



- You are right that when programmers create a new company, it is not enough just to have good architects and developers. It is also necessary that there are people with business acumen. From the first days of Wintellect's existence, we hired a director who specialized specifically in business, he did not have a technical background. Todd, our current CEO, knows both the technical side and the business, he has an MBA.



In addition, the president recently came to us with experience in managing an IT company worth $ 100 million, he graduated from the School of Business named after Buta. That is, we are aware that technical skills are not enough, we also need people with business skills. And more often than not, people who know programming well, such as John, Jeffrey, and I, are not good at managing company growth, sales, marketing, and the like. Therefore, when developers establish their own company, it is important to determine their strengths and weaknesses, and if you do not have a person with extensive business experience, you need to find such a person and invite him to your company. This allows you to achieve the greatest chance of success.



- How did you and Jeff and John assign the roles to each other when you started the company?



- Both John, and Jeff, and I already had clients whom we consulted and for whom we conducted trainings. Therefore, at first we worked mainly with our old customers. This determined the distribution of roles at that stage. John Robbins is one of the leading debugging experts in the world, so he did everything related to debugging training or solving difficult and unexpected problems with software.



Jeffrey usually worked with things related to Win32 or .NET. I also wrote in .NET, and had a good understanding of ASP.NET, so I helped Jeffrey with .NET and took care of everything related to ASP.NET. If there was a need for skills not related to these areas, we hired other people.



- This interview will mainly be read by developers, but perhaps some of them are thinking about creating their own company. What could you advise them?



- Firstly, the aforementioned: no matter what geniuses you are in programming, without sales and marketing skills you will not go far. In the early stages, it is important not only to hire good programmers, but also to consciously work on the non-technical components of your organization: to provide high-quality leadership, a reliable sales and marketing department. It will be better for you if you take care of this, because then you will not have a shortage of work, and you will not need to constantly look for it.



In addition, I would advise you to choose your business partners very carefully. I was very lucky: I, John and Jeffrey were already friends when we started our company. We are still friends, and I respect them very much. But I know people who after some time of working together realized that it was not worth doing business with their partners. It is necessary that you get along well with each other, and that you have a common vision of how the company should develop.



With companies as with families: they often fall apart not because of lack of technical skills, but because partners do not have business skills, or they are poorly compatible with each other and constantly quarrel. These frictions greatly hinder the success of the company, it becomes more difficult to achieve a common goal.



My third advice is this: you need to have a vision not only of what the company should achieve, but also in terms of the company's culture. It is better to have an idea of ​​this from the very beginning than to let it drift. Obviously, as your business grows, the situation will change, it is impossible to accurately predict the future, and you need to be prepared for these changes. But even with this in mind, it’s important from the very beginning to have an idea of ​​what your business should be like.



- At first, everyone always makes mistakes - can you talk about some kind of mistake in managing Wintellect so that it helps someone else avoid it in your business?



- Can. The lesson to be learned from my story will be this: it is very important to diversify your business and your customers, and not put all your eggs in one basket. We did not do this, and this turned out to be rather substantial difficulties for Wintellect.



In 2005, we created a consulting department, but at the same time continued to conduct trainings. Over the years, we have received many millions of dollars a year from Microsoft for training their developers. John, Jeffrey and I constantly flew to Microsoft departments around the world and conducted trainings there - in Redmond, Hyderabad, Dublin, Beijing, Shanghai and many other places.



And all would be fine, but in 2014 Microsoft changed its policies quite significantly and decided not to conduct centralized training for its employees anymore. One fine evening in September 2014, we received an email from Microsoft in which we were thanked for our past work and reported that there would be no more training contracts. This did not affect the consulting department, but the training department became unprofitable in one day from a profitable one, because there were a lot of very smart and well-knowing people working there, and two-thirds of the revenue from this department came from Microsoft.



In fact, we knew that we should diversify our business, and understood that the loss of a contract with Microsoft could seriously harm us. But diversification was difficult, because it is difficult to refuse income if it comes to you. In general, it took our training department several years to become profitable again. The moral here is: avoid dependence on one client, because you become very vulnerable if this client suddenly wants to leave you.



- In large companies, they are often skeptical about inviting a person from a third-party company to teach their code. How did Wintellect handle this?



- You are right that for any corporation that hires third-party teachers, the question always arises of how qualified these teachers are.



But it helped us that we were taught not by beginners who have been writing .NET for two years, but by people who participated in the creation of the framework itself and know those who are developing it now. For example, when we needed a .NET course, we sent Geoffrey Richter, who participated in creating .NET and writing the CLR, so he can give such material and answer questions that most likely no one else on this planet can answer. to answer. We have contacts at Microsoft, we are well aware of the systems that we advise on, and, in my opinion, this is what distinguishes us most from other companies.



And we already had a lot of teaching experience - I, John Robbins and Jeffery Richter trained programmers in other corporations for many years, Wintellect simply allowed us to join forces and offer a more complete set of courses.



- Unfortunately, not every training / consulting company has its own Jeffrey Richter - can you give advice to those who do not have superstars?



- Do not try to trick the client. Of course, always try to find someone who really thoroughly knows the necessary area. But if you do not have it - do not pretend that it is.



There is always a temptation to follow the path of least resistance. When a client calls you and asks for a course, say, in Java, then even if you do not have a specialist in Java, someone will say: there is no superfluous income, let's take an order. We must fight this temptation. Do not send to teach C # the person who himself began to teach him two weeks ago. Clients are not fools, they will very quickly realize that the teacher knows a little more than their students. Quality has to be built up over the years, and you can lose it in a few weeks.



And look for people who not only know their subject well, but also know how to work with the audience. There are many people who know the technical side of the matter well, but to transfer this knowledge to a group of 10, 20 or 30 people they do poorly. This is a talent that does not always accompany technical skills.



Therefore, we often hire people who have been speaking at conferences like DotNext for years - if they were not good speakers, they would not be invited again with presentations.



- When you conduct trainings for Microsoft, is this different from training at other companies? For example, if during the training process a question / wish / bug report on .NET arises, does it happen that it is immediately sent to the appropriate employees?



- There are differences. And we really had cases when, after discussing some issue in the lesson, we sent requests to the developers. Sometimes this happened because a person from the corresponding team was present at the lesson. Or the instructor could offer to contact the creators of the technology. In this regard, the situation at Microsoft is truly unique.



There is another difference, which, I suspect, applies to Facebook or Google to the same extent: Microsoft has a lot of very smart people, they hire the best programmers not only from the USA, but also from all over the world. Therefore, people come to classes there, for whom software is not just earnings, but their life’s business. I take great pleasure in teaching in such an audience, because such people ask good questions, are much better motivated, and the quality of training is ultimately higher.



I think that all those who earn their living by training had occasions when they ended up in an audience where most of those present did not sit of their own free will, but because the manager told them so. A good instructor can work with such an audience, but when people are smart and motivated, the result is still better. And this is exactly the case at Microsoft.



Over the years of work at Microsoft, we conducted many classes in Redmond, where the company’s head office is located, and there were usually 85 people attending classes, otherwise it was not possible to satisfy demand. Even taking into account such large groups, queues still lined up for classes, sometimes because of this there were misunderstandings, once people even got into a fight! This happened at a time when Silverlight was widely used, and I then taught on it, which of all my courses were most popular at Microsoft, it was very difficult to get on them. One morning, about 30 or 40 people gathered around the audience, and two of them quarreled with each other, in the end it came to the fists and had to call the guards. Of course, this is bad, but at the same time, as an instructor, I am pleased to realize that people are ready to go to a fight to get to class.



- Now the company has video courses WintellectNOW - can you tell us about them? There are a lot of online courses now, yours are somewhat different?



- We created WintellectNOW in 2012. The reason for this was the request of Microsoft: they said they did not want to strain us too much with constant flights to conduct live courses, and they also needed a more scalable solution. Therefore, WintellectNOW was originally intended exclusively for Microsoft, but later became available to the general public.



We work with companies and also provide individual subscriptions. Our most serious competitor is, of course, Pluralsight. Pluralsight is a very successful and established company that has grown through the acquisition of others. We thought to follow their strategy, but in the end we decided to abandon it.



We did not want to create a platform with 50 courses for .NET or Angular. We say to our customers that quality is important to us, not quantity. We have only one course on Node.js and only one on Angular, but we are putting all our efforts into them. And I have often heard from training managers in large companies that they need not 40 courses in Angular, but one, but first-class. This is the niche we are trying to occupy.



Machine learning



- In the report, you will talk about ML.NET, but for now, I would like to ask you about machine learning in general (not only in relation to .NET). Do we understand correctly that you now consider it useful to understand ML even for those developers whose work is not related to it?



“Yes, absolutely.” I believe that machine learning is one of the most important technologies that have appeared in the last 30 years. It opens up many opportunities that did not previously exist. In programming, we constantly work with algorithms. For example, if you need to unzip a zip file, you can write an algorithm for this. The beauty of machine learning is that it allows you to do things that algorithms cannot do.



A classic example is code that must analyze an image and determine if there is a dog on it. If you try to do this algorithmically, you can probably find an image that deceives the algorithm. Machine learning overcomes this limitation, and it already has a big impact on our daily lives.



For example, every time you use a credit card, purchase information is analyzed by a very complex machine learning model. Credit card companies were among the first to use such models, because they make it possible to determine the risk of fraud with amazing accuracy. Such models teach hundreds of millions or even billions of other transactions. Imagine a table of zeros and ones with hundreds of columns and millions or billions of rows. It is impossible for a person to find patterns in such a table in order to say for sure whether the next transaction will be fraudulent or not, and machine learning can do this.



It is ideal for analyzing large data sets and finding patterns in them. Therefore, I believe that this is an extremely important technology. Of course, an ordinary programmer does not need to be an expert in machine learning, but a basic understanding is necessary, because it allows you to do many things that were previously impossible.



- You said that algorithmic image recognition can always be fooled - but do neural networks also work without error?



- Machine learning is really not perfect, just like people are not perfect. But at the annual ImageNet event, where researchers from around the world compete to create convolutional neural networks for image recognition and classification, their networks are already so advanced that they do their job better than people.



This question can be answered in different ways, so I will focus on one topic: in recent months a lot of criticism has been directed at face recognition systems because they do not work “impartially”. For example, often these neural networks recognize faces of white people better than representatives of other races. This problem does exist, but it is important to understand that this is not a problem of a neural network per se, but of the way this network was trained. If white faces prevail in the training data compared to those of Hispanics, then the network will indeed not be objective.



, - , , . , , , , . . , , . , , , .



— TechTrain (, - ). , : , « ». , ?



— , «». , , , — , , . .



, , — . , , .



— , Microsoft Google, - . « - , ». ?



— , , . Let me give you a couple of examples. data science, . , . , . , , , , .



Another example. Wintellect . , 20 , , , . . , , , , . , — .



, . , , ; , .



— . , , « , ». , , . ?



— . , , . , , Win32, -. .



, , . , , , — , , , , . computer science, , , , .



: . , — , , , . , , .



, , , , . . , , , , . . , , , . , , 10 , , , .



DotNext , , 50 . , . — , , , , , , , , , .



, ML.NET, , Python. C#, Python , (Keras, Scipy) — Python. Python - . , Microsoft, ML.NET, , , C# Python. C#, , , , .



DotNext «Machine learning for C# developers: Introducing ML.NET». : «, .NET , ». ML , — .




All Articles