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.
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 recorded a series of videos I call ‘Careers in Code’, and it is about many things related to coding professionally. The series of videos is less about code, and more about all the things professional coders have to understand.
Drawn from my 20+ experience in the coding arena, there is a lot of good information in there I learned the hard way … you can learn it more easily watching these videos.
… The above 4 are created with PHP. WordPress alone powers something like 25-30% of the world’s websites! Now consider that Facebook is investing heavily into PHP making it better and faster. No such heavy-hitter for Ruby and Rails last I checked.
Also, keep in mind that standard run-of-the-mill PHP, runs circles around Ruby at runtime.
The presence of the 3 biggest CMS’, along with Facebook’s backing, will insure that PHP is here for a long while. Ruby has none of the above.
Ruby is still a biatch, when it comes to getting a webapp online
Try teaching a noob how to get a Rails ‘hello world’ app online. Try teaching a noob to get a PHP ‘hello world’ app online. PHP = upload php page. Done.
Ruby: install gems, read 5 pages, watch incomprehensible videos by nerds who couldn’t teach Hawking ‘hello world’. Good luck with that barrier to entry. PHP is just too damned easy to go live with relative to Ruby and Rails.
What’s a young nerd to learn?
…They rule supreme now, and will for the foreseeable future.
I got into a minor debate with a freshly minted nerd, who was barely out of school … and so, lacking in experience. He thought that knowing advanced math was a requirement to become a developer. Well, that is largely not the case in the real world of software development.
… At least that’s what my 20yrs of experience has taught me. Check out the video of me yapping about this:
This is a video (see below) targeted at those who understand basic PHP and are ready to explore the web development world a little further. You see, when you get into PHP, you will also have to learn about the client-side frameworks out there, things like jQuery and Bootstrap.
What are Web Frameworks?
Think of a framework for a house, scaffolding … or cookie cutters! Web frameworks are just libraries of code (could be code in any language) that speed up the process of doing all kinds of common web design and development tasks.