We are about to lock-down an app’s code base, before moving to a total rewrite from scratch. But before we move on, it is important that the current version be pretty much bug free, and fully functional.
… Just in case the new version of the app doesn’t hit deadlines on time. At least we will have a fallback position.
Death by last minute changes!
So we decided to implement some last little changes to the soon to retired app, and in the process of making these small changes, not so small bugs crept in. That is a symptom of, and one of the reasons we are doing a rewrite – messy old code base. After many years and developers, the code base is just getting a little to creepy to want to mess with. Developers are scared to mess around.
Test, test again, and retest!
I make it a point to do the testing myself. I know the app like the back my hand, and I can run through things more quickly than anyone. It isn’t the most fun job but since I own the app, it kinda makes sense that I make sure it is working fine before we deploy it.
You can never do too much testing. Especially on old software that has had many developers touch it.
With all the talk about Ai (artificial intelligence,) people are wondering if Ai will rush in, making human coders obsolete. Short answer: maybe in 25-50 yrs!
Ai is slowly being developed, but there is a way to go! Though true Ai will take a while before it is realized. As it develops, you will start seeing the simple jobs replaced by Ai long before it finally gets to coders.
The 3 Categories of Ai
The scientist have divided Ai into three categories:
Artificial Narrow Intelligence (ANI)
Artificial General Intelligence (AGI)
Artificial Superintelligence (ASI)
Today we have lots of examples of ANI Ai: Siri, Google search and self driving cars. This type of Ai can only do a few simple things. A long way off from coding!
The second type of Ai (AGI) is what will eventually replace human coders. AGi can think, learn, plan ahead and communicate. When that happens, Ai will replace all jobs, not just coders.
Coders need to Communicate with Clients
Coding has a lot to do with being able to communicate with humans, since you have to speak with people to figure out what they want in their websites (or apps) that you are building. That’s one thing new coders/developers often overlook – the importance of being able to interact with people. Good social skills is a big part of being a great coder.
Of all the skills that Ai will have to learn, the nuances of human communication will be the most difficult. So long before Ai will start coding, it will replace construction workers, truck drivers, accountants, maintenance workers and many other jobs.
… Ai represents a huge change in our society and likely our culture. Nobody can say with certainty how it will all play out. But what is clear, is that the simple tasks will be replaced with Ai before coding … given how complex coding can be.
Some of the world’s smartest people are sounding the alarm bells about the birth of Ai, this includes people like Bill Gates, Elon Musk
and Stephen Hawking. I think as we get closer to true Ai (Artificial General Intelligence – AGI) rules and restrictions will be put into place and Ai will likely be tightly controlled. This will further slow the adoption of full Ai in any field. So this will further slow the replacement of live coders with Ai.
Ai will change the Role of Coders
As primitive Ai begins to come online over the next 20yrs, you will first see Ai change the role of coders/developers. So as we use frameworks and code libraries (ex: jQuery, Bootstrap) to speed up development today, primitive Ai will slowly works its’ way into development in an assistive role. Instead of replacing coders outright, Ai will merely allow us more freedom to work on the higher level conceptual aspects of an app.
… Sounds good to me!
Finally, given all the experts seem to think true Ai will only be invented in 50 yrs, I wouldn’t be too concerned. In fact, the fabric of society will change radically (due to Ai) long before coders/developers will be replaced.
Any freelance web developer or designer will tell you, that projects come in waves. You could be 2 months without any work, and then get 3 jobs in a day. This is especially likely in the first few years you are working as an independent developer. So, there are a few strategies freelance web developers have to adopt to manage the wave.
1. Be constantly looking for work.
After you make first contact with a potential client (to discuss the basics of a new website or web app,) you will often find that you won’t get the go ahead (and the first payment) for a few months or longer. I’ve seen this process take 6 months or more!
So to account for this, you should be spending at least 5% of your time slowly planting new client seeds. Start putting out feelers by mentioning to friends, family, business acquaintances … even random people you run into on the street, that you are open to new jobs. Constantly be farming for work.
2. Manage your cash.
Unlike employees, freelancers have no idea WHEN they will get paid next. As such, you have to manage your money especially well. That means having a lot of cash saved up in what I call the ‘FU’ stash. You can watch my video on the subject.
3. Work to streamline your workflow.
A good workflow can mean the difference between struggling to pay the bills, and swimming in cash. Once you have a proper workflow, you will be maximizing your time, so you can get a lot done quickly. The more you optimize your workflow, bringing in processes, and/or apps that speed up the time it takes you to get stuff done, the more jobs you can take on, and the more money you can make.
For example, web developers will typically pick a web framework to base all their projects on. In the PHP world, these days people tend to go with Laravel. In the Ruby world, it is Rails. In the Java world, it is largely Spring.
… The point of the framework is to provide a code base and by extension a workflow, that takes care of all the common programming tasks like: database access, authentication, messaging and tasks automation … as examples.
My web development workflow:
When I was an active freelance developer back in the 1990s and early 2000’s, I would take on porjects to align with my workflow, and my own framework. Back then, I didn’t like the frameworks that were out there, so I developed my own Java Pojo based web framework that used the 80/20 rule to manage app development.
Basically, my framework was lightweight and it did not try to do everything. Instead, it took care of the bulk of the work (80%) and so with each new project, I had only the last 20% to build out. This meant I was able to put out projects in 1/5 the time. I would quote very competitively, especially since most developers had crappy workflows and many didn’t use frameworks effectively (if at all!) … and so I could come in cheap but was making great money for my time. I would often have 3-4 projects going at the same time to account for the expected lag in communication with clients.
Theses days we have the luxury of powerful and refined frameworks, so I wouldn’t be rolling out my own. So if you haven’t already, I would strongly suggest you start learning one today.
I’ve been building web apps for over 20 yrs, and teaching PHP since 2006. In that time, I’ve boiled down all my teaching and coding experience to three powerful tips. These three simple things you can do, will make learning PHP development much easier for you:
Take hand written notes as you learn. It’s one thing to watch a video, or read a book. It’s a whole different experience when you take notes as you are learning. The simple act of putting pen to paper, will tell your brain that the information is more important than normal.Because of this, your brain will put more effort into remembering what you are writing the notes about.
… The more senses you activate when learning or experiencing something, the more powerful the memory will be. So when watching a video while writing notes, you are activating sight, sound and touch. The touch comes from the contact of the pen in your hand. By activating the touch feeling, you are giving your brain that much more of an association to the information.
Write code as soon as possible! There is nothing like doing it for real. When you write code, even when you are not sure what all the code means, you will see that your understanding of the code, will come much more quickly. So don’t be afraid to start writing code! For example, on day one of my popular web developer course, students write code…. And they will all tell you, how easy it was to learn PHP with me. A part that success comes from students writing code on day one.
Be prepared to make lots of mistakes! PHP programming is an error-prone process. Even the best coders in the world are constantly making mistakes. That’s why you have Windows 10, and not just Windows. OK, new versions of apps come out for two reasons:
To fix bugs. Bugs are mistakes in code written by professional programmers.
To add new features.
Nonetheless, making errors and writing PHP code go hand-in-hand, so don’t let it bother you when you make them. You might not get something on Monday, but don’t worry, it will probably come to you by Wednesday. In the end, all that is important is that you learn. No one will care if it took you a little extra time.