What Is Wrong With Social “Networks”?

I still recall the forum days, IRC, ICQ/MSN, MySpace and a lot more.

Social media is supposed to be about social networking and keeping in touch with people. Over the past couple of years, I don't see that happening. Most interactions are monologues, people maintain accounts without really using them, touching base with folks is not always acceptable.

Read More

Why And How Does Open Source Software Exist?

[embed]https://youtu.be/z_PG1h7wisc[/embed] Why does open source software exist and how should I pick between free and premium software? I made a brief overview of how WordPress works and keeps growing with contributors, what motivates people to keep releasing free plugins, the market economics of Open Source software and more. If you ever wonder about the value of open source or why free plugins exist, watch this video. Why and how does Open Source software


00:01:06 - WordPress.com vs WordPress.org 00:02:34 - The Reason WordPress.org exists 00:03:43 - Working on the Core 00:05:20 - Why People Release Premium and Free Plugins 00:04:26 - Premium vs Free Plugins 00:09:10 - When choosing between the two solutions


Hey guys! Mario Peshev here from DevriX. Here with me is Mara. Today's topic is Open Source solutions, Open Source plugins, and their premium counterparts. Let's take WordPress as an example. There are a lot of premium WordPress plugins available. A lot of open source and free WordPress plugins available on the WordPress.org repository. So, there is a lot of miscommunication when it comes to deciding on whether you need to get a free plugin, whether you need to take a premium plugin – what's the difference, what’s the reason to pay for a premium plugin in the first place. Isn't everything in WordPress is free since WordPress itself is free and so forth? So, I'd like to kind of discuss that because with the current, with the upcoming release of Gutenberg which is a new kind of a page builder coming into WordPress, content creator for the WordPress platform. And, with a lot of people essentially over 30% of the top 10 million websites are based on top of WordPress, those are the common questions that I would like to kind of answer with a little bit more detail. [Tweet "A lot of people do miss the difference between the self-hosted kind of blogging host platform and the WordPress software which is something you can bend and extend as much as you want."]

WordPress.com vs WordPress.org

So first off, WordPress – when people hear WordPress, it’s the default question: First, what is the WordPress.com software? It’s a proprietary platform owned by a company called Automattic which is founded by one of the two co-founders of the WordPress software. And then, there’s the WordPress software or the free open source solution WordPress.org that the vast majority of people download, set up a random hosting account, attach a domain name to start installing plugins and themes and so on and so on.  These are two different things. A lot of people do miss the difference between the self-hosted kind of blogging host platform and the WordPress software which is something you can bend and extend as much as you want. WordPress.com is essentially free. You have different premium plans or you need to charge, you need to pay for attaching a premium domain and so forth. WordPress.org as a software is completely free but you need to pay for hosting, for the domain, for you know, development design, content creation, marketing, whatever other services you don't want to do yourself. Domain and hosting costs: they may start from as low as you know, 60 bucks per month and you know, professional companies may pay thousands or even tens of thousands of dollars somewhat, not to mention the largest companies paying tens of millions. But that's another story.

The Reason WordPress Exists

So the WordPress.org as a software is free. The reason it exists: It has started as an open source software back in the day in 2003 as a fork of b2/cafelog - it's another platform and is being maintained by a group of different contributors trying to build a better kind of blogging/content management software out there. With that, different products emerged, different services and solutions emerged. People became proficient in WordPress using it to sell web development services or such. And that's kind of how it moved forward. Now, right now, every major version of WordPress is maintained and kind of supported by hundreds of different contributors who submit core patches for bug fixes for new features, translations and things like that related to the WordPress software. All of those are contributors and some of those are even employed. Well, not all of them kind of have worked but some of those are paid for their work by their company such as most hosting companies or web development companies paying people to essentially contribute time to that software.

Working On The Core

So, we do have 6 people in our company – Me, myself included, with core patches the WordPress software and it's pretty awesome. It's really time-consuming and we try to do it whenever we get a chance and larger company like Automattic running WordPress.com have allocated like dozens of people working on that, focused on developing the WordPress software. But, it's entirely open source. You can do whatever you want with it. And the same goes for WordPress plugins and extensions and components. So, there are a lot of free WordPress plugins available. Some of them are good, some of them are bad and there are a lot of premium plugins available. Some of them are good, some of them are but it's really hard to find a difference. And let's discuss that a little bit further.

Why People Release Premium Plugins

So why do people release premium plugins in the first place? Obviously, to make money out of that. Right? Because you know, if you charge 50 bucks for a plugin for example and you have, I don’t know, 50 sales a month, like 50 purchases a month and this is twenty-five hundred bucks a month which is not too shabby. Because if you have 10 plugins like this, then you have a business model. Some of the professional premium plugins, they do generate thousands of sales a month which is pretty great because first off, you have first time purchases. Second, you have renewals. Sometimes you have upsells, things like that. So, the market itself is a bit rough. So, if you have again, a 50 bucks plugin – a plugin that costs 50 bucks and you sell a thousand copies a month from it, it’s 50,000 dollars a month or 600,000 business which is again great and it happens for some of the most established plugins there. So that's for premium plugins.

Why People Release Free Plugins

In terms of free plugins, there are different reasons why people do that. Number one could be just general passion for the open source community, just being extremely happy for it and just you know, giving back. Making your way of earning money through WordPress and by this, giving back to WordPress by expanding the market ecosystem through free plugins. That's one thing. Second thing is portfolio. For freelancers and web agencies and web development company, just having something to show off like, “Hey, I did this. I built this. It has actual adoption, actual people using that.” That's obviously another thing and that's also extremely common. Third one is upsells. Some of the free plugins, they have paid extensions or paid add-ons or they have like a premium version. For example, Yoast is the most popular SEO plugin out there with over 1 million installations of the plugin on live websites and they do have a premium version that supports a bunch of other things and it costs, I think 75 euro a year or something like that. So that's another way to do that. Like, the free version is great. It has a really wide adoption so even if say, 2 percent of the people - it's a low number, but even if 2% of the people purchase that, 2% out of 1 million are 30,000 by 75 a year and then you can do the math and you can see how the business operates. On top of that, they can also upsell services to that.

How Yoast Works

I'm going to take again, Yoast as an example. I’m by no chance affiliated by Yoast. They're great guys though and I’ve bought the premium version. So, Yoast, for example, they do offer SEO reviews, professional SEO reviews. Some of my clients have taken those and they're pretty comprehensive and cover a wide set of potential things that you may want to improve on your WordPress website. So, that's another thing that you can do. Obviously, freelancers web development companies, when they have such plugin, what they can't do is they can say, “Hey, you know, we can extend that for you. We can take that as a basis and build upon it and then possibly either extract that as some sort of an extension or an add-on or a premium plugin, working with a premium plugin or bundling it into the free core in order to again increase adoption. All of that of course, that kind of exposure leads to some sort of a popularity. You know, if you have a plugin that has tens of thousands of installations on live websites, it's obviously something that helps with marketing. You can be more prominent when attending WordPress conferences. You can feature that on your own website. It builds some sort of credibility. It makes you appear as more professional because your code works on tons of different environments and services and so on.

Premium vs Free Plugins

So, as you can see they're kind of different opportunities. The thing with premium plugins is for the most part with a premium plugin, you get guaranteed support. For the most part, of course, if that's within the terms of services, but that's expected. With the free plugin, the most challenging thing that's kind of pushing people away from free plugins as developers is the backlash from customers is pretty horrible. You know I've had free plugins. Someone installs that and just rate it 1 out of 5. “This a crappy plugin and it doesn't work” and yada yada yada. Then it turns out the plugin runs on 2000 websites and that's the only client that can't really make it work right. So, it means it's something with their hosting or the way they install a plugin or their theme or whatever it is. But, it's pretty common to have customers asking for free stuff be extremely demanding while not even paying for support in the first place. With premium plugins, you can at least expect some sort of support. And with free plugins, you know, best case scenario, you can work with some sort of developer or the plugin owner or the plugin founder, whatever it is and kind of ask them for additions.

When Comparing The Two Solutions

But when you compare solutions, when you pick solutions, you know, you can't… sometimes a free plugin can do, sometimes a premium plugin can do. More often than not you require custom development and custom implementation for something. And some of the generic multipurpose plugins that do a lot cannot be sketched since they are made for high adoption which means all sorts of different businesses. They include tons of options and they become heavy and bloated and insecure and unstable and so forth. So yeah, that's pretty much how the ecosystem works. That's extremely common in every single open source community. So whenever you're building something, whenever you're in need of plugin or a theme, consider that. Think about it. Talk with a technical consultant and take the right decision.Read More

Becoming A Successful Web Delevoper Even Without A Team

[embed]https://youtu.be/pD2s4RBvJdY[/embed] Having trained thousands of people, I've read hundreds of online complaints from remote hobbyists who live far away and "can't attend". I'm always baffled by kids who only imagine a training in Google (or another large corp) with a personal mentor on-site, a well-defined training program tailored to their taste, a team of other hobbyists at their level (or even lower) to pace together. Companies don't dream to invest five or six figures in complete newbies over the course of a year before some of them can become productive. Back in the day, we were downloading .TXT tutorials on floppy disks, printing "hard to find" books due to our limited online access, and spending weeks banging our heads against the help pages of DOS-driven IDEs. And now, we have YouTube, Udemy, tons of blogs and free books, Stack Overflow, GitHub... Most of the engineers I've worked with are self-taught. It's all about motivation and hustle. Not limited to engineering, either.


00:00:16 - Why Some People Complain About Onsite Learning 00:01:29 - Communication and Collaboration = Teamwork 00:01:58 - Finding Resources Then and Now 00:05:42 - Different Online Resources 00:06:22 - The Most Important Thing 00:07:16 - What You Really Need to Do


[Tweet "Now I completely understand that most of the software engineering happens as a part of a team, as a part of a collaborative environment."] Can you become a successful web developer if you don't get a chance to become a part of a team and work in an office with other developers on site and basically be a member of an existing kind of organization and make a team - a team of software engineers? successful web developer

Why Some People Complain About On-Site Learning

This is a question I get quite a lot and as a trainer, I also tend to teach some courses that tend to record training videos online and also organize some workshops and lab exercises and others onsite in order to help people to bond together and work alike instead of just learning the curriculum from the Internet. And of course, some people complain about it. They say, “I live very far away. I can't really attend all the exercises.” So, they kind of start ranting against being unable to be a part of the team and how unfair it is and things like that. Now apparently, this is a poor excuse if you're about to start becoming a professional in that specific industry and in any industry for that matter, now I completely understand that most of the software engineering happens as a part of a team, as a part of a collaborative environment.

Communication and Collaboration Equals Teamwork

This is why communication is also important. This why we stress so much on teamwork and collaboration and version control and some other activities simply because they are part of something bigger of the collaborative effort that goes into building a complex software product or delivering services or anything that's kind of related to software engineering. And now, I want to really stress out the importance of teamwork whenever that's possible. And, probably, you are going to become a part of a software engineering team sooner or later even if, let's say, you live in a city where your location doesn't really allow you to work in a team, you can't travel 200 miles every single day just to commute to your job or anything else. But, that doesn't really mean that you can't learn software engineering by yourself. And, the reason I want to mention that is that back in the day, we simply didn't have the opportunities to study software engineering by going to boot camps or going to some training courses or things like that. And again, I also know people who have started develop and 20 years before I did and this was really a lot of irony. Really a lot of trying to figure things out in themselves, simply because no university were teaching this or there were pretty much no opportunities for training on site.

To Be a Successful Web Developer Back in the Day

Back when I started which was about 20 years ago, give or take. When I started, we were trying to look for any type of all our websites, just giving any types of tips on be it software engineering or web development operating systems networks and so on. And, the internet wasn't that popular back then either so most of the time, we spent the time in computer records and the internet cafes and some other places trying to find some of those websites and then bringing floppy disks. And, trying to download these as HTML dog files or even sometimes, take stuff out if they were large enough so they couldn't fit into a floppy disk or two. So we just had to take this information one way or another. There was no stack overflow or I don't know, any types of groups and online courses. Basically, video online wasn't really a thing because the Internet was 56 cubit per second modems which were taken about 25 minutes to download an mp3 file. Right? So again, we are talking about a where this information was probably one-thousandth of what is currently available online. Yet we were able to find it one way or another from some places and also spending a lot of time on actually trying to build software ourselves at home until late at night and reading some complex computer science books and everything else that we found.

On Finding Resources Then and Now

I remember, again, that was around this period about nearly 20 years ago I remembered and found the C++ book by the Bjarne Stroustrup and we found someone who had a copy and this wasn't something that was sold locally. So, we basically had to go to a Xerox and make manual copies for each of us which was something like this even though the book was this fat. I know this is not the best solution whatsoever, but again information was very scarce. It was very hard to find it. And that's why we had to find some collaborative efforts to make it work. Also, when we were studying say, two basic course of Delphi, we were reading 100% of the documentation and trying to work out every single function, every single command, every single procedure, everything that was available in the help, was there for us to help and we didn't really have enough resources to help out otherwise. So, what I'm trying to say is back in the day, it was ten dozens, probably hundreds of five more complicated to actually study software engineering. And what people have nowadays is the ability to just, I don't know, travel to work and be able to play YouTube videos or Udemy videos or something else on their phones and even being able to actually program on their phones because phones are that powerful right now. The one I'm recording with has a chorus and 8 gigabytes of RAM. It's like more powerful than my previous laptop. So, and still that sort of ability, that sort of capability is something that you really need to recognize. Same goes for the types of software engineering platforms and frameworks and programming languages and everything else that you can pick from.

Different Online Resources

Because even if you have scarce resources on one thing, you can probably find Java resources for programming for the Android platform. You have Google pretty much presenting you complete tutorials from start to finish for a usable application. Again, you have Stack Overflow. You have GitHub and GitHub is completely powerful repository tens of millions of applications that you can download and run and read their code and also read through Commits and backlog conversion, pretty much everything that we didn't have a long time ago. So, there's literally no excuse to not start working yourself and start developing your skills from scratch.

One of the Biggest Misconceptions

Now, the most important thing is that most people struggling with learning upon themselves. What they tried to do is they start with the syntax and expect that when they learn the dozens of keywords and just be able to say, create a function, create a class, they're pretty much ready to go. And now that's one of the biggest misconceptions that I found in software engineering simply because it's like knowing the letters of an alphabet and expecting to have a fluent conversation with legal teams in the counting case. I speak fairly well English and they really can't find myself in decent gourmet restaurants simply because I have no idea what all of those ingredients are. I can't pronounce them and I don't know what they look like. And how about, for example, if you don't know Arabic or Russian or something like that, just adding the alphabet and then be able to just have fluent conversations, right? It doesn't make sense at all.

What You Really Need to Do

So that's why just learning the syntax of a programming language pretty much means nothing. What you really need to do is start solving business problems. That's the most important thing. Now, computer programming in the first place is designed to solve problems that humans face on a day to day by ultimatum then by sifting through the inserting records maintaining archives things like that. So what you again need to do is realize what does an actual business case require, how to build a corresponding application that solves all those business cases. For instance, if you have, one of the standard cases that most kinds of courses study and teach is actually a library application. So you need to consider what does a library look like, what would a librarian need to do, how would books be received. And then, design the corresponding say, database layer, a software desktop application that sits there, probably an online archive like a book collection, everything like this and just start small, start with one piece, start with the book component, book object, book class, and expand from there.

Start Solving More Problems

Once you learn this, once you actually build a couple of useful applications, it would be much easier for you to apply the corresponding design patterns. Start solving more and more and more business problems through programming instead of just focusing on the syntax or instead of just expecting someone at work to mentor you, and coach you and train you. And, actually spend all their time as a software engineer, probably, with a senior who's teaching you, who's actually on the payroll and who's actually being paid to work on an actual application. So again, teamwork is important. Communication is important. Collaboration is important, but that doesn't mean by any means that you can do this, all that yourself, because you have tons of different resources, you have the internet, you have free materials, you have cheap online courses, and you can take it and start building some applications from yourself. Build several applications with tutorials then start to build some pet project of your own and take it from there. Sure, it's going to take a lot of time. It's probably going to be annoying, but this is one of the best ways to start debugging and kind of stumbling and form problems, trying to understand them, solve them, and take it to the next level with your newly acquired knowledge about this.Read More

Project Managers vs Software Engineers?

[embed]https://youtu.be/RYIFZmStnpU[/embed] Try to attend a geek conference and check the heartbeat of developers in the breaks. You'll inevitably hear at least a few battle stories from projects gone wrong due to mismanagement or interpersonal conflicts within a project. 👊 At least the engineering's perspective. [Tweet "Then again, what does it take to manage a team of engineers?"] As engineers are in demand, opportunities are available at all times. The work itself is mostly "behind the scenes", paying "technical debt" is hard to understand, and scaling is supposed to work out-of-the-box with a product that "already works." Makes you question why top tech giants like Google, Microsoft, Facebook have been founded by engineers. 🤔 Here's my take on the common disconnect and how to prevent it. If you've been there, what worked for your organization? project managersCheck out the video above for useful insights.


00:00:07 - Are software engineers, spoiled? 00:01:07 - When managers aren't technical people 00:03:11 - It's pretty poor symbiosis 00:06:17 - A "Steve Wozniak" exists 00:07:53 - The need for mediation


[Tweet "So is there really a disconnect between project and project managers and software engineers?"] Now, I know hundreds of software engineers, probably even in the thousands, because we've met at different conferences. We've worked on projects. I've studied with some of them in high school and universities and you know, there are common complaints by software engineers that they feel underappreciated at work or they have boring projects, their managers suck and stuff like that.

Are Software Engineers Spoiled?

Now there's another contradictory opinion that states that software engineers are spoiled because they have lots of different opportunities from tons of different companies. They're in demand, meaning that they have lots of stuff that they can do, lots of companies they can go to and so on which also leads to low retention rate for most companies when it comes to software engineers simply because again, demand is high. Lots of different opportunities, tons of different perks, companies like Google and the like having their headquarters and lots of goodies basically being offered for those engineers, which isn't something that you're going to see normally for other types of businesses. Like, you just imagine, I don’t know a store clerk or someone like this one, an accountant in a general company, just receiving that kind of benefits and those opportunities and perks and I know business travels or whatever it is for their business. But again, that's another story.

When Managers Are Not Technical People

And everyone who is a software engineer, they know how complicated it actually may maybe, how many challenges there are, how continuous learning takes place and things like that. But indeed, there is sometimes a disconnect between managers and technical people, especially the managers aren't real technical people. Now, the thing is that the kind of the main reason is happening, for the most part, is the lack of background for most of those managers. And as I said, almost every single industry that's not software engineering or something that's in the high tech like Data Scientist, dev ops, system administrators - almost everything else happens in a more outdated conservative corporate environment which is a lot more hostile to people as compared to software engineers especially when it comes to startups and you know, fast-growing companies or some of those tech giants looking for the top engineers out there. So it's, it's just a different game, it's a different type of perception for different types of people.

Software Engineers, by Default, Are Passionate About Their Job

Another thing that's worth noting is that software engineers by default – at least the vast majority of them, are actually passionate about their craft which isn't something that you can normally say for most jobs because according to different stats over 70 percent of the people aren't really satisfied with their jobs or they are just working a regular day job because they need to, to live somehow. But it's not like they love their job. And if you look around yourself you probably have coffee shops or restaurants or you order food from delivery places, you go to the store – all sorts of activities run by people who are not necessarily passionate about what they do. There is not that much of a career growth or career opportunities, shifts are weird, managers are weird as well. So it's, it's a pretty poor symbiosis of what's going on. For some people, they do have their kind of creative perks which are not that well paid such as sicking painters, actors, some singers, kind of enjoying what they do, but it's really a poorly paid job so they're not fully satisfied by themselves either. So, looking at this as a general problem means that most managers coming from different backgrounds, they come with a different perception of their teams and that different perception of the game means that those people are mostly ready to fight fights at work as compared to actually pushing people forward to deliver a greater good.

Why the Disconnect Happens

And that's why the disconnect happens at some places. Of course, that's not a rule of thumb. It's just statistically speaking if there is a manager who is working again, in a store or a supermarket in a bar or some someplace that for eight years or even ten years joining the I.T. industry, they will have a different background. They would be used to different types of problems and world, different types of dynamics, different types of communication which aren't necessarily present in a kind of software engineering company or a tech company that relies heavily on software engineering as a business. So, a disconnect may happen and it's something that should definitely be handled prior to the interview itself. So, those people may actually not be hired even or there should be a decent conversation that states the importance of kind of the I.T. department and the people and staff and career and everything else as a whole so that managers can actually take place and step up as leaders, as someone who's helping out and not someone who's kind of just yelling at people and trying to micromanage them and do, you know, other stuff.

How a Technical Person Is Expected to Manage

Another theory that I have is actually in the fact that like some of the companies who have problems and also hire software engineers, they don't have that sort of mentality simply because the owners and the founders aren't used to working with software engineers. If you think about some of the best companies out there to work for, those are companies like Google, like Facebook, like Microsoft and others that are actually founded by technical people. Now, that's not to say that, “oh great companies are found by technical people or anything like that.” But it means that a technical person is best suited to know what does it going to work with other technical people. What are the challenges? What are the common misconceptions and problems? So it's... it almost comes naturally to just hire other technical people and also ensure that management is in place for those technical people, meaning that if you're an accountant, you need to hire accountants who know exactly what they're dealing with, what are the common problems, what are the common tools to use with them and so on. And if you are managing those people, you know how to do it in the most efficient manner. And if you're hiring managers for those people you can again, kind of transfer your knowledge to those folks so that they are most efficiently taken care of.

Most Popular Technical Co-Founders

Now there are other companies with technical co-founders like even Apple. You know you may have Steve Jobs, but then you have Steve Wozniak who's also someone who's been kind of one of the founding members and someone who's capable enough to lead the technical people. So, with that in mind, managers can definitely be suited. Technical managers are usually better suited to work with technical people but not always. Great managers can take care of other aspects of the management work that is not necessarily related to working day to day with the team. Because as you know, there is resource management, team management, customer management, project management as just handling the product specifics and other areas of management itself. So just working with those people is not necessarily what needs to be done. And also, if you're a great manager on your own, then it means that dealing with software engineers shouldn't be a problem by itself.

Is There Any Guarantee of Ease When the Manager Has MBA?

And then there's another last problem that I can point out. This is a fight at universities that occasionally tend to teach business administration, MBA and other programs which are designed for managers to people who don't have a career background though. So, there are lots of people who enter into management without actually having worked as a regular employee. So, they have to be tricky because first off, they don't really have any management experience in practice, they don't have a team management experience, they don't have any work experience, just working on a project. They don't have industry experience because they haven't worked in a specific organization. So, it gets a lot trickier when you kind of start a job as a manager without actually knowing what you manage, who you manage, how to manage work specifics of the business, business cases, how you sell, how you market and everything else which is related to actually managing your team. Again, that's not to say that some people are better suited than others or whatnot or some people simply don't have the opportunity to kind of start working on management job with software engineers but it's a different dynamics and it requires being adjusted to that specific environment.

The Bottom Line

So, if software engineers sometimes work in companies where they aren't well understood or things like that, it could be the mismatch between the responsibilities of a manager and the responsibilities of a software engineer and how the symbiosis works. With that in mind, of course, there should be mediation, there should be work with upper management, senior management, and even the C-suites and those managers and kind of deciding how to take it further. But otherwise, if you are a developer who is wondering or if you're a manager who's kind of starting a new job or whatnot, feel free to again, watch the video once again see what may work for you, what are kind of the pros and cons, what are the benefits what are some of the required traits to do that and take it from there. If you have any other tips, let me know in the comments. I’m happy to share some recap in the coming videos.Read More

Are Distributed Companies’ Source Code At Risk With Their Employees?

[embed]https://youtu.be/jeEZoWtEMtA[/embed] You hired a random freelance developer and can't sleep at night since they can steal your source code. I hear this all the freaking time. Heck, we have 15 devs or so here, some remote, and I'm fairly content with code permissions (aside from our critical hiring process, of course). But here's the thing. Source code alone doesn't matter. ❓ Can you outcompete iOS if their source code leaked? ❓ Will you outsmart Facebook's users with a clone using the same code? ❓ What about Google? You know, the best search engine in the world? And if someone says "Well yeah, with their database!", that's not how it works. You can't just download 10 million terabytes of data and push it to a server. It's fairly well protected, even if you manage to take a sneak peek, it doesn't really matter due to a dozen other security layers. Bottom line: Your business relies on your industry expertise, contacts, a niche market, vendors, partners, other opportunities, your manpower, and a lot more. Source code is massively important. Tech is running the show for a while now. [Tweet "Source code alone, however, means nothing without the right team and business plan in place."] Are Distributed Companies' Source Code At Risk With Their Employees? Watch the video to know more about this!


00:00:21 - What's the big fuss? 00:01:21 - The core of a business 00:02:01 - How e-commerce stores survive 00:05:15 - You can clone Uber, BUT - 00:07:44 - It never is the holy grail of everything


Are certain companies endangered from getting their source codes stolen from their employees? So I get this occasionally, every now and then from people who say "oh you know it's really dangerous working with certain company" or with a company that's looking at it elsewhere and so on because the code is going to get stolen and this is going to entirely kill the entire business. Now there are very few instances where this can be legit and those instances usually fall on specific terms or specific kind of conditions, such as bioengineering or some exclusive far indeed deals from laboratories and universities and basically companies with no specific business acumen and companies who invest a lot more in R&D, in discoveries, in kind of new bleeding edge tech and new algorithms and new "cure cancer" type of solution than any other business out there.

What Am I Talking About?

If you think about let's say, publishers, like there are tens of thousands, maybe hundreds of thousands of publishers out there, blogs, magazines and different types of sources that produce some sort of media. If you think about it almost 97% or so are running on top of WordPress, WordPress is open source. So, what is the big fuss? We still have lots of publishers because the core and the entity of the business is actually creating and publishing content. They are promoting it and finding the right people who are capable enough to produce that content, write it, publish it and kind of shape it in a way that relates to their target audience and things like that. So by itself, the technology doesn't really matter a lot and most people are already using different flavors of open source in their day to day. Even if you don't think about publishers because that's kind of trivial in the sense of all of the readers are visitors or at least almost all of them. It's kind of a straightforward scenario even if you think about e-commerce, let's say you want to purchase a laptop.

How E-Commerce Survives

How many e-commerce stores in your opinion are selling a MacBook, a Lenovo notebook, a Samsung notebook or something else, probably thousands, if not tens of thousands? But who cares? People use e-commerce stores for different reasons sometimes they just see a good opportunity, a discount or know someone who's selling that, someone who is running the business or the e-commerce itself. They see them at conferences at events or they know the brand from someone else. E-commerce is part of a broader business, a bigger one or they can combine into different services or stuff, or they have watched YouTube reviews of the products and that's how they decided to buy it from that store. So even in that case, there are lots of e-commerce businesses who survive online simply because people can buy from different places and the fact that the e-commerce technology itself is there. Most of the time it's also open source. Again, it's WooCommerce or Shopify, while Shopify it's not open source but it's freely available, Shopify, or Magento or something else.

It's About Their Trust In the Brand

[Tweet "Technology is there but it's all about the core of the business."] So that's why stealing the source code is not as important because let's think about it. You have a company that is building a product, let's say a company like Google or Apple or someone else. Now we do have lots of Chinese brands that are copying iPhone. They launched something that looks in a fairly similar way. Sometimes it runs Android, sometimes it runs some freaking clone of iOS. But, the vast majority of the people don't buy that replicate even if it's five times cheaper than the original iPhone simply because they can buy the original product. They enjoy it, they are fans of the brand, they have been supporting the brand for a while, they believe in the innovations that Apple has allegedly been doing since back in the day and so on. So they're trusting the brand. They do believe in the foundations of the brand, they do believe in the value of the brand, in say Steve Jobs, Tim Cook or some of the other originals like Steve Wozniak or someone else who's been building that brand and product for years. They do remember the iPods of the world and the iPad and the first MacBook’s, and everything else that has emerged from the history of the brand. It's not purely about the new technical gadget because if you think of it, let's say for example iPhone, for many years now, is not the most advanced technological product out there. There are even Chinese brands, let's say Mi, 1+ or some others that are releasing hardware with better capacities, with better let's say cameras, with more RAM, with better CPU's and etc. But that doesn't mean that people are automatically jumping on that ship and just saying "well this has better tech, so that's why I am buying it". [Tweet "Most people are buying based on perception, based on emotion, and based on the brand."] Again that's purely from a consumer standpoint perspective for specific problems.

Can You Clone Uber?

But even if you're building a business, let's say you want to clone Uber - so, lots of people have tried to clone Uber and they wanted to make their own company transporting people across the city or whatever it is, very few have succeeded. Lyft is one of the top competitors of Uber and they were pretty much the second one right after Uber that has started, worked hard and tried to recruit drivers and riders and tried to leverage all of the bad PR that Uber received over the years in order for them to become a successful competitor of Uber and to be more or less an equivalent competitor of Uber as well. But again lots of people can just buy a similar Uber-like solution for probably $500 from freelancer.com. That doesn't mean that they can start a business because running a business like Uber it requires lots of legal hoops, it requires lots of marketing, onboarding for drivers, trying to make assessments and try to set some regulations and rules for making a legitimate brand and a legitimate business model. Then start with some of those, then recruit people who can start working and give them free credit, and this free credit is being paid to the drivers so that they have the incentive to start. You know there is a lot more that goes into building than that. So whatever example you take, Google, Apple, Netflix or someone else. [Tweet "Whatever example you have, the business model has a lot more to do than the source code itself."] Netflix, they're launching their own TV shows and their own movies right. Even if you bring the Netflix technology which is actually quite brilliant and they have lots of innovations and they have some of the most expensive engineers out there.

So Even If You Get the Technology Itself. Who Cares?

You don't have the copyright to the movies, you can't launch new movies, you don't have contracts with specific actors, publishing houses, producers and everyone else in the publishing industry in LA and pretty much everywhere else. So what I'm trying to allude to is working with a remote company may have some dangers more or less one way or another and that's fine. But blaming or being afraid that someone's going to steal the source code is ridiculous because the core, the essential for every business may be heavily dependent on source code in the sense that the business cannot run without technology, the technology has to be good, technology has to support the business needs and has to solve the business problems. All of that is true, I assure you most of the time but that doesn't mean that if someone magically gets the very same clone of that same technology that they can just bootstrap an entire successful business because they don't have your stuff. They can't automatically keep scaling and keep enhancing and improving that they don't have. They don't have the business knowledge, sometimes they don't have patents or intellectual property. Sometimes you have contracts with specific partners, vendors and someone else who's in charge. You know you have lots of competitive leverage to use be it networking, business experience, portfolio, connections, staff recruitment, location, anything that helps you scale and that makes your business successful.

Never The Holy Grail of Everything

[Tweet "Technology is never is the holy grail of everything."] Technology is one of those things but it never is the holy grail of everything. You may need technology but the fact that someone else magically has a copy of your source code by itself doesn't make this a dangerous situation even though it's a hypothetical situation and in practice, it has almost never happened in the first place. So that's pretty much it. If you have any concerns about working with remote teams or remote staff or whatever, let me know here in the comments and I'd be happy to share my experience with leading a distributed agency with 40 people right now and let you know some of the challenges that we've been facing over the past 9 years on the market.Read More

The Difference Between A Junior and A Senior Software Developer

[embed]https://youtu.be/ihK2BXp3uuA[/embed] It's a slippery slope, especially with small agencies giving away titles due to their smaller scale. Niels Bohr once said that, "An expert is a man who has made all of the possible mistakes that could be made in a very narrow field". And this sums up seniority in most areas out there. - The senior developer can solve almost every technical problem with little to no supervision. - Junior developers, on the other hand, can only solve limited types of problems with a small subset of alternative solutions. Disclosing a few essential nuggets in my latest video here. 🎥 What's your take on juniors vs. seniors in your industry? junior software developers vs senior software developers


00:00:07 - What is an expert? 00:02:14 - Senior vs Junior developers in practice 00:04:24 - How to define a career in software engineering 00:05:42 - Going through the learning curve 00:07:57 - What is really crucial even for seniors


[Tweet "Learning - continuous learning - is really crucial even for seniors."] What is the actual difference between a junior software developer and a senior software developer? I get this question frequently from juniors who really want to figure out how to become a senior or how long does it take to become a senior, or what is the actual path to becoming a senior developer. What's the quickest way to become a senior developer and whatnot. And, to be fully honest, different organizations are just handing titles for whatever reasons especially smaller teams and smaller agencies especially less progressive companies where you can become a senior in just a matter of a year with the right attitude, just kind of standing out from the rest of the audience. This isn't really the case for larger organizations where they do have a pretty well-predefined company hierarchy but it's definitely the case in a smaller company.

What is an Expert?

So, Niels Bohr once said that, "An expert is a man who has made all of the possible mistakes that could be made in a very narrow field" - meaning that, experts are really people and I've already talked about experts and how flaky this word is so don't quote me on that. But, seniors and experienced people are the folks who have already gone through all the use cases in a very narrow field. They've made all the mistakes. They know what are the implications, what are the problems, what are the best practices and what will happen when you make mistakes. And, as you can imagine, this means that to become an expert you have to go through the path that leads you to all those mistakes and as tricky as it may sound, it really means that you simply have to fail - fail often, fail a lot, without of course compromising prediction software. But once you go through all that part you can learn from your own mistakes and really figure out what are the best practices and the best ways to make it work. Ideally, you aren't going to go through this path before you even start a job by working on pet projects, by reading lots of programming books and going to, reading, listening to podcasts and going to events and just trying to reduce the number of failures when you still need to go to all those different use cases - meaning that, you need to work on a large set of projects within an organization, understand the different issues, and a bunch of other things. [Tweet "Fail often, fail a lot, without of course compromising prediction software."]

Senior vs Junior Developers in Practice

So, a difference in a practice or how to compare, kind of a junior or a senior, is a senior developer can solve almost every technical problem with little to no supervision and all that all is going to be well documented well tested with inline comments and everything else. So you can easily assign a complex task, a small project to even a mid-sized project to a senior developer and you are going to expect that they will comply with it. They're going to follow the regulations. If there is a problem, they are going to indicate it early on or commented well, documented and everything else. Junior developers, on the other hand, can only solve limited types of problems with a small subset of alternative solutions - meaning that, if you give them a pattern and if you give them a framework and say, you need to replicate it 10 times, it is definitely doable. If it's simple, if it doesn't require too many dependencies - these are usually a junior developer's job.

When the Devs Approach a Task

So, think about, you give, let's say, rebuild WordPress or build a blogging tool and you give that to a junior developer on one hand and the senior developer. So, the junior developers are probably to say, if they know what programming language, what framework, they are going to say, "Yeah, I know Java so I'm going to build it with JSF or its print framework or something else. I'm going to make it work and you know is going to use Oracle because that's what I use and he's going to have different roles and yada yada." But then the senior software developers are going to say, "Wait, first, why do we need to do blogging tool? We already have plenty of those. It doesn't make a lot of sense. To make a decent blogging tool, you have to invest a lot of time, resources, QA. It's expensive." So, they're going to really look for a rationale if it really makes sense, if it's proprietary, if it's limited, they're going to say, "OK, you know if it handles tons of different unstructured data, we are going to use a noSQL database like MongoDB whatever. Then, we're going to do a set of simplified layers if it connects to other javascript applications. We may as well be with Node.JS or it's going to do it with static pages or a bunch of other different things. Right? So, you can definitely kind of wiggle through the choices and figure out what is best for the business.

How to Define a Career in Software Engineering

And with that in mind, really, the career in software engineering is defined by the depth of knowledge and the breadth of experience. So we have the depth of knowledge - you really need to understand a lot about a different field and then you have the breadth of experience in dealing with different types of problems with your knowledge and just to plan your knowledge stack into different sorts of use cases. So, that's pretty much how it goes in a nutshell. Junior developers, again, they are usually familiar with lower subset of paradigms, use cases problems and they don't yet know how to apply new paradigms here. And, most of them, if they have a problem, they're going to get stuck, or they're going to ask a senior or they're going to read something on forums which is not necessarily quite helpful. Simply, pretty much you have to go through all that experience yourself and just get comfortable understanding what are the pros and cons of different tools, paradigms, design patterns, solutions, strategies, frameworks, and be able to analyze and understand what are the implications of using each and every one of those in different use cases because there is no right tool for every job. There are different tools for a reason. They serve different purposes for different audiences for different types of programs. [Tweet "There is no right tool for every job"]

How to Determine Seniority

Sometimes, performance may be an indicator. Traffic could be user base, could be a bunch of other things or security, adaptiveness, number of people available in the organization who can build something other available tools online. What are the pros, what are the cons, what are the business implications of a specific case? And senior developers seem to have lots of experience to be able to comfortably make those assumptions and make actual strategic consulting in order to, again, make the right decision at the end of the day. So, that's more or less, the difference between junior and senior developers. One other note that I'd like to make is that sometimes, senior developers in an organization could be less experienced programmers who have spent plenty of time within the organization because seniority in software engineering for the most part, in most companies, isn't related to the programmings skills you've got - programming knowledge, clean code, faster execution refactoring, fewer regressions, no technical debt and things like this.

Going Through the Learning Curve

But, in some organizations, there is the learning curve when you develop. Or,  meaning that, if the learning curve is really steep, then new developers or even senior developers may start as mid-levels because they can't grasp the knowledge of a business and the business implications, the business context, the business structure, the business model, may be very unique to a certain extent, leading to making it hard for a new person to join in and at the same time, or, on the opposing again, you also have less experienced people who may be acclaimed as seniors simply because they may not be as strong on the technical standpoint but they may take the right and make the right decisions depending on context. They may say, "well I only know, (just as a very rough example), I only know two or three technologies, or two or three frameworks, whatever it is, but I know that in this case, we need to do this because it's a very complicated case. We've already worked with those plants three times over the past five years. We know that they are very specific here. This is going to help us do this. This is going to improve our efficiency here. We already have internal systems that do this and whatnot."

What Is Really Crucial Even for Seniors

This is also the reason why CTOs are not necessarily the best developers in the company. And quite the opposite actually in plenty of companies, CTOs are probably, kind of mid-level skillset or so technically. Or, at least above average. But, they simply have the ability to represent the entire information technology infrastructure, how it tailors to the clients, what the clients need, business requirements, business expectations, being able to pick the right solution depending on timeframes and budget and resources and other things that senior software engineers also have to understand for the most part. The more they understand them, the more possible for them to step up the ladder even further So that's about software engineers. Again, there are different concepts and different ways to represent each one of them and companies may vary. They have different layers and different forms of assessments. But, if you're a junior engineer who wants to really become more senior, practice makes perfect. And also, understanding business requirements, understanding how important is to produce clean code, learning - continuous learning - is really crucial even for seniors and just becoming better and better with every single complete project.Read More

Startup Considerations While Doubling Your Headcount

[embed]https://youtu.be/VDhuyvNJ5_U[/embed] Growing rapidly sounds exciting - but is it really? I was recently asked, "What happens when your business doubles?" 💯 We've managed to pull a 2x growth a couple of years in a row, and aiming to grow by about 60% or so this year alone. And I've always viewed recruitment as a strategic endeavor aimed to accomplish specific goals over time. This means several things: 1. Hiring people for short-term jobs is often a failing decision, excluding freelancers or consultants. 2. Recruiting without a long-term vision will drop retention rates. Career growth matters. 3. Hiring only when demand is high is poor planning. Not enough time to shortlist, interview, hire, onboard people. 4. Keeping plenty of staff members slacking is poor management and an expensive venture. 🎥 Here's what else matters when your team is scaling, troubles that companies face while hiring at large, and creative techniques to keep growing predictably over time. startup considerations


00:00:31 - The challenge, headcount wise 00:02:20 - The slow way VS the other way 00:04:30 - Do you have an employer brand? 00:07:36 - Not everyone is a great manager 00:08:31 - Why most companies are not trying to be the fastest growing startup


[Tweet "Growing rapidly sounds exciting - but is it really?"] So, what happens when your team doubles? Now, in terms of building a company, people pick different kinds of priorities and different types of choices.

What Type of Entrepreneur Do You Want to Be?

Some want to take it as "solopreneurs" or just entrepreneurs who work almost again by themselves, with probably some freelancers or consultants or some vendors or deal with something like drop shipping that doesn't really require you to have so many resources or use some marketplace instead of dealing with marketing and basically pick different choices to keep scaling and keep growing. Like just today I actually met someone, I've been knowing for a bunch of years. He has a super successful business. It's probably as high as seven figures or so and he's pretty much working a lot. He's a broker. He is an agent’s broker - has tons of experience in some very high transaction costs industries. He's a great professional and like, we just met today and he told me that he's working alone which is again pretty admirable. I really love it and he manages to deal with everything by himself which is pretty awesome. On the other hand, you have some other businesses like construction work or some warehouses where your budget or your revenue may be pretty low but you have a high staff, high headcount simply because the nature of the business requires lots of manual labor. And, often this labor means that those are people who are not necessarily super highly qualified but they need to move things around and package goods and a bunch of other things which again requires you to just hire the fast pace.

How It Was like to Start Doubling

Of course, you can imagine startups and we can imagine high growth tech companies or other types of agencies that land clients to a pretty high pace or land some partnerships and grow their customer base. And with that, of course, comes the challenge of growing the business in terms of headcount. Now, we used to have about a couple of years when we grow. When we grew about double, it was when we were fewer people - of course, it was easier. Now for about a calendar year, we were going to be up with about 65% or so headcount wise, which is still something about 50%. It's not nearly double but again, it’s just a major expansion that we're dealing with nowadays. So, a bunch of things happens when your headcount kind of grows exponentially.

What to Consider When Hiring Additional Staff

Now, first off you need to consider the experience of those people. Now, of course, if you're hiring juniors or interns for something like that, you need to have people assigned for them. For example, if you have a boutique agency of 10 people and you decide to create an internship campaign, you may have five people who actually start with little to no experience which isn't necessarily super productive. So, we need to decide how exactly to involve those people in the process.

The Internship Campaign: The "Slow" Way and the "Other" Way

There is the "slow way". You know, you can do a kind of internship campaign that takes six to nine months. You give them tasks. You give them some responsibility and some ownership and expect them to do most of the heavy lifting by only allocating a couple of hours a week or so with them. Now, this isn't super-efficient. It only works to people who are really self-driven people - people who are self-motivated who can do that by themselves. And by definition, not everyone is like this, regardless of their motivation and potential. It’s just temporary, it’s just psychology, it’s just mindset, mentality, working environment, their close circle of friends and a bunch of other things. So that's kind of ruling out one of the groups. You have the other way to just bond someone shadowing one person from your team. But this may get exhausting. Now, first off, not everyone from your team is necessarily a great trainer, leader, teacher or whatever you want to call it, right? Some people are just built for that. Some people or their mentality is all about education and leadership and training which is super awesome. But, that doesn't make the other people who don't enjoy doing that any bad right? They are just as awesome as well just in a different way, more or less. You can also do a kind of hiring a full-time person who's a coach, a mentor. You know, a business guru or of itself just training those people we have now. That's another way to deal with it. But if you're a 10 person agency or a company or whatever, it's probably an expensive resource because this means that someone who is both experienced in your specific industry like a senior person and also a great trainer, a great teacher, a great educator who's able to convey all that knowledge, is passionate enough, is patient enough to deal with people and passionate enough to do that as well. Right.

The Importance of Employer Branding

So again, that's fair for interns. Hiring more senior people - it's a little bit more challenging. It's doable if you really have a very strong brand. Because I already kind of explained in a previous video that it's really hard to keep growing unless you have an employer brand, so I'm going to link the video (Why Is Employer Branding So Crucial For Startups and Business Owners?) in the comments, in case you've missed it. But, bottom line, like if you're for example a 50 person team. Right. If you're a 50-person team and you need to grow double driven by 50 percent, this means adding 25 people to your team or even 50 people, right? And adding those people like, unless you really want to be an army of entry-level force which is rarely a smart thing to do, then adding so many people means you need to find talent. And almost all of that talent is already working somewhere or they are consultants, they're freelancers, they have their own agencies and basically do the business on their own. And convincing them to join you means that you must have a pretty solid track star product that's able to revolutionize the industry as some guys from Apple would normally say. And again this takes time. It's really hard. You need a brand, you need a perception, you need to be everywhere, you need to be a lot of things in order to be able to convince that many great people to join you. And then with great people, you face different challenges. Now, great people, they're used to their own process of work, right? So unless you're are like a major leadership guru in the industry and they use guru on purpose because you know, it's funny. Like not everyone is a guru out there for obvious reasons. So unless you're like the leadership expert in the universe, then it's really hard for experienced people to trust you and follow you and just believe that your process is better than what they used to do for the past 5 or 10 years which is again more or less expected. Moreover, when you ask more people it gets pretty interesting as to how exactly to scale business.

Internal Promotion vs External Hiring

Now again you have a kind of small team like a team of 20, 50, 100 people. You already have some hierarchy. But if you suddenly rapidly grow the company it becomes a little bit harder to manage within the same old company because you either need to bring in external management, or you need to promote some of your own troops or some of the new hires you bring in have to step up as you know some tech leaders, project managers and things like that. And now all these cases may bring different conflicts. Now if you bring someone external as a project manager or a product major situate or a director of something they rarely know exactly what you're up to. They rarely understand your process better. Almost no company is as transparent as possible so that everyone from the outside can join the company effectively in a short amount of time. Also, it's really hard for people who have been around for years to just trust someone external. I had that experience myself in a company. The previous CEO appointed someone else as a CEO. A great guy but like me, we really couldn't work together because he was used to a different industry, different processes, different mentality. It just didn't work out for me and a bunch of other people so all of us quit and the CEO was no longer working for the company a few months later. So sometimes it's not really a great decision that I'm trying to say. Promoting people on your team is often a smart thing to do. But again, not everyone is a great manager. So you could just expect the top 5 people on the team are just suddenly going to become a manager, that's not necessarily the right thing to do. Some of them may not be suitable for this. Some of them may not want to do this. Also, it becomes tricky like if you have a 5 person team and you just want to appoint someone to be the team leader like, why did you choose them, like why didn't you pick someone else on the team? This may create interpersonal conflicts also. Again if you bring new talent who does know the company and who hasn't been as loyal yet because he just joined. How can you promote them to be on top of the food chain? Because again this is counterintuitive and doesn't really make a lot of sense if you think about it. So again those are some of the challenges for a growing high team. [Tweet "Not everyone is a great manager."]

Additional Challenges

Let alone the fact that you know payroll, with onboarding, with just making sure that culture fit is the right, with making sure that people can onboard the pretty much same pace so they can join different projects. You're going to face some troubles there for sure. Some things that you really need to keep in mind that's why most companies aren't trying to be the fastest growing startups because fastest growing disrupting startups through causing other problems or like you have an office space may actually face a challenge of finding enough room in your own office to accommodate everyone else joining on the team. So that's yet another thing you need to think of and moving to a new office space is hard. And trust me I know that because we just moved last weekend. So yeah that's pretty much it, companies dealing with fast headhunting. It's really tricky to find the right people. Sometimes, you're in a rush and you're trying to find people and just trust them blindly which is not necessarily the great thing. We are very cautious about culture but you know I know lots of people who are just hiring whoever comes in because they need to build teams rapidly. Just finding the right mentors, building the right infrastructure, the right processes building the right culture with lots of new people joining in who are going to build the culture and there they may have to change the culture more or less. Those are plenty of challenges that most companies doubling their headcount deal with. So if you think to do that thing twice, this may or may not be the thing for you.Read More