Beginning Software Engineering

Beginning Software Engineering
О книге

Become the applicant Google can't turn down Cracking the Tech Career is the job seeker's guide to landing a coveted position at one of the top tech firms. A follow-up to The Google Resume, this book provides new information on what these companies want, and how to show them you have what it takes to succeed in the role. Early planners will learn what to study, and established professionals will discover how to make their skillset and experience set them apart from the crowd. Author Gayle Laakmann McDowell worked in engineering at Google, and interviewed over 120 candidates as a member of the hiring committee – in this book, she shares her perspectives on what works and what doesn't, what makes you desirable, and what gets your resume saved or deleted. Apple, Microsoft, and Google are the coveted companies in the current job market. They field hundreds of resumes every day, and have their pick of the cream of the crop when it comes to selecting new hires. If you think the right alma mater is all it takes, you need to update your thinking. Top companies, especially in the tech sector, are looking for more. This book is the complete guide to becoming the candidate they just cannot turn away. Discover the career paths that run through the top tech firms Learn how to craft the prefect resume and prepare for the interview Find ways to make yourself stand out from the hordes of other applicants Understand what the top companies are looking for, and how to demonstrate that you're it These companies need certain skillsets, but they also want a great culture fit. Grades aren't everything, experience matters, and a certain type of applicant tends to succeed. Cracking the Tech Career reveals what the hiring committee wants, and shows you how to get it.

Автор

Читать Beginning Software Engineering онлайн беплатно


Шрифт
Интервал

INTRODUCTION

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far the universe is winning.

– RICK COOK

With modern development tools, it's easy to sit down at the keyboard and bang out a working program with no previous design or planning, and that's fine under some circumstances. My VB Helper (www.vb-helper.com) and C# Helper (www.csharphelper.com) websites contain thousands of example programs written in Visual Basic and C#, respectively, and built using exactly that approach. I had an idea (or someone asked me a question) and I pounded out a quick example.

Those types of programs are fine if you're the only one using them and then for only a short while. They're also okay if, as on my websites, they're intended only to demonstrate a programming technique and they never leave the confines of the programming laboratory.

If this kind of slap-dash program escapes into the wild, however, the result can be disastrous. At best, nonprogrammers who use these programs quickly become confused. At worst, they can wreak havoc on their computers and even on those of their friends and coworkers.

Even experienced developers sometimes run afoul of these half-baked programs. I know someone (I won't give names, but I also won't say it wasn't me) who wrote a simple recursive script to delete the files in a directory hierarchy. Unfortunately, the script recursively climbed its way to the top of the directory tree and then started cheerfully deleting every file in the system. The script ran for only about five seconds before it was stopped, but it had already trashed enough files that the operating system had to be reinstalled from scratch. (Actually, some developers believe reinstalling the operating system every year or so is character-building. If you agree, perhaps this approach isn't so bad.)

I know another experienced developer who, while experimenting with Windows system settings, managed to set every system color to black. The result was a black cursor over a black desktop, displaying black windows with black borders, menus, and text. This person (who wasn't me this time) eventually managed to fix things by rebooting and using another computer that wasn't color-impaired to walk through the process of fixing the settings using only keyboard accelerators. It was a triumph of cleverness, but I suspect she would have rather skipped the whole episode and had her two wasted days back.

For programs that are more than a few dozen lines long, or that will be given to unsuspecting end users, this kind of free-spirited development approach simply won't do. To produce applications that are effective, safe, and reliable, you can't just sit down and start typing. You need a plan. You need … … software engineering.

This book describes software engineering. It explains what software engineering is and how it helps produce applications that are effective, flexible, and robust enough for use in real-world situations.

This book won't make you an expert systems analyst, software architect, project manager, or programmer, but it explains what those people do and why they are necessary for producing high-quality software. It also gives you the tools you need to start. You won't rush out and lead a 1,000-person effort to build a new air traffic control system for the FAA, but it can help you work effectively in small-scale and large-scale development projects. (It can also help you understand what a prospective future boss means when he says, “Yeah, we mostly use Scrum with a few extra XP techniques thrown in.”)

WHAT IS SOFTWARE ENGINEERING?

A formal definition of software engineering might sound something like, “An organized, analytical approach to the design, development, use, and maintenance of software.”

More intuitively, software engineering is everything you need to do to produce successful software. It includes the steps that take a raw, possibly nebulous idea and turn it into a powerful and intuitive application that can be enhanced to meet changing customer needs for years to come.

You might be tempted to restrict software engineering to mean only the beginning of the process, when you perform the application's design. After all, an aerospace engineer designs planes but doesn't build them or tack on a second passenger cabin if the first one becomes full. (Although I guess a space shuttle riding piggyback on a 747 sort of achieved that goal.)

One of the big differences between software engineering and aerospace engineering (or most other kinds of engineering) is that software isn't physical. It exists only in the virtual world of the computer. That means it's easy to make changes to any part of a program even after it is completely written. In contrast, if you wait until a bridge is finished and then tell your structural engineer that you've decided to add two extra lanes, there's a good chance he'll cackle wildly and offer you all sorts of creative but impractical suggestions for exactly what you can do with your two extra lanes.



Вам будет интересно