Is PHP A Horrible Programming Language?

Is PHP dying anytime soon? No, with over 80% of market share in the web space, it’s nowhere near dying.

“WordPress? No way, I won’t waste my time coding PHP.”

I’ve heard that over 💯 times. More importantly… I used to rant against PHP 14 years ago.

Yes, I was young and stupid – and sadly, I am older now.

I was trained in a fairly traditional software engineering environment – computer science classes, algorithms, low-level systems, OS processes. PHP was suitable for none of this. Moreover, this was back in PHP 4 – a lot has changed since.

And now we have a hard time recruiting great talent over, what baby boomers may say, “political issues.” Failing to recognize the value in solving business problems in exchange for “syntax sugar” had been an obstacle.

Here’s my take on why developers rant against PHP.

If you are a software engineer, what annoys you the most in PHP?

Highlights

00:21 – Common questions when choosing a programming language
01:47 – Is WordPress a spoiled kid?
02:52 – Data over just anyone’s advice
04:15 – Why do people blame PHP?
05:32 – PHP development over the years
06:34 – Solving business problems using PHP
08:10 – Stability, Performance, Security

Transcript

Hey guys, Mario Peshev from DevriX here. Today’s topic is why is there so much hatred when it comes to PHP in the software development community? You know, there are a bunch of different programming languages out there. There are Java, C#, Python, Ruby, JavaScript, Visual Basic and tons of other different languages out there.

FAQs When Studying Programming Languages

And when it comes to people actually studying new languages, what they normally do, they look for available jobs or they ask people around them like, “Hey, should I learn this? Should I learn that? Or I found this framework or this CMS or something that is supposedly written in PHP. So is it a, you know, a good career path to dabble into the world of PHP?”

And for the most part, well at least a lot of different developers that are not really specializing in PHP, they’d say, “Abandon that, that’s a shitty programming language. You don’t really want to study it,” and so on and so on, “because it’s not a professional language. It’s a kid’s game. It’s only for website building,” and so forth.

And as a matter of fact, I shared the same opinion when I was an entry-level junior developer, I was also raised in a community of hardcore software developers who were normally using C++ or Java for building enterprise applications. And most of them were really opposed to using PHP for anything beyond a simple homepage. 

Fast forward a few years, I built a company building PHP applications first with CodeIgniter and Kohana and some other frameworks and then switching entirely to WordPress, and now being a team of 30+ people building high-scale applications for various small and medium enterprises.

So since I’ve also taught several trainings, some for WordPress and some for PHP, and also a lot of different kinds of lectures at conferences, there’s a very interesting backstory when it comes to programming languages and platforms. Since we specialize in WordPress, I’m going to start with this first.

Is WordPress a Spoiled Kid?

With WordPress, when you go to a PHP conference, there’s usually that laughter that WordPress is the spoiled kid that’s used to everything being done in a matter of hours and not really paying that much attention and so on and so on. When you go to a web development conference, PHP is getting laughed at because it’s not Ruby, it’s not Python, it’s not Java, and so forth. It’s actually a bit more complicated because Java developers laugh at .NET developers because they used too much drag and drop in Visual Studio, and on the other hand, .NET developers are usually more enterprise and they laugh at other scripting languages like Ruby and Python because they’re too simplified, not enough enterprise.

Data Over Random Advice

It’s a very complex topic. And that’s why I don’t advise anyone to pay too much attention to other people’s advice because it’s often coming from a different perspective.

The truth is, when you are talking about data, according to W3Techs, 83.4% of all websites out there are built with PHP, and you can validate that if you have a lot of free time and some available resources by crawling the top say 10 million websites out there by going to Alexa or some other like SimilarWeb or BuiltWith and so on, and just run a few queries and see whether this website is running PHP or not.

At the same time, WordPress is running over 30% of all websites out there. So WordPress is PHP based of course, and it’s only a fraction of the market share of PHP, even though WordPress alone is taking over 30% of the web. Right? So it’s obviously widely used.

Sure. A lot of the WordPress projects out there are simple blogs and five-page business websites. Nobody’s arguing with that. On the other hand, you do have Facebook, which is built entirely in PHP. Well, not entirely, but obviously the main framework, like probably 80% of their code is PHP. You have Wikipedia, which is in PHP. You have Yahoo, which has a lot of stuff in PHP. And a lot of other professional projects generating and serving tons of traffic with PHP.

Why Do People Blame PHP?

So it’s obviously not that bad. So where does that come from? Why do people blame PHP so much? Well, first off, back when Rasmus created PHP in the first versions of the PHP documentation, you can find several references stating that PHP was not really… Well, it was built for non-developers who can easily tinker with websites and do basic changes. And you can think of VBScript or something else or operating and processing with Excel tables, or just running some basic operations.

That was the initial purpose, but it’s worth noting that PHP was designed in 1994, which was about 24 years back in the day. In 1994, Java didn’t exist, C# didn’t exist, Ruby didn’t exist. A lot of other languages didn’t exist.

And most people do say, “Hey, there’s too much shitty story when it comes to PHP,” and so forth, but case in point is PHP is evolving with time, PHP is getting better with time and of course, there’s some history that’s making it appear as an unprofessional language, because other people weren’t even around back then when PHP was. So that’s something that’s definitely worth considering when it comes to the programming language.

PHP Programming Language Development Over The Years

PHP wasn’t object-oriented by default, it was a weakly typed language, which means that variables don’t really set a specific type, whether they’re integer or string or double float or something else, which is something that you can enforce right now if you want in the future over the past few years. But it started at search.

And it posed some bad programming practices out there. Over time with PHP 5 it became fully object-oriented with 5.3, it introduced namespaces and late static binding and some other things, making it a bit more robust and a bit more professional.

PHP 7 was a major improvement, both in terms of performance, language syntax, concert defining and so on. So it’s much better than it used to be a decade ago, or let’s say 15 years ago. But when you think about the popularity of PHP as a programming language, consider the past 15 or 20 years, if you have been around, or at least if you know what happened 15 to 20 years ago. 

Solving Business Problems Using PHP

What I remember back in the day when I was a young kid playing with tech, we wanted to set forums because forums were the thing after bulletin boards and some other things.

So in order to set up a forum, what you’d normally do is go and install phpBB, vBulletin, Invision Power Board or something else to set up the forum. You want a gallery? No problem. Gallery2. You want a CMS, there were PHP DotNetNuke or something like that. E107, a bunch of other platforms, Mambo, which was the predecessor of Joomla and so on. Drupal showed up, WordPress showed up at some point after being PHP B2/Cafelog and so on.

So almost all platforms out there that were solving business problems were based on PHP because PHP was easy to learn, it was easy to tinker with because those platforms were open source. It played extremely well with MySQL, which was the most popular open-source, well free database platform out there. So there was a good symbiosis, hosting was extremely easy. Virtually every host out there supports PHP applications and there’s a good reason for that.

And when you think of it, lots of available platforms, easy to customize, easy to set up because trust me, try to set up a “Hello, World!” in Java with JSF or even with ASP.NET. It’s extremely complicated when compared to just uploading a few files and running a PHP script.

So in a nutshell, all of those things led to the adoption of PHP. The reason people hate it, first off, again, in terms of language syntax, there are inconsistencies. And that’s true. Function naming, library naming, class naming, setting up everything under the same namespaces, it doesn’t really work in the same way it works with .NET or Java or even with Ruby and Python.

It just doesn’t, it’s a bit more chaotic. Conventions aren’t really adhered to everywhere. And more importantly, most tutorials, and that’s where the bad fame of PHP is coming from, most tutorials out there don’t necessarily care about security or performance. They say, “This is the easiest way to solve a problem,” but they don’t say, “Well, that’s easily exploitable if you just put this in the URL and essentially break the database by dropping a SQL injection there. Or this is easy to do if you have 10 records, but try doing it when you have 10 million records because it’s going to break a toe.”

So that’s the biggest problem. But in terms of performance, in terms of stability and so on, PHP has been proven to work and obviously all the platforms that are running it and the fact that it has 83% of the web website market share out there is proving that. It’s a bit tricky to start, you don’t have one single correct path. Even though frameworks like Laravel and Symfony, and Zend are trying to put the conventions there. Also tools like Composer for package management, object-relational mapping, and active record libraries, and frameworks.

Everything is getting better with time, but you really need to start doing it and you need to keep learning and keep reading, and keep experimenting until you also learn all the concepts of stability, performance, and security.

Aside from that, it’s a great language. It’s very dangerous. You can shoot yourself in the leg, but if you know what you’re doing, it’s a fairly decent one. So give it a shot.

When Will Web Designers and Web Developers Become Obsolete?

For dozens of centuries, human evolution has led to jobs replaced due to innovation.

Chasseurs, musketeers, blacksmiths, haywards, Papias are not in demand in the 21st century. Job requirements evolve since certain jobs become automated or science introduces the need for new occupations.

Will web designers become obsolete? Will web developers become obsolete? Here’s my take on the future of web designers and web developers in an era held by self-driving cars, robots, AI, voice search and video news.

Highlights

00:22 – Here Are The Stats
01:28 – Qualifications Are Not Enough
02:34 – Who Runs The World? Tech!
03:44 – How The Demand Looks Like
04:34 – Ways Web Designers Can Become More Competitive
05:33 – Ways Web Developers Can Become T-Shaped Experts
06:17 – What’s The Edge of A Business Person?

Transcript

Hey guys, Mario Peshev from DevriX here. 

The topic I’d like to discuss today is: will there come a time when web designers or developers will not be needed anymore? 

Will the web designers and web developers become obsolete?

The topic has been suggested by Quora. I wrote a detailed answer there that I’m going to decompose and deconstruct here. Then, I’ll structure in a way that makes sense for the audience.

Here Are The Stats

So, essentially, there are a lot of web designers, web developers in different capacities working out there. According to the European Commission in 2020, there will be a shortage of about 900,000 skilled IT professionals in the industry.

That’s specifically for the European Commission measuring only the European Union. Then, we have the entire Asian market, which is extremely broad. There are Australia, North America, South America as well, Africa even, and basically all around the world.

So that’s an interesting paradigm. We obviously have a shortage of people. There are tons of open jobs available, and not enough people basically able to supplement the business needs of that job.

That’s why we have so many universities and training academies and colleges. Everyone else is trying to teach programming for a living. 

A lot of people are going out of those academies or boot camps or so forth, but many of them are unable to find a job. So why is that? Well obviously, the qualifications are not enough.

Qualifications Are Not Enough

There are a lot of things that one should need to learn and study extensively and understand. And, there’s a need to get into a specific target niche and to a specific mindset, into a specific kind of industry and everything that it encompasses.

Like, for example, for web development, you need to understand operating systems, networks, all that stuff. They’re included in computer science as technical education and basically become a developer, which may be a web developer in particular, but not just the web developer. 

So either way, a lot of people can’t find a job right now. Those who study a little bit harder and spend a little bit more time are able to find a job.

This is fine, but many of those people and many of the people practicing in the web design/web development industry may struggle in say 20, 30 years from now, if the web is not the right medium for them, right?

Because currently, we do depend on social media that’s basically ran through web and searching in Google or Bing or Yahoo or so forth and kind of consuming information through web.

Who Runs The World? Tech!

At the same time when you have a smart device, for example, my smartwatch runs a lot of stuff that’s kind of voice control. This may not necessarily require any websites whatsoever. I do have different devices at home that are kind of smart devices, again, not relying on that. 

We do have smart cars coming up, or self-driving cars or whatever it is that either run through embedded development or through external services.

They’re running APIs that control that without any sort of web interface and that new interface may not necessarily require web, in terms of web design and web development.

At the same time, we do have different types of media. We do have videos like this one right now. There are podcasts.

We have all sorts of information like voice-controlled search out there, which also doesn’t depend on web design.

You know, for a voice-controlled search, you need basically one simple page, that kind of lists videos, or at least you can host it on YouTube or Vimeo or anything else out there.

And also with platforms such as WordPress, Drupal, Joomla and so on, you can solve most of your problems without hiring web developers. 

of lists videos, or at least you can host it on YouTube or Vimeo or anything else out there. And also with platforms such as WordPress, Drupal, Joomla and so on, you can solve most of your problems without hiring web developers. 

How The Demand Looks Like

Of course, there is demand. Demand will be there for another 5, 10, 15 years maybe, but maybe not so much in the next 20 years.

So what we’re discussing is how to become a proficient person who’s capable and skilled in different areas.

In marketing, there is a specific kind of trend for looking for T-shaped marketers.

If you look at the T letter reversed backside, like something like this for example, and that’s not a cross, that’s a T letter reversed backwards, so that’s something where that kind of helps you to excel in one particular niche, be proficient in one particular thing but at the same time understand, grow horizontally, learn everything else there is to know about marketing in general.

So that’s kind of very valuable, very important, something that needs to be studied extensively. And the same goes for web designers and developers.

Ways Web Designers Can Become More Competitive

For example, designers may be kind of looking for different opportunities to apply their design in different forms of campaigns that are not necessarily related to web design such as, even printed ads for newsletters. 

Even if they’re outdated, that’s still something that designers should learn to do or craft campaigns, simple graphics and branding materials, stuff like that.

In order to become competitive, in order to understand what’s the next thing coming in, it could be design for appliances, could be interior design, could be something else that’s still design-oriented or it may simply be a step to learning marketing because a lot of the marketing nowadays is visual. 

We have again infographics, we have featured images, we have social media status images and stuff like that. That’s still visual and designers, this one step for them to kind of become competitive and transition to the next big thing that’s going to be hot in another 10 or 15 years.

Ways Web Developers Can Become T-Shaped Experts

For web developers, it’s the same thing. Again, developers with a traditional computer science degree, with a traditional engineering degree can kind of benefit from that by applying their knowledge of, again, operating systems and servers and computer architectures into a different area. 

For example, their math skills may help them with machine learning or any other sorts of artificial intelligence. Their computer science skills can help them with building robots or even self-driving cars or other forms of engineering and so forth. 

So the most important thing web designers and developers should learn, especially if they’re still starting or still studying that, is becoming kind of T-shaped experts or people who are proficient in different areas. 

What’s The Edge of A Business Person?

You know, a business person can adjust to different forms of business. So even if IT dies in 50 years, a business person knows the basics of running a business, or maintaining a business, working in a business, whatever it is because it’s a skill that’s applied to a wide area of skills.

And that’s only valid for those people who want to study business as a thing, and not just their particular niche without anything else out there. 

So being able to kind of expand on your own knowledge and study extensively, learn iteratively all the freaking time, is really important.

And those people who invest that time, those people who really spend their time, are not going to be threatened by another wave of something else, some sort of technology or something that kind of dramatically drops the number of people needed for something. 

Wix and Squarespace and Weebly

And if we look at site building, again, because we are talking about web designers and web developers, a lot of people joined the industry about a decade ago or even five years ago when it was really easy to charge for setting up a WordPress website, installing a theme, installing a few plugins, whatever it is.

But then what happened is, platforms like Wix and Squarespace and Weebly became popular, and business owners no longer need that specific basic skill. 

Of course, some pay for it, but a lot of those people who didn’t have any technical know-how had to transition back to their old job because they couldn’t adapt to that market.

They were relying on something that simple with a very low and easy learning curve. Something that everyone can kind of pick up in a few hours or even in a few days and relying on that thing doesn’t really help them excel further. 

So those people who actually spend the time on learning professional design or programming or marketing even, they were able to adjust and kind of start selling different packages, start selling services and so forth.

But those who are simply selling pre-installed websites had to get back to their previous jobs because there was no longer a demand for that.

And that happened over just a few years, again, Wix, Weebly, Squarespace, all of them paying hundreds of millions in marketing in order to attract tens of millions of customers now using those websites. 

The Bottom Line

Will the web designers and web developers become obsolete?

Web design and web development, they’re still hot. They’re still trendy. There’s still demand for them. But in order to become competitive, in order to become a great fit, in order to become someone who’s actually needed for a job, someone who’s not going to be replaced by a robot, just become a more proficient expert in a wider area of skills. 

This would let you understand the foundation and understand different specific skills that would be transferable to a given thing, if you decide to choose so, and if the industry kind of sets into a certain manner that really requires that.

What are your thoughts? When do you think will the web designers and web developers become obsolete? Are they really going to become obsolete? Let me know!

Bonus!

Get access to 16 actionable topics that will help scale your business in just 8 weeks! Sign up for my free business email course now.

Why And How Does Open Source Software Exist?

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

Highlights

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

Transcript

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.

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.

Becoming A Successful Web Delevoper Even Without A Team

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.

Highlights

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

TRANSCRIPT

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.

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

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.

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

Watch the video to know more about this!

Highlights

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

TRANSCRIPT

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

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”.

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.

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

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.

The Difference Between A Junior and A Senior Software Developer

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

Highlights

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

Transcript

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.

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.

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.

#1 Tip On Becoming A Better Software Engineer

Beginner software engineers are clueless at work — even with the best mentor on the job. They lack the overview of the bigger picture, corresponding technical layers, operating as a part of a team, utilizing internal tools and a lot more to that.

It may get depressing and troubling, especially in more agile teams and startups.

My key technique is reverse-engineering business and tech requirements.

🎯 Break down the project goals into layers and components.
🎯 Analyze and simplify each one of them.
🎯 Quantify and assign to milestones.

After all, we use reverse-engineering in our lives at any point in time.

📈 School? Investment in a better education or a future.
📈 Career? A step toward a safe workplace unlocking a better lifestyle.
📈 Family? Fulfilling your emotional dreams.

But that’s just my 2 cents. What’s the technique that worked for you?

Better Software Engineer

Highlights

00:00:20 – The difference between a junior and senior developer
00:01:14 – My no. 1 tip and how developers work with it
00:03:06 – An analogy between engineers and managers
00:04:09 – Here’s the shortcut that I’m suggesting
00:04:21 – Problem 1: Jumping the gun too soon
00:05:18 – Problem 1: Thinking way too much
00:06:10 – Recap: Understanding the bigger picture

Transcript

So, here’s my top trick (tip) for junior developers and entry level developers who want to become better at building software applications. I saw a question on Quora that says, “What’s Your Number 1 trick or tip for becoming a better software engineer?” Assuming that this was someone who is entry level, still at university, at their first job or something, and they want to become a better software engineer, which is something admirable, something that I’m really striving to help people with.

The Difference Between a Junior and Senior Developer

So, when trying to answer this question, I was trying to counter question myself with the following. Now, what is the difference between a junior developer and a senior developer and an experienced software engineer out there? So, when thinking about this question, the few answers that came to the top of mind are, experience, the ability to solve complex problems, the ability to predict different types of problems that would come up, experience, context and the ability to see the bigger picture. So, if I tried to take apart some of those, to break them apart into modular pieces, then I have to synthesize that and build them into something more comprehensive and more sane, more or less.

My No. 1 Tip and How Developers Work with It

Now, I would say my number one tip would be building or rather reverse engineering the final platform you’re about to offer. Most people tried to do this. Most junior developers that I’ve worked with, they’re pretty hesitant, they’re fairly chaotic in building software applications because they lack the experience. They don’t know how to start, they don’t know what are the best practices and they simply lack the experience to build a software application.

So, they need to take the more structured route in order to stay sane in the profession because otherwise, they would be fairly clueless, really unaware of what’s the best way to do whatever they’re supposed to do at work. So, in order to do that, they need a level of organization, they need the ability to create some form of a framework which they should follow onwards. So that’s kind of one of the best tips that juniors should follow.

Reverse Engineering as a Project Manager

As an example, rather the best way to do that is through reverse engineering approach which helps people kind of figure out the final solution and then reverse-engineer to the components and kind of elements and modules and everything else they need to build. That’s essentially how project management works too and especially the Waterfall Model.

With Waterfall, you have a client they come with a list of requirements, they need a budget, an estimate, and timeframe. So what managers usually do is they try to ask all the right questions, gather all the required context and then speak with the Dev team in order to get the complete features set in order to complete the project. So of course, it only makes sense, that’s a standard scenario, and the developer should follow a similar approach.

An Analogy Between Engineers and Managers

Now it’s also important to make an analogy, to make, kind of, a parallel between junior and senior level engineers and project managers. Why do I say that? Because with the very same scenario with a project that needs to be estimated, a junior project manager won’t be able to ask all the right questions and that’s completely okay. So, there would be some mistakes here and there. You know you would fail once, twice, three times but every single time you’re going to get better.

You’re going to learn to understand the context. You’re going to learn to build a scenario to build the kind of the least of all used cases that you need to consider and ask your client in order to assess what they actually need. So, what is the most optimal way to build so that they have all the features but at the same time, you know, you don’t budget them with something completely insane given the fact that they want to use 90 percent of the features that you’ve planned to build.

So again, that’s the same parallel between juniors and seniors both in the software engineering field and the project management field too.

Here’s the Shortcut That I’m Suggesting

But the bottom line, the kind of the shortcut that I’m suggesting is just thinking about the reverse engineering of an application. I’ve seen and I’ve been preaching that for a while and I have some people who do one of two things and still fail.

Problem 1 and 2 When Reverse Engineering

Number one is trying to imagine the complete scenario, the complete list of features but jumping the gun too soon and trying to solve those problems without really any sort of sequencing, any type of a project plan. What I’m saying is, you know, someone says I want to clone Facebook, and I say okay, well Facebook has posts, groups, and users. So, let’s just start to build with some users and try to interact with them then let us build some simple dumb posts, then try to work in some groups and take it from there.

So, this is lack of organization like we said a bit earlier, the lack of structure, the lack of organization isn’t really helping beginner developers to take their life into their own hands and build something meaningful and reasonable without having to rebuild that. That’s kind of problem number one.

Problem number two is taking a separate approach like trying to think way too much of what a product needs from the start to the end and not the other way around. If someone wants me to build Facebook, they say, “well I need to be able to do posts, also I’ll need users, also I need groups and I also need video messages and feeds and this and that, this and that”, it gets pretty messed up. You can’t understand all the used cases as to how does everything relate to one another.

So, it gets a lot more confusing and there are way too many different outcomes while if you have a single outcome of the end, it’s easier to reverse engineer it and just try to extract every single module and then plan it as a separate kind of library, as a separate subproject or framework or whatever it is.

Understanding the Bigger Picture

So again, if there is a single, just one trick I can give software engineers especially beginner ones, it’s trying to understand the context in the bigger picture and reverse engineer it in your own kind of subproject management system or given your own time frames and so on. So again, if someone comes and says “well I want Instagram, working on Instagram (I’m only using familiar applications for a reason)”, so if you do that you need to have an action plan on how to build on Instagram over time.

With that in mind, you need to take Instagram as a final platform and you need to break it apart into the different pieces that Instagram has like just the ability to upload a photo, filters, the feed, users, connections and everything else. Everything else from that specifically, so you need to categorize it, classify it and see how are modules connected to one another, which is exactly the context and what is the best way to make it work. Then when you ask the follow-up questions before proceeding further, it’s very likely that some of those questions would be based on your initial due diligence for what does Instagram represents and what does it look like and how does it work behind the surface.

Assessing the Need for Some Constraints

So, with that in mind, you probably need to assess the need for some constraints and by constraints, I mean if you’re building that software what’s the content base that you need to support. Like how many posts should your initial build support, should these be 500; 5,000; 50,000; 500,000; 5,000,000; 50,000,000 and so on. Because this will determine also the software architecture, server level, hyper availability, different high availability and different types of architectures for building the right toolset.

So, this again will also come into play once you have the bigger picture. So yeah, the very same thing goes regardless of the solution, just get the solution try to reverse engineer it, try to break it down into different phases, trying to build kind of an action plan as to how would you approach that and then once you have that just move forward and start building your minimal viable product.

Most of the time it works really well because you understand the end goal, you understand the bigger picture, it’s easier to assess where are you now and what does the end goal look like. It’s also easier to build upon a solid foundation without having to always keep refactoring and cleaning technical debt and it’s less demotivating if you’re just building stuff for the sake of building without actually having different milestones to hit.

Recap

So yeah that’s pretty much it. Try to understand context, understand business problems at hand because it’s really important, it helps you make the right decisions, understand the bigger picture, reverse engineer it, build it into a kind of different milestones and then, take it from there. This has helped millions of young software engineers. Give it a shot. This may or may not work for you but it’s definitely worth trying.

Building And Managing a Web Agency — YouTube Live With Chris LaFay

So Chris LaFay and I connected on LinkedIn after interacting there for several months. We literally bumped into each other while texting on LinkedIn as our messages arrived within the same second.

So, for our first chat, we picked the video format, and discussing our background in starting, building, and running agencies, along with the corresponding challenges.

Seems like our backgrounds are quite similar — we both started hacking around 1997-1999 and kept coding for a continuous period of time, switching to freelance and scaling from there. Over the call, we’ve discussed delegation, company culture, leaderships, scaling processes, hiring people, and a bunch of other intriguing topics for people eager to start a web agency or transition from freelance to business ownership.

We touched on the migration from an engineer to a business owner, too. Both of us still code, but sometimes it’s just a couple hours a week while occasionally it’s almost full-time. It all depends on the current business priorities, and the ability to put on the engineering hack is definitely handy for various reason.

Check out the full video and let me know what your main concern is when it comes to agency growth. Don’t forget to subscribe to my channel.

Can You Build a Successful Business As a Software Developer?

As we all know developers and salespeople usually share different traits. A developer seems to be more analytical.

Most people are more introverted, they are into maths, algorithms and stuff like that and I don’t mean to oversimplify that because I’m a developer myself.

But most salespeople are more extroverted trying to be more dynamic and more actionable in just jumping on calls and e-mails and this and that.

So, it’s a different dynamic in the environment of people that are working together. Usually again, when you see a dev and a salesperson you can easily tell the difference.

Again, I’m seeing most, of course, most stereotypes are no longer effective as for the past few years, but you get the gist out of it.

So, most developers who have spent several years in the company may decide, well, at least some of them may decide that they want to start their own business, become a full-time freelancer, a consultant or directly from an agency.

And to be honest it is getting extremely common and that is the reason why we have so many development agencies out there, and design agencies and SEO agencies and things like that.

But at least for the marketing part because creative people often work in arts agencies and marketing agencies and creative studios that are working more directly with clients we’re understanding the business needs in a kind of a better way.

Understanding The Business Semantics As A Software Developer

While developers are often assigned to a bunch of tasks without really being asked to understand the business semantics of things and of course I’m talking about junior developers sometimes mid-level developers.

When you become a senior developer and senior technical architect, you’re expected that it’s a hard requirement to understand the business semantics.

Because in order to build the right architecture, in order to put all the pieces together you need to understand the business needs, the business expectations, the business requirements in order to pick the right solution for a given problem.

Can A Software Developer Found A Business?

So, now that we have it out of the way, how can a web developer or can a web developer become a founder, a successful one when they don’t possess sales skills?

It’s a very common question, there’s a lot of web development agencies out there, lots of people who have started as developers and decided to fund their own companies and there is a good reason for that.

Statistically speaking, there are lots of those cases. And the reason being is that good web developers and software developers and other types of developers are really smart.

They have a high capacity in terms of brain power and memory and everything else they can collect references to different stories and resources they know where to find stuff.

They think fast, they can analyze business situations. And on top of that, they get lots of business opportunities, so they did get to work on different business problems. It’s always evolving, always in the learning cycle so their brain is always in a learning workflow itself.

And on top of that, the salaries are really great which means that for example as a developer in most places, you can get to start your own business in a different non-I.T industry and probably pay people half of your usual salary or even less.

Again, I’m talking about different types of jobs that are not in I.T., not in digital, not in the medical industry, or law.

It’s simply the gap is too high, so you can start small by even offloading a portion of your salary to a different role which is not an I.T, which means that demand is slower, and the usual salaries are lower.

That’s again I’m oversimplifying. It’s likely that web developers and software engineers may look forward to different opportunities to start on their own which is fine. Again, I still don’t advise most people to take this route because it’s a lot of work that’s not really devolvement related.

Like, when I started as a business owner, first I started as a freelancer and then I founded the company. I soon realized that the time I was spending on development was getting shorter and shorter and shorter and shorter.

Because I had to do sales and marketing, and networking and finances, and accounting, billing, legal stuff, and a bunch of other different things unrelated to what I was supposed to do as a developer, right? Because that’s the essence of running a business. But still, most people believe or it’s a common way to start a business is to just focus on sales.

If you’re a great salesman, of course, you can go door to door. You can do networking events you can again meet up through conferences, you can write cold emails and eventually find clients and when you find clients you can work for them at the same time you can potentially hire people and you can outsource those people to those people.

And of course, there is another misconception here because a great developer is not necessarily a great manager, a great recruiter, a great leader and a lot of other things that a senior, kind of a CEO or a Founder needs.

What Software Developers Can Do About Sales

But regardless if you’ve decided to do that, you have several different options.

Learning Sales

The first of course is learn sales, just become more extrovert, just overcome your objections and everything else start talking to more and more and more clients start pitching your services try to solve problems for us.

This is the number one most important thing and you need to deal with because once you start solving problems there is a high chance that customers are going to come to you asking you to solve their problems by paying you just a portion of the return on investment that you are supposed to get.

That’s the first rule of thumb so to speak.

Finding A Co-Founder

Number two is trying to find a co-founder CEO co-founder is probably the smartest thing that most people tend to do.

They get the business person who is again an extrovert, someone who is great at sales. Someone who can do the sales for them.

And again, that’s a great way. Usually, you get someone who’s V.P. of sales elsewhere or a chief sales officer or someone else who is ready to become a co-founder of your business.

Given the fact that they like the idea so they do the sales part for you and potentially at first they also take care of market analysis and business planning and other bids so that you can possibly stay at the role of CEO for a certain amount of time.

Working With A Sales Agency

Number three is work with a kind of sales agency or something else by sales agencies usually mean all of those lead generation agencies that also do outreach.

This may be a good start for you. Some work, some not. But, if you’re in a niche that’s not that competitive and if you provide something unique, this may be something to do.

Using Marketplaces And Partnerships

Number four, think of using some form of a marketplace. Marketplaces do the kind of marketing for you. And this may be a great idea to utilize their own services so that they can bring new leads one way or another.

Another option of the marketplace is partnerships. Partnerships could be instrumental because for example as a web developer you can partner up with a hosting company with an SEO company, advertising, creative, other things that also work with clients who have websites.

So, if you find the right partnerships, you can work together with the same client and retain them for a longer period.

This could be a mutually helpful relationship by you, also onboarding your own clients to the types of services that your partners are following.

How Developers Can Become Marketers

Next one is marketing. You can entirely bet on marketing which could be outbound and inbound and try to build a brand of yourself investing in press releases, investing in content marketing, PPC and a bunch of other things in order to work around the sales issue.

I know a lot of people who run agencies and they don’t have a sales staff. They don’t really take on sales calls. They only have requests for proposal forms with lots of fields and their clients are only going to that specific form.

Closing that form, sending it and if the company is interested they get back to the client and say we’re starting the relationship so that’s, of course, a great way.

And the last one is you can try to hire if you don’t want to have a co-founder. You can try to hire your V.P. of sales.

Now that gets a little tricky for starting businesses this could be a very expensive endeavor. And more importantly, it’s likely that you cannot teach that specific person the semantics of your own business and the specifics and how to overcome objections because you’re not great at sales.

If you follow Steli Efti from Close.io. They also have a blueprint on hiring salespeople and the blueprint starts with the CEO should be the chief salesman of the company for a while before they onboard their first salesperson.

And then they can start training other people or kind of delegates that to the again, chief sales officer or someone else who is going to be responsible with it.

So long story short, there are different ways to do that. The thing is you really need to decide whether you’re willing to take the financial risks and work the crazy hours and so on. On running a business, that’s the first thing.

The second thing is you need to decide on whether you need sales, or you can go through partnerships or marketing or other channels and whether you’re willing and interested in pursuing and pushing for becoming a great salesperson yourself or you need a co-founder, a V.P. of sales or someone else who can potentially do the heavy lifting for you.

So once you’ve made a decision, you can give it a shot just again make sure that you’re fully in that you’re really interested in pursuing that. And if that’s the case, good luck and probably see you on the interwebs.