Archives

Categories

If you’re new to developing or maybe thinking about getting into programming one of the things that might come to mind is which computer should you be using. I run thedevlife, an account on Instagram and get asked the question very often: What laptop do you recommend?

There are a few factors that you need consider that will help you make this decision simpler. The most significant factor will naturally be your budget. If you have a lot of money or enough money to buy whatever laptop you want, then you will have to do a bit more thinking before you make a decision, although the reality is most people have a budget. Regardless of whether you are on a budget or not, here are the other factors you need to consider.

Gaming Laptop

In some situations programming will not be the only activity, maybe you are a gamer. In my humble opinion, if you’re not going to be moving a lot, I recommend you purchase a gaming desktop. This way you will get more bang for your buck, hardware tends to be cheaper for desktop computers. You can also perform upgrades, later on. Years later that computer will still be fully functional and able to run the latest video games, not to mention you’ll still be able to code on it also for years to come. However, if you must take your computer with you, then your best and only option has to be a gaming laptop.

No Gaming Required

If a desktop is not an option and you won’t do any heavy gaming, the best option for me would be a MacbookPro. I personally would not like to haul a gaming laptop around. Gaming laptops are usually heavier. When choosing a laptop, one of the criteria I really look for is being able to open it up and instantly start using it. I don’t like waiting for that laptop to boot up. I don’t want to wait a minute or two before I can start coding. This is one of the reasons why I like Macs, you pretty much open them, and you are ready to go. Another reason why I prefer Macs is that they have excellent battery life. If you do not want to spend that much money on Mac laptop, choosing a Windows PC with an SSD (Solid State Drive) can give you the almost instant boot up times. SSD used to have a hefty price tag on them, but as of late they have become more affordable. You would be saving some money and not sacrifice much of the performance. I would definitely recommend avoiding mechanical hard drives.

Screen Size

You might think bigger screens are always better, but not on laptops. I used a 17-inch MacBook Pro for a while, and it didn’t work out for me. The bigger the screen is, the more significant the form factor of the computer will be which might not be a big deal at the beginning, but over time it becomes a burden. Too small is not good either. I have tried 14 or 13-inch screens, and I discovered there just wasn’t enough real estate for me when programming. I think a 15-inch MacBook Pro is where the sweet spot is. Screen resolution, that’s another thing. Some people spend the extra money on a 4K screen but keep this in mind, sometimes you can’t really take advantage of all the pixels. If you run your screen at native resolution, you won’t be able to read the small text, and the power consumption on your computer will go up which in turn will reduce the battery life. I recommend you aim for a 15-inch screen with a 1080p resolution.

Power

As far as laptop performance when you are developing, you don’t need a lot of power, unless you will be creating a video game. For the most part, you will either be doing web development, mobile development or back-end development. For these functions, I think a laptop equipped with a mid-range CPU, like a Core i5 with 8Gb RAM would do the job. There is a caveat if you will be doing mobile developing targeting iOS, you will be required to use a Mac. This does not mean you need to get the top of the line MacBook Pro, but you will have to invest in an Apple computer.

Get More For Your Money

Seven or eight hundred dollars should be able to buy you a machine good enough for programming. A strategy that has worked out very well for me (if you don’t mind a used computer) is looking at laptops that are designed for business companies the Dell Latitude, HP Elitebook or the Lenovo ThinkPad T-series. The reason I mention this is that companies usually buy these models in bulk numbers. Employees get laid-off, or computers are upgraded company-wide. The surplus or “old” laptops get sold on either eBay or Amazon where you could get an excellent deal. I currently own a ThinkPad T560 with 16Gb or RAM, 256Gb SSD, 15-inch touch screen and a Core i5 processor. I purchased it a couple of years ago on eBay. It is still in perfect working condition, and I paid only $600 with two years left on the manufacturer’s warranty. At that time when I purchased it, the next generation ThinkPad T570 were available for $1,600.00 with similar specs. You can still find deals similar to this if you spend some time looking which could save you a lot of money.

Summary

There is no perfect laptop. There is no “one size fits all” when it comes to laptops. I have personally used anywhere between 10 or 15 different models of notebooks throughout my career, and my top choice is a 15-inch MacBook Pro. No matter what, I honestly believe you will have to do some experimenting of your own to find out which model works best for you, but keeping what I mentioned above in mind, should give you a sense of direction of where to start.

Talking about Mac vs. PC could trigger a perpetual and heated discussion for both sides. Before I continue, I should clear some things out. Some of you might already be jumping at the bit to correct me. I understand that technically a Mac falls under the personal computer category, so let me give you a few more details about this experiment. I know there are a lot of users who are very passionate about Linux, Unix or other flavors of operating systems other than Windows and MacOS. I apologize in advance; it is not technically accurate to group all non-MacOS operating systems in the “PC” bucket along with Windows. I’m sorry about that, but for the sake of this experiment, I figured it was the best option.

About a year ago I showed my naivete by asking on my Instagram account @thedevlife why developers preferred Macs to do their work. You see, I made the mistake of assuming Macs were more popular. As you might have guessed, I did receive my fair share of messages full of intensity, for lack of a better word. These came mostly from Linux fans who rightfully felt left out. Recently, a young developer who I admire made a post on Instagram making the same assumption. I made that assumption because pictures of Mac computers are trendy on social media and somehow create the illusion that Macs are more popular in development. This erroneous assumption was the main reason that prompted me to run this experiment on Instagram.

The goal of the experiment is not to show that either side is better, it is not an experiment about hardware either. I am not sure what the primary goal for the research was other than the curiosity to know why developers chose one over the other.

These are the results.

1 Hour6 hours9 hours11 hours

When the Instagram story ended 4061 viewed the story and 3203 people voted, the final percentages were 38% for Mac and 62% for PC. Unfortunately, I did not get a chance to capture a screenshot closer to the 24 hours a story post lasts.

Reasons in favor of Mac

Macs tend to hold their value better

Simply because they have used a Mac longer than a PC

The user interface is better

Is needed to code in Swift and develop iOS applications

Windows sucks

Beautiful design

Easiest way to use a computer

Better file structure

AirDrop is really helpful

No automatic updates

Terminal environment

Some applications are made only for Mac

Easier configuration

No driver problems

Better battery life

Mac is more adequate for UI/UX Design

Reasons in favor of PC

A PC is what employers provide at the respective workplace

Linux is free

More affordable than Mac

Windows is a better platform for gaming

Windows 10 is stable

Better memory management

Needed to work with .NET Framework

Bigger developer community for Windows

More applications

More options on hardware

Easier to crack a program on Windows

Love for Visual Studio IDE

Windows is more mainstream in respective city

Many of the reasons shared are debatable and can start a discussion for decades, but please remember these are personal reasons for choosing one side of the other. There are a plethora of reasons why either side was elected, but looking at the results shows that I was indeed mistaken by assuming Macs were popular among developers. Macs might be more popular in some regions, and Mac users might feel more confident to share pictures of their system on social media, but those numbers don’t necessarily represent the number of developers using Mac vs. PC.

How do I get started as a developer? This is probably the question I get asked the most on social media. I run a page on Instagram called @thedevelife, with 47k followers at the time I’m writing this. That question comes up at least once a day. It is also a hard question to answer.

Sometimes people get glamoured by the pictures they see on Instagram of a dude attempting to be code at the beach on a sunny day. I’ve been a programmer for more than ten years, and I have not been able to code at the beach efficiently. I have attempted it a couple times, but it did not work out for me. At least in my experience that has been the case. What I’m trying to say is that sometimes people want to become programmers for the wrong reasons. Aspiring developers like the freedom being portrayed in social media, but sometimes that is all it is, just a portrayal. There is a lot of freedom that comes along with being able to work from any place with a WiFi connection, but there still some limitations. There are a lot of good things that come from being a programmer, the biggest, in my opinion, is knowing that someone out there is using an application you built in their everyday life. I became a programmer because I love to create cool shit and then eventually the perks of being a programmer came along.

When I give advice to someone on how to get started, I lead with the following questions.

What do you see yourself doing as a developer?

Do you see yourself working on the front-end, back-end, maybe programming for mobile devices?

Depending on the answer to these questions, the steps anyone looking to become a developer should take might be slightly different. There isn’t an answer that fits all situations. Also, I cannot provide advice on areas I have not enough experience with like Big Data, AI or IOT. I am familiar with back-end development, mobile, and web development being my strength (my kung-fu is pretty strong when doing work for the web), so if you want to pursue any of those areas I have deficiencies on, I apologize (sad face), I can’t be of value there.

Let me start with bad news first. If you aren’t able to sit in front of the computer for long periods of time and work late nights, sorry to say this might not be for you. I say this because you will have to work long hours to develop an application worthwhile, once that application goes live you might be required to work even longer hours. If the app goes down for whatever reason, you will be expected to show up in the office (or get online at 3AM) to help resolve the issue. At the very least you will have to respond as soon as possible, even if you are working on another project. If you don’t like the sound of this, maybe being a developer might not be for you.

Something else you will need is to have is a mind of a problem solver. I have met programmers who struggle because they are not able to solve a problem or are not resourceful enough to look and find the information that will aid them to resolve the issue at hand. You will not be expected to have a swift solution to every problem that is thrown at you, but the expectation of you being able to solve issues will definitely be a factor in your success as a dev.

Now that we got all the negativity out of the way let’s get into something more constructive. Don’t try to take on too much too fast. I suggest you get proficient at one thing at a time before moving onto learning something else. Figuring out where you want to end up working will help with this. If you’re going to be a full-stack web developer, focus on either the front-end or the back-end until you learn it, then and only then move on to the other. Trying to learn both at the same time might overwhelm you. Let’s explore or this scenario a bit more. Let’s assume you will choose to learn the front-end first, then move on to the back-end and you know your way around a computer, but have not taken any computer science courses.

Front-End Web Development

HTML, CSS and Javascript. Those are the main things you will need to learn to be able to build a UI. JavaScript can be used on the back-end, but in this case, JavaScript will be used for the UI. HTML and CSS, go hand in hand, and without being familiar with those two, you won’t get far, so I advise you learn these first. Then you can get familiar with JavaScript, pure JS without jQuery or any other framework or library. I would only devote enough time to learn how to access DOM elements (by the way if you don’t know what some of the acronyms or terms mean, I will make a list at the bottom of the most common ones) and make simple manipulations to HTML elements. Once you feel comfortable moving around the DOM, I recommend choosing a JavaScript framework. I like ReactJS (technically, React is a library, but many refer to it as a framework), there is also Angular and VueJS which are very popular. All have their pros and cons, the reason why I chose React is that is the most versatile, and once you know ReactJS, the learning curve to learn React Native is small, this will be an advantage if you ever want start building mobile applications. Take some time to do some research and pick the one you think is the best.

Mobile Development

Like web development there a few flavors you can choose from. You can be a truly native developer and learn Java or Kotlin to develop for Android then learn Swift to code for iOS devices. Or, you can choose React Native for which you need to learn JavaScript and develop for both platforms, Android, and iOS at the same time. I personally chose this route because using React Native is just a hop away if you are already familiar with ReactJS. React or React Native will require you to have knowledge of JavaScript. Another advantage is that if you start with mobile development using React Native moving your skills to web development the learning curve will be minimal.

Back-End Development

Here is where you can choose from a plethora of frameworks, some of them are PHP, Python, Java, Ruby On Rails, NodeJs and many more. The best approach for planning out your back-end is to develop a RESTful API your web application or mobile application can access to be able to send and retrieve data securely. All the frameworks or languages mentioned above can help you achieve this. The frameworks I work with are .NET Framework and .NET Core with C# as the language of choice. Again, I was pragmatic with my approach I chose C# because I can build applications for many platforms and there is a ton of documentation on how to get started with Web APIs. The main thing to keep in mind is to make sure you can reuse your code and/or web API(s) as much as you can.

I don’t expect this to be a guide on how to become a developer. I would look at it more like a set of tips that I wish someone would have shared with me when I was starting out. I’d love to hear your thoughts on this, you can find me at @chesco.me or @thedevlife on Instagram.

I recently finished reading the book The Subtle Art of Not Giving a F*ck by Mark Manson. At first glance you might find the title a bit racy or down right offensive. However, if you are able to make it past the first chapter your perspective will likely change. I have to warn you though, the F-bomb gets dropped several times in the first chapter alone. I stopped counting at twenty because I was too busy laughing.

Average is Now Not Good Enough

One of the things that Manson talks about in this book is that we are constantly being overwhelmed with extraordinary stories on all social media platforms. While we are scrolling on our social media feeds whether it be Facebook, Instagram or Twitter, we are bombarded with bits about the richest, the fastest or the most popular. The book explains that average stories do not sell, a concept I happen to agree with. The media prioritizes the most shocking and appealing content to drive sales and product awareness. This is having negative side effects on minds that are still impressionable. Many people are putting themselves down because their lives or stories are not like the ones they find on social media constantly, therefore they start acquiring a sense of inferiority and self-doubt. Here is where the name of the book comes into play. We should stop caring or “giving a f*ck” about everything we see in the media.

Don’t Try to Always be Happy

Manson criticizes books or ideas that encourage people to always have a positive outlook on things. Sometimes we experience things that are bad and it is ok to not be optimistic about them, but rather deal with them as they come without sugar coating them. He also says, “This book is not a guide to greatness.” To be able to solve the problems in your life you must first be able to cope and embrace the fact that sometimes life or circumstances are crappy. Not everyone will lead an extraordinary life, but empowerment will come to you once you admit to yourself the problems you have and decide to face them.

Final Thoughts

Self-entitlement is very popular right now and is not always good. It is not always the kind of entitlement which makes a person think they deserve some sort of special treatment because they think they are better than others, rather the type of entitlement that comes from a person feeling sorry for themselves. Entitlement also encourages people to be politically correct to an unhealthy intensity. Sometimes people just need to deal with their own problems. As Manson says, we need to choose the values that really matter to us and expect to face the problems that come with upholding those values.

Being a web developer is easy in comparison to being an entrepreneur. I’m able to build applications, some take time, but I’m capable of turning an idea into a working service or product. Having help expedites the process, but I’m capable of doing small projects by myself. However, wearing my entrepreneurial hat has been more challenging than developing apps.

Misconceptions about being an Entrepreneur

There is a difference between being a business owner and being an entrepreneur. An entrepreneur has to be able to wear many hats and to have an understanding of software development is only one of them.

Many people picture the entrepreneur life as being glamorous full of excitement and riches, but that is seldom the case. Being an entrepreneur is a tough learning journey.

What lesson did I learn?

I am lucky and grateful that Edifica’s investors believed I had the potential to develop Edifica’s web application with their help. We set out to develop the product and we did a great job doing so. After several months into the development process, we finally had a working application and decided to start marketing.

Soon after we realized we had messed up. We should have started marketing at the same time we started developing the application, maybe even sooner. By the time we were done developing the initial offering, we did not have a community and we didn’t have constant traffic to our site. That was a big problem.

Suggestion

If you are currently working on a product and you are planning to make it available to the public, I recommend that you start letting people know about your product right away. You should keep your ears open and listen to any feedback you might get and take that feedback into consideration while the product is still under development. On Edifica’s case, we started gathering feedback after we had a working product. If we had started spreading the word during the development phase, we could have made better decisions about the product’s features. Planning your product’s marketing early on is crucial.