Advice for Aspiring Career-Hoppers, Part II
As promised, this is the second part of a short series to provide some quick guidance for people who would like to reach out feelers into a possible software development career. As I mentioned in the first post, a lot of this material is recycled from some of my old Quora answers, updated for current times and the tone of the blog.
To be completely clear, Iâm writing this because I know there are people out there who are bored and can use the distraction of picking up a new skill. If you come out of self-quarantine with a marketable skill, thatâs great. But if you donât, youâre no worse off than you were, so itâs also fine to not be interested or to give up part-way through. This is entertainment, not recruitment.
This installment is about the technological considerations youâll probably want to look at to get moving. Itâll probably continue on next week, tooâI want to keep these posts digestibleâbefore we get to the non-technical issues.
Picking a Technology Stack
When I refer to a stack, here, I mean a set of technologies where each piece generally rests on the foundations of another. In web programming, the stack is usually something like the following.
- A computer, which Iâm going to ignore just now,
- A programming language,
- An object-relational mapper that gives the language easier access to a database,
- An application framework, which providesâŚwell, a framework for you to plug in functionality around a minimal application,
- Some libraries to make the framework do additional things, and
- A front-end library to simplify building the user interface.
There are some issues to consider in this choice, some of which may be more important to you than others. And incidentally, if youâd like some more information on databases, I recently posted an overview about what databases are andâin extremely broad termsâhow they work.
Readability
Especially when youâre starting out, you probably want the programming language to be something youâre comfortable reading, because youâre going to read a lot of it. Consider the following code snippets.
users.each do |user|
break if user[:age] > 65
print user
end
orâŚ
(~RâRâ.ĂR)/Râ1âΚR
orâŚ
len = trunc(log10(size * size)) + 3;
sprintf(fmt, "%%%dd", len);
for (i = 1; i <= size; i++) {
for (j = 1; j <= size; j++) {
printf(fmt, i * j);
}
printf("\n");
}
orâŚ
OPEN INPUT sales, OUTPUT report-out
INITIATE sales-report
PERFORM UNTIL 1 <> 1
READ sales
AT END
EXIT PERFORM
END-READ
VALIDATE sales-record
IF valid-record
GENERATE sales-on-day
ELSE
GENERATE invalid-sales
END-IF
END-PERFORM
TERMINATE sales-report
CLOSE sales, report-out
.
Those all do extremely different things, so itâs not a head-to-head comparison, but my point is that each language has its own design philosophy. Some prize looking like English. Some prize looking like mathematics. Some just try to be more memorable versions of machine instructions and donât really care about the userâs comfort level.
You might like the first one. You might like the third one. You might not. My point is that you should start in a language that makes you feel comfortable, not a language that makes me or Mark Zuckerberg or âsome loud jackass on the Internet who wonât shut up about the best language everâ comfortable. Youâre the one trying to learn, not us. We already got what we want.
Accessibility
Youâre just starting out, so you shouldnât spend money on something you might give up on after a week. Fortunately, most tools are free, these days (except for a computer), but youâll find a handful of products that require a monetary investment.
Donât bother with them. They might be useful, once youâve gotten your footing, but so much is made available as Free Software and/or easily found at no cost that youâre better off learning on the cheap and making an investment only after youâve started taking to programming and can better evaluate what the paid tools offer.
Likewise, if you need to sign up for access, donât bother.
The only point where I would recommend spending any money to start is when you donât have easy access to a computer. Iâll talk a little bit about that, later in this post, since that is technically a part of your technology stack.
Accessibility of a different sort might also be an issue if you are living with any physical or psychological impairments, natural or imposed by your environment. I canât give you a whole lot of actionable advice, there, since you know far better than I do what you need. If you canât find clear instructions on how to connect your screen reader, increase the font size, move the buttons apart, use keyboard controls, use eye-tracking, turn off animations, or whatever assistive technologies you might need, thereâs a good chance that the developers didnât think about you, which is unfortunate. This thread raises some particularly interesting points to look out forâor, if youâre a tool developer reading this for kicks, things you should be thinking about to support more developers.
Maintenance
This might not be easy when you donât yet know where to look, but you should make sure thereâs some life in the project. If nobody is updating the software, there are going to be security issues, outdated processes, and eventually fewer opportunities.
Look for recentâwithin the last six monthsâreleases, blog posts, and so forth. The more current and consistent, the more likely the project is going to keep improving as you go forward and the easier itâll be to get help when you need it.
By contrast, I recently considered using two different technologies for a recent project, but neither has been touched in several years. So, I threw those options out.
Community
There are two aspects of looking at the community.
First, just about every piece of modern developer software (languages, frameworks, and so forth) has mailing lists, forums, chat rooms, and similar places to interact. Take a quick look at the interactions, there, to get a sense of the âcultureâ around those technologies. Some going to be friendly and welcoming. Some get frustrated with newcomers. Since youâre eventually going to need help from people with more experience, you want to make sure itâs the former and that it has enough traffic per day that people will see your questions when you need them.
Second, if you are currently working (and are inessential enough to be social-distancing or we figure out contact tracing and/or treatments soon enough to go back to offices), your company probably already employs programmers. Thatâs a valid community. Get to know them and consider learning what they use, since befriending them will get you a better response time and better help than any public chat room. I canât speak for the programmers you work with, but some of the best time Iâve had on the job has been spending breaks helping people from other departments get through their problems.
Job Opportunities
It doesnât really matter as much as you think, but since half of you are screaming at your monitor âall the jobs near me require Varâaq,â sure, go for it!
Donât actually pick Varâaq, though. Not only are those job opportunities fictional to avoid offending a real community, but itâs not well-maintained and thereâs almost no community. I donât want the dumb joke coming back to haunt me in six months when people put it on their job applications.
But my point is that, if your goal is to get a job as quickly as possible and you live in a part of the world where local companies are heavily invested in a specific technology stack, thatâs a good enough option.
A Last Resort Recommendation
As an expedient measure, Iâm going to suggest that, if you canât find an option that you love and donât need a specific setup for a particular job market, you should probably just start with Ruby on Rails. Rubyâs creator wanted the language syntax to look like English, within reason, and has spoken a lot about designing the language for the programmer instead of the computer. Ruby and Rails are both kept up to date. The community has directly invested in making sure it doesnât subtly (or directly) push people away. And on top of that, the Rails idea of âconvention over configurationâ means that youâll spend much less time setting up your applications, leaving more time to work on the interesting parts.
It isnât perfect, of course, and I only recommend it if you have already looked at other languages and couldnât decide. But itâs a good enough starting point and, once you get your bearings, you can always learn whatever the companies near you are hiring for.
If youâre already a programmer, though, keep in mind that the idea of a web application framework has spread quickly, and nearly every significant language has at least one framework associated with it. See the Comparison of web application frameworks for a bunch. For example, Saetta Web Server appears to be a framework for C, something I never expected would exist.
Hey, Donât I Need a ComputerâŚ?
Like I mentioned earlier, if you donât have access to a computer whenever you need itâI grew up with a shared computer in the living room that everybody in the family used for something different and then went to college where the software that my classes needed wouldnât work with my computer, requiring trips to the computer lab when it was openâthis is one of the rare places I would recommend spending money for the sake of the experiment.
Specifically, if you canât test ideas out on your own schedule, itâs going to be frustrating. Even here, though, feel free to go cheap, because youâre not going to notice a big difference in speed when youâre just starting out, if youâre just programming.
You have a few options, here, which unfortunately may be beyond what youâre able to invest in terms of money or work. Iâm making the assumption that you need to buy a computer, here. You might not. Sometimes, people want to get rid of their old computers to make room, in which case you only need to find out about it and work out the social distancing complexities to get it home.
Laptop
For a lot of people, the simplest route is going to be to just order some overstocked laptop from the retailer of your choice. For about two hundred dollars, you can get a system thatâs a couple of years old and could last you for a decent amount of time. Itâs a single unit, so itâs just the one price.
The big problem with laptops, though, is that theyâre generally not made to be upgraded or repaired. So, youâre taking on some added responsibilities for making sure you donât drop and break anythingâthe connection for the power cord tends to be especially fragileâand dealing with disposal when the computer is (eventually) no longer usable. Depending on your situation, you may also need to deal with the added responsibility of security, in that itâs unpleasantly easy for someone to walk off with a laptop.
Desktop
You might also think about a desktop computer. You can often find better desktop boxes significantly cheaper than laptops (prices I see tend to hover around $150, even lower for a âsingle-board computerâ like the Raspberry Pi), but that price wonât include a monitor or other display to see whatâs going on (and usually not a keyboard or mouse), which drives the price back up.
Sort of the flip side of someone walking off with your laptop, a desktop machine is less likely to vanish, but it requires dedicated space.
Tablet or Phone
If you have an Android device and âroot access,â I havenât tried it and it looks like a lot of work, but itâs apparently possible to install Ubuntu on the device, based on this article.
Itâs probably going to be slow and complain a lot about memory, but if you already have a phone (your own or someoneâs old phone they left in a drawer), the option is free, so that sounds good.
Remote
The last basic possibility also requires already owning something that already has a screen, like a phone or a tablet. It also requires a decent Internet connection and some extra work to set things up, but can be cheap and can be easily upgraded to something more powerful later. In this case, you rent a server from a company and connect to it from your device.
The term youâll want to search for is Virtual Private Server, where the company buys extremely powerful computers and uses them to run many âvirtualâ (simulated) computers that you pay to use. After you sign up, you can run something like VNC on your phone/tablet to connect to it.
Itâs not as convenient as a computer sitting in front of you, but it can work, with a little bit of preparation, research, and conversation with their tech support. And itâs relatively cheap, with the big companies in the field having a low-powered computer for a maximum of five dollars per month, but also charging less than a penny per hour, if you can turn it off between sessions.
It does have one huge advantage over the other approaches, though, and something youâll want to keep in mind as you work: Because youâre renting a server on the Internet, you can host your work publicly, meaning that you can show off to your friends and use the server as your portfolio. And if what youâre working on is useful, you can even look into charging for the service and having it pay for its own server costs. Obviously, once you do that, though, you can no longer turn the VPS off after a couple of hours of work.
If it helps, Iâve been happily using Linode to host my websites (including this one!) for more than ten years (and thatâs a referral link, if you want to support me but you can also easily find https://linode.com for yourself, if you donâtâŚ) and itâs not hard to find ad campaigns on technology podcasts offering you a decent amount of free service on competitor DigitalOcean. They both have excellent reputations and the single reason I chose Linode is that DigitalOcean didnât exist when I first needed the service.
Like I said, though, itâs definitely not for everybody. Iâm talking about this so much because thereâs a lot to explain in comparison to âorder a laptop,â not because Iâm pushing the idea. But if you do have a phone/tablet and Internet connection, installing Ubuntu didnât work, and you can put a couple of dollars every month on a credit card, you might be able to get it to work out well for you until you can get a computer locally. Even at five dollars a month, the cheap laptop is only going to be cheaper if itâs still being used after three years.
Next
After youâve had some time to think about and investigate some technology stacks, next Sunday, weâll talk about what I think is generally a good way to learn the technology and specific things to look for.
Credits: The header image is Untitled by WOCinTech Chat, made available under the terms of the Creative Commons Attribution 2.0 Generic license.
By commenting, you agree to follow the blog's Code of Conduct and that your comment is released under the same license as the rest of the blog.
Tags: quora career