Читать книгу Getting a Coding Job For Dummies - Никхил Абрахам - Страница 10
Part I
Getting a Job in Coding
Chapter 2
Exploring Coding Career Paths
Augmenting Your Existing Job
ОглавлениеMany people find coding opportunities in their existing job. It usually starts innocently enough, and with something small. For example, you may need a change made to the text on the company’s website, but the person who would normally do that is unavailable before your deadline. If you knew how to alter the website’s code, you could perform your job faster or more easily. This section explores how coding might augment your existing job.
Choosing a career path
Coding career paths are extremely varied. For some people, the path starts with using code to more efficiently perform an existing job. For others, coding is a way to transition to a new career. As varied as the career path is, so too are the types of companies that need coders.
As more people carry Internet-capable mobile phones, businesses of every type are turning to coders to reach customers and to optimize existing operations. No business is immune. For example, FarmLogs is a company that collects data from farm equipment to help farmers increase crop yields and forecast profits. FarmLogs needs coders to build the software that collects and analyzes data, and farmers with large operations may need coders to customize the software.
To build or customize software, you’ll need to learn new skills. Surprisingly, the time required to learn and start coding can range from an afternoon of lessons to a ten-week crash course to more time-intensive options, such as a four-year undergraduate degree in computer science.
Creative design
Professionals in creative design include those who
✔ Shape how messages are delivered to clients
✔ Create print media such as brochures and catalogs
✔ Design for digital media such as websites and mobile applications
Traditionally, digital designers, also known as visual designers, created mockups, static illustrations detailing layout, images, and interactions, and then sent these mockups to developers who would create the web or mobile product. This process worked reasonably well for everyday projects, but feedback loops started becoming longer as mockups became more complex. For example, a designer would create multiple mockups of a website, and then the developer would implement them to create working prototypes, after which the winning mockup would be selected. As another example, the rise of mobile devices has led to literally thousands of screen variations between mobile phones and tablets created by Apple, Samsung, and others. Project timelines increased because designers had to create five or more mockups to cover the most popular devices and screen sizes.
As a designer, one way to speed up this process is to learn just enough code to create working prototypes of the initial mockups that are responsive, which means one prototype renders on both desktop and mobile devices. Then project managers, developers, and clients can use these early prototypes to decide which versions to further develop and which to discard. Additionally, because responsive prototypes follow a predictable set of rules across all devices, creating additional mockups for each device is unnecessary, which further decreases design time. As mobile devices have become more popular, the demand for designers who understand how to create good user interactions (UI) and user experiences (UX) has greatly increased.
Prototyping tools such as InVision and Axure provide a middle option between creating static illustrations and coding clickable prototypes by allowing designers to create working prototypes without much coding. Still, a person with basic coding skills can improve a prototype generated with these tools by making it more interactive and realistic. Designers who can design and code proficiently are referred to as “unicorns” because they are rare and in high demand.
Content and editorial
Professionals in content and editorial perform tasks such as the following:
✔ Maintain the company’s presence on social networks such as Twitter and Facebook
✔ Create short posts for the company blog and for email campaigns
✔ Write longer pieces for articles or presentations
At smaller companies, content creation is usually mixed with other responsibilities. At larger companies, creating content is a full-time job. Whether you’re blogging for a startup or reporting for The Wall Street Journal, writers of all types face the same challenges of identifying relevant topics and backing it up with data.
Traditionally, content was written based on a writer’s investigation and leads from a small group of people. For example, you might write a blog post about a specific product feature because a major customer asked about it during a sales call. But what if most of your smaller customers, who you don’t speak with regularly, would benefit from a blog post about some other product feature?
As a writer, you can produce more relevant content by writing code to analyze measurable data and use the conclusions to author content. I Quant NY (http://iquantny.tumblr.com), an online blog, is one shining example of data driving content creation. In 2014, the site author, Ben Wellington, analyzed public data on New York City parking tickets, bike usage, and traffic crashes, and wrote about his conclusions. His analysis led to original stories and headlines in major newspapers such as The New York Times and New York Post (see Figure 2-1).
Figure 2-1: Article about a ticket-generating fire hydrant.
Human resources
Those who work in human resources might be expected to do the following:
✔ Source and screen candidates for open company jobs
✔ Manage payroll, benefits, performance, and training for employees
✔ Ensure company compliance with relevant laws, and resolve disputes
Traditionally, HR professionals have not performed much coding in the workplace. The human- and process-driven components of the job generally outweighed the need for automation that coding typically provides. For example, a dispute between coworkers is usually resolved with an in-person meeting organized by HR, not by a computer program. However, the recruiting function in HR may benefit from coding. Hiring employees has always been challenging, especially for technical positions where the demand for employees far exceeds the supply of available and qualified candidates.
If you are responsible for technical recruiting and want to increase the number of candidates you reach out to and source, one solution is to learn some coding to discover people who may not meet the traditional hiring criteria. For example, a company might ordinarily look for developers from a specific university with at least a 3.0 grade point average.
However, increasingly developers are self-taught and may have dropped out or not attended university at all. A technical recruiter who can evaluate code that self-taught developers have written and made publicly available on sites such as Github or Bitbucket can qualify candidates who previously would have been rejected. Additionally, recruiters working with technical candidates improve outcomes by being able to speak their language.
Companies such as Google and Facebook have taken a technical approach to managing the expensive and difficult problem of finding and retaining employees. These companies perform people analytics on their employees by looking at everyone that applies and analyzing factors that contribute to hiring, promotion, and departure, such as undergraduate GPA, previous employer, interview performance, and on-the-job reviews. At Google, this analysis requires some serious coding because more than two million people apply each year.
Product management
Product managers, especially those working on software and hardware products, perform tasks like the following:
✔ Manage processes and people to launch products on time and on budget, maintain existing products, and retire old products
✔ Connect all departments that create a product, including sales, engineering, marketing, design, operations, and quality control
✔ Guide the product definition, roadmap, and business model based on understanding the target market and customers
The product manager’s role can vary greatly because it is a function of the company culture and the product being built. This is especially true for technical products; in some companies, product managers define the problem and engineers design hardware and software to solve those problems. In other companies, product managers not only define the problem but also help design the technical solution.
One of the hardest challenges and main responsibilities of a product manager is to deliver a product on time and within budget. Timelines can be difficult to estimate, especially when new technology is used or existing technology is used in a new way. When you manufacture, say, a chair, it has a set product definition. For a product with a technical component, additional features can creep into the project late in development, or a single feature might be responsible for the majority of time or cost overruns. The product manager helps to keep these variables in check.
The product manager working on a technical product who has some coding skill will be able to better estimate development cycles and anticipate the moving pieces that must come together. In addition, solving technical challenges that arise and understanding the tradeoffs of one solution versus another are easier with some coding background.
Business analysts or integration specialists translate business requirements from customers into technical requirements that are delivered to project managers and that are eventually implemented by back-end engineers.
Sales and marketing
Sales and marketing professionals perform tasks like
✔ Segment existing customers and identify new potential customers
✔ Generate and convert prospective leads into sold customers
✔ Craft product and brand images to reflect company and customer values
Salespeople and marketers expend a great deal of effort placing the right message at the right time to the right customer. For decades, these messages were delivered in newspapers, in magazines, on television, and in radio. Measuring their effect in these channels was difficult, part art and part science. With the movement of messages to the Internet, we can now measure and analyze every customer view and click. Online marketing has created another problem: Online customers generate so much data that much of it goes unanalyzed.
The salesperson or marketer who can code is able to better target customers online. If you’re a salesperson, generating leads is the start of the sales funnel, and coding enables you to find and prioritize online website visitors as potential customers. For example, when Uber launched their mobile application, it was available only in San Francisco. The company tracked and analyzed the location of users who opened the app to decide which city to launch in next.
If you are in marketing, identifying who to market to is as important as identifying what message to market. Website visitors reveal behavioral and demographic data about themselves, including location, web pages visited, visit duration, and often gender, age, employer, and past online purchases. Even moderately successful websites generate tens of millions of records a month, and coding can help spot trends such as the 25-to-29-year-old females in Nebraska who are suddenly interested in but are not purchasing your product. Marketing messages become more efficient when you know the segments you are targeting and how they are responding.
Legal
Professionals providing legal services might perform the following tasks:
✔ Identify and manage legal risks in agreements and transactions
✔ Ensure ongoing compliance with relevant laws and regulations
✔ Review documents such as prior cases, business records, and legal filings
✔ Resolve disputes through litigation, mediation, and arbitration
Historically, the legal profession has been resilient to advances in technology. I include it here because if lawyers who code are able to more efficiently perform their jobs, professionals in any other industry should be able to benefit from coding as well.
Coding knowledge may not assist a lawyer with delivering a passionate argument in court or finalizing a transaction between two Fortune 500 companies, but the bulk of a lawyer’s time is spent on document review, a task that could benefit from coding knowledge.
When reviewing legal documents, a lawyer might read previous cases in a litigation, check existing patent filings before filing a new patent, or examine a company’s contracts in preparation for a merger. All these tasks involve processing large amounts of text, and current legal tools enable, for example, wildcard searching (such as using new* to find New York, New Jersey, and New Hampshire).
However, the use of regular expressions – code that searches for patterns in text – could help lawyers review documents faster and more efficiently. See Figure 2-2.
Figure 2-2: Use RegExr.com to practice searching with regular expressions.
For example, suppose you are a government lawyer investigating an investment bank for fraudulently selling low-quality mortgages. The investment bank has produced two million documents, and you want to find every email address mentioned in these documents. You could spend months reviewing every page and noting the email addresses, or you could spend a few minutes writing a regular expression that returns every email address automatically.
As the government lawyer reviewing those documents, one of many regular expressions you could use to find email addresses is .+@.+\..+. Much like the * wildcard character, each symbol represents a pattern to match. I show it here only as an example, so don’t let the code intimidate you. This regular expression first looks for a least one character before and after the @ symbol, and at least one character before and after a period that appears following the @ symbol. This pattern matches the username@domain.com email address format.
David Zvenyach, a government lawyer and computer programmer, has created two websites of interest to lawyers. The first site, SCOTUS Servo, logs a message whenever the Supreme Court changes an already issued opinion and is available at https://twitter.com/scotus_servo. The second site, Coding for Lawyers, teaches lawyers code that could be helpful in the practice of law and is available at http://codingforlawyers.com.