§ 24 — Lessons Learned in the Software Industry
Entrepreneurial Innovative Engineering
A software engineer that has an entrepreneurial sense is ten times more likely to build a market-ready software than an engineer who doesn’t.
That’s simply because any commercial software out there requires more than just good engineering practices, flawless architecture or resilient infrastructure.
A successful commercial software has more to it because we as end users for that software are very complex in our nature, we agree on things and we disagree on others, sometimes we agree on things during certain times or seasons and we completely disagree on the same thing on a different time or occasion.
A successful software that is supposed to be used by people, with all their differences, tastes and perceptions requires an entrepreneurial sense to know when to enter the market, what risks can be taken and what risks needs to be avoided.
Practically speaking this translates into some practices and principles, a mindset that knows where the energy should go and where time shouldn’t be wasted.
Being an entrepreneur and an engineer myself I have learned few things being in business for so long that I’d like to share with you in this article.
History of Entrepreneurial Engineers
Let’s look at most of the successful software companies today, Jeff Bezos, Bill Gates, Zuckerberg and Musk, these were engineers that developed a sense of innovation and evolved entrepreneurially to deliver their innovative ideas to the world.
It’s interesting to see how much fraction and downfalls Apple have had to go through running with just a business guy like Jobs, how much he relied on and conflicted with engineers, but you don’t really hear much of these stories with Microsoft, Facebook, Google or Amazon – at least not at the scale of Apple.
Apple is a good example of how much struggle an entrepreneur has to go through if they don’t have the technical background, Jobs was definitely an innovator, he had a sense of elegance and style and he wanted to make technology an extension of the human person – but his lack of technical knowledge caused him a lot of miscommunications between himself and the engineers he worked with, it became very obvious with the departure of his top engineer and best friend Wozniak of Apple in 1985.
Learning from history and mixing that with personal experience I’ve started seeing a pattern there – questions that I’ve always asked myself about what it takes to make one software company so successful that it’s budget tops an entire budget of a whole 3rd world country versus another that did everything “right” but didn’t get as far?
Let’s talk about these patterns …
Getting There First
I cannot tell you how many times I was able to score a deal with a client or land a job in a company by simply being there first, being ready and on time.
This is the least thing one needs to do and it requires almost no skillset other than being alarmed and cognizant of time and paying attention to detail.
The very house that I live in these days, I was able to land a great deal on it simply by responding to the owner within 10 minutes of them texting me, he said to me I am going to sign a deal with you just because you’re ready and you’re on time!
I didn’t think such a thing would give me much advantage, but evidently, it gives you a great advantage to be the first and the fastest but it’s not always a guarantee, but it’s definitely a factor!
Because with the rhythm of life and technology today everything is happening so fast and people aren’t as patient as they used to be, that’s how the market looks like today, a good engineer needs to adjust to that.
When Jeff Bezos from Amazon was interviewing engineers one of the questions he would ask was: Can you get the job done in 3rd of the time a regular engineer could?
There’s a reason for that, being first gives you advantage in the market, makes you more familiar, more common, and it’s hard for a lot of people to adjust to new technologies when they already have something that does the same thing, so being there first definitely makes a difference.
And big software companies understand that, you can see how many of these companies started developing VRs and Cryptocurrency – Gaming and collaboration tooling and even in the mobile world how many started to explore the foldable phones options even if it’s not fully market-ready like what happened with Samsung.
But being there first, and not being market-ready is a death march, if you don’t have an already established reputation and a user base, it could mean that the reputation you non-market-ready product will illustrate the reputation of your software company forever, you’ll be known as the company with bad products and this other company does it better!
Take Tesla for example, electric cars existed long before Tesla, Google had self-driving cars but they weren’t market-ready, this is how Elon won that market, he said I could do this better, I can create a market-ready product!
Now other companies like Nissan, Mercedes and others are trying to catch up that trend, but people will be more likely to buy a Tesla than a Nissan Leaf for being both there first and being market-ready.
So, what’s market readiness?
Market Readiness
Just because your software works, and it looks “pretty” it doesn’t mean that it’s market ready.
There are apps and websites out there that don’t exactly live up to the standard of design and best practices some other draw, but they are more popular, more profitable and more agile and useful!
Craigslist has basically no user interface, if you look at Craigslist today it looks like a website that was developed in 1998 – a bunch of links all over the place, yet they are a one-billion-dollar company today.
So, what’s the secret of market readiness?
Market readiness is the ability to build something the simplest user would be able to use and understand.
I have seen 3-year-olds who knew how to use an iPad navigate through apps and pick up which videos the want to watch learning all of that in a couple of months!
Being simple and user friendly makes your software more market ready than others.
But simplicity isn’t everything, there’s more to market readiness than that.
It’s important that your software touches on a recurring need into people’s lives, something they feel they need to do on daily basis, like social media!
People feel the urge to communicate and be recognized on daily basis, something the back of their heads pushes them to feel belonging to something, a group, a family or whatever it may be.
If you look at Maslow’s hierarchy of needs and compare it to the most successful software out there you will start to see the pattern, some of these patterns are destructive and some others fulfill a basic need that everyone could relate to.
There’s a bigger game in the market that people call “creating the need” – creating the need for a product basically touches on the exact same thing as any other product, basic needs, getting something faster with the least amount of effort possible to fulfil a specific need.
Amazon gets you food, toys, furniture and everything else within two days – you type in what you’re looking for and you click a button!
Facebook enables you to find like-minded people, groups, family and friends – type in the name and click add friend and you’re connected!
Market-readiness relies heavily on recurring needs, they could be daily, bi-weekly or even annually, whenever they maybe – don’t create something someone “might” use every “once in a while” that’s a product that’s not ready for the market.
But market readiness today is more complex than that, it requires targeting a specific group of beta testers, running surveys and examining feedback before going live to the public!
The technology you use must give you that agility to change features and deploy faster and gather information as fast as possible.
Let’s talk about the technology then!
The Technical Tools
As a software engineer, there are today hundreds of tools that do exactly the same thing, building websites with no coding experience, building websites with little coding experience, testing mobile apps – content management systems and many, many more for every aspect of every software development platform out there.
Some engineers randomly pick up one of these technologies maybe because this is what everyone else is using or this is what the “cool kids” are doing or whatever other reason, and they tend to build every product and every project with these tools.
But sometimes the tool is a huge time-wasting blocker, that makes the process of pushing new features and developing new products nearly impossible without spending days and days configuring and adjusting.
A part of that could be because of the bad architecture, pattern or development style, but another part is the technology itself.
I’ve seen some of the most enthusiastic people about certain technology fully hating it as they see how slow it makes them and how crippled it causes their product to be on delivering new feature and fixing defects.
An intelligent engineer picks up the technology that takes care of the redundant stuff, let it be scaffolding an interface for a CRUD operation or building a pipeline to share a project amongst other engineers.
Some engineers run after the newest “shiny” technology just because it’s new, they don’t give it enough thought to see if it’s market-ready – will it help them get from point A (being the idea) to point B (being the product and end users) as fast and as easy as possible.
For years I’ve been personally using technologies such as C#, Visual Studio and Azure and here’s some of the comments I received back from some of my clients:
“Hassan works quickly and is a patient and thorough explainer. He has sent me two demos - narrated videos explaining the product step-by-step. He is very adept at what he does, and his technical understanding is mind-blowing. “
Here’s another comment from a different client:
“I am currently working with Hassan on multiple app’s and have been pleased with his timeliness and simplicity when developing app’s. He takes time to think through the project and deliver a simple solution through his programming skills.”
The common theme here is “working quickly” and “timeliness” – if I hadn’t used the right technology I wouldn’t be able to receive that level of recommendation – some of these changes would take from 5 – 10 mins to be done, and customers are blown away by how fast things can be done, it doesn’t mean the feature is simple or easy, it means the technology I’m using is helping me get where I want to go faster.
But communication and understanding are a very important aspect of this, if you cannot communicate with your customers, clients or project managers then all of this would fall part, which is what we are going to talk about in the next article ….
… To be continued
We talked in the last article about picking up the right technology that gets you further, faster!
But technology without communication skills is completely useless.
If you cannot communicate the most complex technical terms to your clients in a fashion they would simply understand then you’re just an engineer – someone who’s incapable of communicating with others except for computers.
Let’s dive deeper into communication.
Communication
As an entrepreneurial engineer myself I cannot tell you how important it is for you to be able to communicate effectively with your clients. It could save you a month worth of development effort just by negotiating what they need from a usability standpoint.
But if I were to describe communication (with humans of course) to an engineer I would say it’s the ability to understand the cultural language your client is speaking.
You and your client could be both speaking English to each other, but the common ground between the two of you might almost be non-existent.
Let’s take an example of a client who wants to build a website for construction tools and machinery. You need to go learn about construction and watch a couple of YouTube videos to get a glimpse of how construction folks talk, think and what common terms they use.
It’s important to do that because if your client doesn’t feel that there is a common ground they will lose interest in working with you, they will feel disconnect and unable to communicate their vision to you.
And believe me when I say, whoever your client is, the very fact that you know how to develop software makes them think you’re already a genius – they will try to come out as tech savvies who know the ins and outs about software.
Don’t stop them or embarrass them when they get it wrong – they are not then technical people in this situation - you are!
And it’s your responsibility to educate your clients and take care of their technical needs, make them feel comfortable not knowing particular things and be willing to always inform them for as long as they need about a specific technology or a method you’re following.
Communication also means being able to live at least a year in the future ahead of your client – understand what they might ask for in the future versus what they’re asking for now.
When you live in the future, ahead of your client, you design your software in a way that’ll make it easier to develop potential new features, features that are inevitable if your client is willing to continue the development of software.
There’s a common belief in the software industry that software engineers are not good communicators – which is a belief that created a whole new type of jobs like product owners and program managers.
I personally believe that communication just like any other skill (such as programming), requires training and practicing – trials and errors, knowing that you will run into situations where you’ll be completely rejected or dismissed and you should be okay with that because people are different and you are not for everyone.
When engineers employ their highly trained brains into improving their communication skills they become more efficient and communicative than any others.
An entrepreneurial engineer understands that a good product is completely useless if there’s no way to introduce it to others so they can benefit from it, and in order to introduce a product to somebody you have to have the right skills to communicate with people, to show them how great the product is and what it’s capable of doing.
But communication isn’t just the words you say, it’s when you say them and how you say them.
And while that might sound complicated, in reality it’s not that complicated at all. It’s just like programming – it might look complex and hard for someone who’s not familiar with it, but just like any skill once you practice it, it becomes easier and easier to do.
Communication isn’t always about saying something, sometimes communication is to not say anything at all – yes, in some situations you might make an offer, and wait, don’t bend your client’s ears about how great your product is – let them take their time to decide.
I’ve had a potential client whom I contacted a couple of years ago that reached out to me recently, he remembered everything I showed him.
This is because people process information and make decisions on all kinds of different ways, some rely on their past experiences, some others google similar products and some others just ask around which means your reputation, people who worked with you before and how you present yourself online and in front of others is of utmost importance – you reputation and how you image yourself out there on the web and in your community is everything.
Let’s talk about reputation then!
Reputation
Reputation is how you treated your clients in the past, your experiences and how you present yourself online and among your community.
You could be the fastest engineer with the best tools and highest communication skills. But if you didn’t have a good reputation all of this would become a huge impediment for your business.
That’s because people are more likely to decide not to buy something or enroll in a service merely based on other people’s opinions than just try the product themselves.
Reputation is so, very important to the point that websites like Amazon have decided to mark product reviewers who didn’t have a record of purchasing the product as a measure to make sure someone who didn’t buy the product cannot ruin it’s reputation for others.
Reputation could be on the product level as well as the company or the person level.
I’ve seen some of the biggest deals that could have been made being completely voided because of “what people said”.
You want to make sure you keep all your communications professional, and on point – provide the best service you got no matter what the size of your deal is, smaller or bigger client – smaller clients bring bigger clients and bigger clients bring you all kinds of good reputation to both bigger and smaller clients, that’s why you see so many websites today bragging about their clients especially if they are one of the larger clients – put their logos on their websites even they were competitors – reputation!
Reputation could translate into marketing, but there’s a trick to marketing here, which is to keep it honest, don’t let marketers advertise your services or products to be something that it isn’t. because lying could only get you so far before this one comment on reddit or yelp that spirals into endless amount of bad reviews that costs you your product, yourself and everything else in between!
Some entrepreneurial engineers like Elon Musk decided to go a different route with reputation – he believes if you invest all your money in building a good product, the product will basically market itself.
Tesla spends as little as $6 on marketing per each car compared to $3,000 for a brand like Jaguar for instance – they let the media and their free service which translates to reputation take care of the marketing for them – for free!
Protecting your reputation can only be done in one way, be honest, if you make a mistake admit it, own it and fix it then apologize – I see a lot of companies of all sizes try to find excuses and explain themselves, and that’s such a bad way to go, because people are not stupid, they can read between the lines and some of them will dig deeper to find the truth, it’s a hobby for some and a job for others like journalists, so stay honest to yourself, your craft and what you’re making, combine that with good communication skills, kindness and high technical skills and you’re all set!
Back where I come from, they say one hand can’t clap.
No matter how smart, fast or kind you are, you need friends, partners and people you can trust to keep the ball rolling for your business.
The one man show or the savior with all the good ideas is a myth, behind every great product, company or person you’ll find good partners, people one could trust with his life.
That’s what we are going to talk about in the 3rd part of this article.
… To Be Continued
Behind every great product there’s a team of people that share more than just common skill sets or common interest – they share “chemistry” – they figured out a way to work with each other.
They say alone you can go fast, but with a team you can go further.
No matter how rich, smart or hardworking you are, you need partners – people you can trust with your life to work with on a project of your life.
An entrepreneurial engineer realizes that you need partners in order to achieve a successful product, therefore let’s talk about partners in this article.
Partners
Looking back at most of the successful startups out there, and digging deeper into the history of their success, you will find clearly that it was never a one-man-show.
You might have the most innovative idea that a human being could ever have come up with, but without partners you can only go so far before you end up in a complete halt.
Jobs and Woz, Zuckerberg, Saverin and others, Larry and Sergey and finally Gates and Paul Allen – they come in twos, threes and fours but never a one man show. Why is that?
Because having partners doesn’t just complete the skill sets you’re lacking, it also helps you keep the faith in your product in the darkest times, every entrepreneur out there knows that there are moments of desperation when they thought this is it, my product is never going to make it, and there’s always this partner that brings them back to the arena and helps them keep the faith and continue the struggle to success.
Optimism
We need the moral support because we are not machines, we are mind, body and soul and no matter how smart the mind is and how strong the body is you still need the spirit to keep fighting and going forward to achieve success.
A smart mind and a strong body with no spirit is as good as a fancy car with no fuel.
A fancy car could have the latest tech and the strongest engines, but without a fuel it’s just a useless piece of machinery, a bicycle would be more beneficial than a Lamborghini with no fuel when you need to go somewhere.
And because moral support is important, you need to make sure you surround yourself with optimistic people who believe in the impossible, the glass half full kind of folks who see opportunities instead of difficulties and always hope for the best.
In the last seventeen years in the software industry I’ve come across some of the smartest engineers I’ve ever met, but these engineers where living in corners working on things they could do with their eyes closed and their hands tied behind their backs.
When I approached these engineers to ask them about embracing entrepreneurial engineering without speaking of any specific project, I was shocked to see how internally defeated they were.
They couldn’t see the bright side of anything, no hope or optimism.
I understand how useful that mindset could be when it comes to developing software.
You must think of the worst-case scenario and program defensively against it, you need to be a pessimist to build a resilient software.
But what was surprising is that they couldn’t apply the same concept to entrepreneurship – the concept of seeing a difficulty and planning defensively against it, they preferred not doing it at all.
You don’t need that kind of mindset when you’re starting a new company or building a new product, you need to pessimists who say here’s the worst case scenario and here’s what we are going to do about it, not the ones who say it’s impossible, it’s not going to happen!
When Steve Jobs was working on project Lisa, he ran into an engineer – the best engineer his department that had a mindset of not believing in the impossible.
He never shared the vision, and although he was the smartest, Jobs decided to fire him on spot, because he was as good as a Lamborghini without a fuel!
Trustworthiness
But Partners need to be also people you could trust, blunt honest people who will give you the situation straight without any beautification!
Because when you’re at the inception of a new project, you need to be able to react as fast as you can towards any changes, and in order for you to do that you need to be aware of any of these changes as soon as and fast as possible.
Your partners are your eyes and ears, they should communicate the situation to you as is, and the faster your reaction is to some issues the better the outcome might become.
But what are the rules of trustworthiness?
How do you know if someone is worthy of your trust?
I say trial and error!
You befriend your partners, travel with them, learn about their lives and start smaller projects with them, so how they would react, how they operate and how they react tough situations.
More smaller projects, little things and little situations you will get to learn about your partners, who they are and what they are made of.
The compatibility between partners and chemistry is the most important aspect of any project, that is because any software no matter how small or big it is, it is nothing but a reflection of the communications and mindsets of the people who developed it.
And if the people who develop the software don’t trust each other, the outcome would be a crippled product that is destined to fail and vanish no matter how successful it looks at the beginning.
Software engineer is a very social practice, regardless of how some portrait engineers as people who live in basements and write some code in the dark – that’s the furthest from what engineers really are.
Hustlers
Partners who are optimistic, friendly and trustworthy is a great thing, but if they are not hardworking nothing will ever get done.
I’ve met some people in my life whom I trust with my life, could throw a million dollars in their lap and walk away and know they’ll bring it back.
But some of those weren’t cut out for hard work.
They just couldn’t do the actual work, they wanted to travel, joke and hangout but very little work they could accomplish.
You don’t need that if you want to achieve something – and you can so easily tell the hustler who works long hours walks the extra mile and do the right thing when no one is looking versus those who will work just hard enough to stay in the group and feed off of the success that those who do the actual work gain.
In 2010 I started recruiting some of the students in my college to start the work on the graduation project, I intentionally set three rules to join the project:
-
We will start working on the project a year early.
-
We will meet every day at 7:00 AM.
-
We will produce code or research on daily basis.
Over 23 people wanted to join my graduation project team, but at the time the project was done only 5 were the ones who could stand still and get the project done.
A lot of people will talk the talk, believe in principles and preach them but never apply them to themselves, beware of those, because you will end-up doing all the work yourself while they enjoy their time hanging out and profiting off of your hard work.
Partnership is nearly a fair balance of effort amongst all partners, each and every partner needs to walk the whole team a step closer to success with their own way using their own skill set.
So skill set is very important for a team of partners to achieve a product!
Let’s talk about diversification of skill sets!
Skill set Diversification
It’s important that your partners are good at different skillsets, wear different hats and willing to educate the group about what they are good at.
Just like at war, if you were operating a tank, you need a spotter, a driver someone who puts the bullets in! – each one of that squad is doing something different to achieve the same goal.
And some skill sets are very hard to find, and if you did you might not run into the most trustworthy people who know these skills, this is when some partners decide to outsource some of the work and hire people they can trust to get some parts of the project done.
There’s nothing wrong with that, desperate times call for desperate measures – you have to move forward and take your time picking up the right partners – no partners with an outsourced project is better than a project with partners that are ready to let you down at the first hardship.
Having partners is a great asset to have to build a great product, but you need to believe in your product first before any of that becomes fruitful, if you are building a product just to make profits without it being more than just a “residual income” it’s very likely that your product is going to fail, there’s something about the philosophy behind your product that makes it appealing a wrong that you want to right, a theory behind the action.
Let’s talk about that in the next article.
… To Be Continued
The most important factor at every new product’s inception is for the people developing that product to believe in it.
You have to believe that your product can do better than any alternative and will offer a unique value that no other product has ever done.
Believe in your Product
But in order to believe in a product you make, this product must have a direct impact in your personal life – something that you personally would use to solve a problem you’re dealing with.
Just like school, a lot of people don’t remember most of what they’ve studied in school because it didn’t directly impact their lives, they didn’t have any emotional attachment to what they were learning, it was dull, conceptual and abstract, so they forgot all about it, even if they were excellent students.
eBay
Let’s look at some of the most successful products out there, like eBay, its inception and creator and how it ended up being eBay!
eBay was developed by Pierre Omidyar. Let’s talk about his journey and how he ended up with one of the biggest multinational e-commerce platforms in the world.
Omidyar was a software engineer who started in the early 90s by developing software for Apple Macintosh. Then he decided to start his company with a couple of his friends and his dream project was to develop software for pen-computing.
But he and his friends weren’t directly and emotional invested in pen-computing – it was just a “great idea” that they thought was going to change the world – they thought it was going to be their way to fortune.
But luckily on the side, Omidyar had another project that he was actually emotionally invested in – a project that he built for his wife who was a Pez dispenser enthusiast and collector. She was frustrated with the internet and her search to find other Pez collectors. In an effort to help his wife, Omidyar created an area on his website for her to reach out to other Pez collectors and network with other like-minded people in the collector arena.
And that was the beginning of eBay, an e-commerce website for collectors to exchange goods. He was surprised when he was notified by his internet service providers who informed him, he would need to upgrade to a business account due to the high volume of traffic to his website. The resulting price increase (from $30/month to $250) prompted him to start charging those who used eBay, which, incidentally, was not met with any animosity.
Charging customers resulted in hiring more people, the company has grown bigger and better and today its net revenue is over 9 billion dollars.
The Secret Sauce
It’s the emotional attachment and the heart in your products that constructs the “secret sauce” to making it a successful one.
Because, while we think we are so different from one another – in reality, we are very similar, we share similar interests, we feel the same feelings - fear, love, anger and everything in between, and our experiences aren’t as unique as we think they are. Once we have created a product out of these personal experiences, others who have similar experiences will gravitate towards that product, because it solves a problem for them that they may or may not have been able to articulate or solve by themselves.
A product succeeds when its fully tested over and over again, and when the developer of the product is one of its users, then you have the best quality assurance engineer to guarantee that product actually works!
Developing software that you have no emotional attachment to, then testing it is a bad idea, simply because you will never be able to put yourself in the product’s target user’s shoes.
That’s why releasing alpha and beta versions of products and targeting a portion of end-users to do some market studying became very popular as we grew and learned more and more about how to get better feedback on what we create.
When asked: “Why did you start Facebook?” Zuckerberg answered: “[On the internet] You could find music; you could find news; you could find information, but you couldn’t find and connect with the people that you cared about, which as people is actually the most important thing.”
Build Something You Care About
If you look at the most successful products out there, you will find a deep emotional attachment behind each of them – and that should be a fundamental part in whatever you’re building.
If you pay close attention to Steve Jobs’ speeches to the developers and engineers at Apple, he almost religiously repeated the same sentence: “Build something you care about”.
Something you care about, something that has an emotional attachment to you, a wrong that you want to right – an evil that you want to turn good.
These phrases matter because no matter how smart the people who are building other products are, no matter how many resources they have, their products won’t succeed if they don’t emotionally invest and are not passionate about what they are building.
And that might be one of the reasons why startups might be considered as a threat to some of the biggest corporates – because in most corporates people go to do their “jobs”, but in startups people go to chase their dreams and follow their passion.
There are so many differences between the two, it makes one person willing to invest more time and effort and push harder than an 8-5 employee.
It makes a person willing to go the extra mile even if no one was looking, they do it to apply themselves and explore how far their genius could take them. It’s a personal journey, a personal product - they fell in love with the process regardless of the outcome.
They believed it’s the right thing to do, even if all the odds were against them.
Elon Musk says: “When something is important enough, you do it. Even if the odds are not in your favor”
Conclusion
This concludes my series on entrepreneurial innovative engineering - things I’ve learned and wanted to share with the world. And I have no shred of doubt there’s still a ton more to learn out there. It’s all about the journey of an engineer from the moment they write a “Hello, World” program to the moment they release their million-user product that changes the world.
This is my documentation to the patterns I’ve seen being in the industry myself, from design to development and from architecture to deployment … and beyond.