INFO LOWONGAN KERJA TERBARU KLIK DISINI

Software Engineer Software Engineering: The Best Career Choice

Software is a huge field and the demand for good engineers is staggering, yet there is a very short supply of talent. Why is it that so few people decide to go into software? Some people think they aren't smart enough, or it's too hard and they don't want to exert themselves. Others just don't know anything about computers and don't know where to start. I thought about how I got started in software and hopefully I have some useful tidbits to share that will help you figure out what you want to do.

I am not someone who decided lightly to become a software engineer. It happened slowly over many years, and for most of my life I was sure I didn't want to be one. Now that I am one, and doing well at it, I am so glad it worked out this way. I do not think I'm smarter or better than anyone else, I just worked really hard at it. Yes it's a lot of work, but in the end it could be the best career choice you ever make.

Hello World

I wrote my first C++ kegiatan in high school, in a "Intro to Computer Science" elective they were offering. At the time I had no idea I wanted to do software professionally, I was just curious about programming because I liked playing computer games. During that course we learned enough to make simple command-line programs and games like Tic-Tac-Toe and Battleship. I thought it was so cool how the computer would do whatever I told it to, I just needed to know its language.

That following summer vacation I was jobless and hanging around the house all day with nothing to do. Out of boredom I decided to try writing a more complex kegiatan of my own devising. I came up with the idea to write a kegiatan that would help you solve Sudoku puzzles. You could give it a new puzzle as a file or over stdin and it would fill in the squares, optionally telling you how it deduced each square. It sounds easy enough, but to a fledgling programmer this was a massive undertaking! I worked on it for the whole summer, and most of that time I had nothing to show for myself but a bunch of broken spaghetti code.

In the end I finally got it working, but while developing it I spent hours, even days, trying to debug simple compiler errors and runtime errors because I had no tools for debugging except printf statements. Over the course of summer I dealt with a lot of frustration as I fought with the computer and learned everything the hard way; I realized just how difficult software could be. I decided right then that I wanted to do something else with my life - something low-stress and relaxing.

Engineering at U of M

I got into the University of Michigan College of Engineering and started college without a clue of what I wanted to do with my career. If I had had to decide a major up front I would have randomly picked Mechanical Engineering, because it sounded interesting and hey, at least it's not Computer Science. The nice thing about U of M's college of engineering is that they expect that nobody knows what they want to do, and they design your four year experience around that. Nobody declares a major until at least ingusan year, and until that point you're taking classes that are generic to all engineering disciplines.

One of the courses everyone had to take was Engineering 101, a programming class that taught the basics of C++ and object-oriented programming. Apparently a little programming experience will help engineers of all disciplines. I didn't hate it, but I didn't love it either, and it didn't sway my interests from other fields of engineering. By my second year of college I was toying with the idea of majoring in Electrical Engineering, because I liked circuits and wanted to leave programming to someone who was more interested and capable than me.

My third year of college I took a data structures and algorithms course and that's when things started to change. I was now starting to learn about real computer science and I found it fascinating. I loved learning about efficient search algorithms and special kinds of data structures. After I added those tools to my belt the clouds parted and I started to see the glory that is software engineering. My solutions became more efficient and elegant as my tolerance for complexity increased. I began to notice that other people in class were struggling a lot more than I was, and figured that maybe this is what I should be doing after all.

But my interests are broad, and I remained undecided until the end, still not sure whether I was more interested in hardware, software or digital signal processing. That is why I ultimately decided on Computer Engineering - not quite Computer Science and not quite Electrical Engineering. It's the computer agnostic's best choice for a major, because you get a degree and still have the ability to decide later what you want to do. Just take my early career for example.

My Early Career

My technical career started with an internship at X by 2 during my ingusan year. Originally the idea was that I would be a Computer Science intern, but they quickly decided that I wasn't up to snuff. Understandably so, because the stuff they were doing was all web-based and was heavily database driven, all new concepts to me with just a C++ background. So they found an area where I could help - IT. Since I had the most Linux experience of anyone in the office of 20 people, they gave me the task of "virtualizing" all of their Windows servers onto Linux virtual machines. Then they could run one or two big, powerful servers that each run 10-15 virtual machines and save money on electricity and cooling. I set up every kind of network service imaginable on Linux machines, even joined them to a Windows domain. I learned a ton about being a sysadmin, and they kept me on for much longer than any other intern. I was there more than a year and finally left a couple months before I graduated. I wanted to stay with the company and transition into software development after graduation, but they were convinced that I wasn't Computer Science-y enough and they didn't extend an offer.

I graduated in 2009, basically right into the great recession. I had some initial ideas about what I wanted my first job to be, but at that time I pretty much had to take what was available. I ended up at a small company (5 people) called Servant Systems in Chelsea, MI, doing web development and database stuff, exactly what they said I wasn't good enough at at X by 2. I still had no experience, but Servant Systems saw that I was smart and had faith that I would be able to figure it out quickly. I was thrilled to be able to prove my old boss wrong and excited about my future as a professional software engineer.

My initial experience in software was fairly negative, however, and after about 1.5 years at Servant Systems I decided to do a complete change - not only change jobs but change fields. My software abilities were still very young and impressionable, but the code I was writing was highly constrained and had no room for creativity or individualism. For example I was forced to write everything in VB.NET instead of C#, even though C# would have been the obvious choice for me because of my experience with C++. But the edict came down from the ivory tower that all code must be written in VB.NET so that was that. Also every tool we developed was for the Microsoft platform, and the company had a more-or-less religious affinity towards Microsoft. I am big into Linux and open-source, so it was tough for me always working on a platform that I felt was sub-par. This lack of freedom was stifling to me and was the main driver behind me quitting and finding something new. I wanted to do something else professionally, and study software on my own time with my own rules.

My next job was as a HIL tester at ZF Steering Systems, LLC (now owned by Bosch). HIL stands for Hardware In the Loop, which is a way of testing embedded control software with the sasaran hardware involved. In other words, your software may be perfect, but when you flash it on an embedded device anything can happen because hardware is in the loop. So I wasn't writing software anymore, I was testing it. Even though the job was very monotonous (I just executed and analyzed automated tests all day every day) it left me with creative energy at the end of the day to focus on my own hobby software.

I worked at ZF for 3 years, and on many of those evenings I wrote open-source software. I came up with my own projects, had no deadlines and only implemented the features that I cared about. I was essentially the project manager and lead developer of my own hobby software studio. I wrote a Universal Chess Interface and more recently I've been working on a real-time audio project, among other projects. Those 3 years at ZF doing HIL testing did more for my software career than if I had actually stayed a software developer. Not because my testing experience is so impressive, but because of all the hobby code I added to my portfolio that I can talk about at interviews.

How are Software Engineering Resumes Received?

After some time I eventually decided that I wanted to get back into software full-time. The only persoalan was, would anyone take me seriously as a developer after I spent the last 3 years HIL testing? I was relieved to find that when I finally left ZF in mid 2014 nobody cared about what I had done for 3 years on the job, they were only interested in my hobby code. I also found out just how amazing the job market is for a software developer at this time.

When most people send out their resumes, they're lucky if they hear back from 1 in 10 of the companies they contacted (for some fields extend that to 1 in 100). What I witnessed was that greater than 50% of all the companies I sent my resume to made contact with me, and I got loads of interviews. It only took me 2 weeks to get 2 offers, and one company even flew me out to Santa Barbara, California on a 3-day all expenses paid trip (they didn't give me an offer, but they still treated me like a king for a weekend). The amount of attention my resume generated opened my eyes to the tremendous demand for talented software engineers.

It is literally like this: A talented software engineer can pick a city anywhere on the globe, decide to live there and know that they will have ample employment opportunities. People who are on the fence about getting into software should realize that once you cross a talent threshold job insecurity is a thing of the past. And it's not like being a professional athlete or musician where only a few succeed because the talent threshold is so high. In software you can be mediocre and still make a good life for yourself.

Giving Myself Raises and Promotions

One of the most profound effects of having great software experience is that I have been able to take my career into my own hands on numerous occasions and improve my situation. Most people in the working world have to take what they're given. Maybe they don't like their job, maybe it doesn't pay well, but they don't have any other option so they stay there for years. When I realized that I wasn't happy at Servant Systems I gave myself a promotion in title and pay by joining ZF. They paid me $10K more per year in salary and I no longer had "Entry Level" in my title. I was now a Hardware/Software Engineer. More recently when I got tired of ZF and there was no opportunity for promotion internally, I quit and got a job a dSPACE, who gave me a generous signing bonus and another $10K more per year and the title of Senior Applications Engineer.

I've been at dSPACE for about 8 months now, and the experience I've gotten here is second to none. If I was ever worried that anyone would take me seriously as a software engineer, now I have an iron-clad track record to prove it. I wrote custom FPGA applications, blocksets for Matlab/Simulink, GUI's for the PC, configured Linux images for optimal realtime characteristics, etc...  Most of which was all in the first 6 months when most engineers are just getting up to speed. The experience I added to my resume has been so great that I decided I need another raise and I'm going to give it to myself - if not from dSPACE then from another company. So I updated my resume with the past 8 months of experience and I applied to companies out west, and who did I hear back from but Google. I had applied to Google a number of times in the past but they never responded, but this time it took them just 4 days to absorb me into their interview process. I am still in that process, and am flying out there next week for an on-site interview. We'll see how it goes, but even if it goes poorly, the amount of confidence it gave me that I'm now easily getting my foot in the door at these huge corporations has changed my career expectations.

To Those Deciding on a Career

So in the end what makes software better than any other career? I would say it's the freedom. The freedom of a 9-5 job that switches off when you go home. The financial freedom of having job security and a good salary. The freedom to shape your own career based on what you want to do vs. what opportunities are available at your current employer.

If you're just getting into software, have patience. You will spend a lot of time doing grunt work before people trust you to do cool stuff. It is something that grows on you, so don't worry if you're not immediately carried away and falling in love with it. As was my experience, you may hate it for a long time before you start to love it. Create your own applications and reinvent wheels just to figure out how they work. The more you work at it, the easier it gets and the more joy you get from doing it. It's a self-reinforcing cycle that, once rolling, will convert you into a talented and enthusiastic software engineer forever. Trust me, you'll be glad you did it.

INFO LOWONGAN KERJA TERBARU KLIK DISINI

Iklan Atas Artikel


Iklan Tengah Artikel 1

Iklan Tengah Artikel 2


Iklan Bawah Artikel