I was interviewed a while back for a paper about software engineers from Stephen. He gave me several questions and I tried to answer them to the best of by abilities at that time.
1. What do you enjoy about your job?
My job is a little different than most Programming jobs, because I do it for the government. I work on a special specific project that contribute to national security and even international security. The fact that as a government contractor you have to take a large amount of security measures to make sure your software doesn’t break in front of the customer during mission capable times is something to be stressed over. Most software these days can have several hundreds of “known” bugs, but when your a government contractor, you need to make sure your software is vetted with no “known” bugs or problems. Testing in this environment can be large while writing the actual software it self can be small. The problem has to be thought through before one line of code is written. There is a famous quote that goes “80% mental, 20% execution” and programming is no different. You don’t want to have to rewrite your code so a lot of mental thought has to go into it.
On a side note, my almost favorite thing to do is experiment. Most programmers are required to push out a certain amount of code a week. I don’t have any restrictions and have the ability to experiment a lot.
2. What characteristics make a great programmer?
Characteristics and values are two different and two of the same thing. A man named Ben Rady said it best in terms of values:
- Working software
- Clean Code
- Rich Communication – I think he meant here that you must be able to tak back and forth with another programmer.
- Flexibility over efficiency
- Sustainable Pace – Don’t over pace your self
- Simplicity – Code needs to be as simple and as fast as possible.
I take those values to heart. As a programmer you must have those in order to work in the field. You don’t have to be ethical, but you need to start with those values.
Photo by Joi
As for characteristics:
I would base it off a list generated by Steve Riley, (he made the list and I will explain it a bit more.)
- Be a great problem solver – If you think about it, software is solving most problems today in the world. In either making life just plain easier or just solving a paper process. Someone has thought about all these problems when they first started and most software made today just makes those problems just easier and faster. This is a number one for me. You must be good problem solver.
- Being Lazy and driven at the same time – When you are lazy, you want the fastest and easiest possible solutions. When you are driven, you will get the job done no matter what. If you combine the two, a programmer who is lazy and driven will both find the fastest and easiest possible solution and make sure he gets it done.
- Ability to understand other peoples code – A simple fact is, as a programmer you will be going over other peoples code in either examples you find or old code that has done the project your now upgrading. To give you the best example of this. Microsoft Excel 2003 and 2007 have completely different code bases. The code is completely different. The programmers need to read the old Excel code and generate their new code. A simple but not very well known fact is that Microsoft programmers took Excels old code, Commented it OUT entirely and rewrote the code. The commented out code is STILL in the 2007 source code because they always want to see how the programmers in the past did it.
- Have a passion for programming – Its going to be your life long job, I would hope you have a passion for it.
- Love learning for the sake of learning – If you don’t learn, you will NOT succeed in the programming world today. Code, Frameworks and new languages come out every two years or so. The programming art is still very young. The community is still very young and in its infancy. Its still growing up. You have to realize this and keep up with the community. It is a requirement. You have to enjoy to keep learning.
- Being good at math – Now I don’t know the stats of how many programmers actually deal with real math, but I think its probably dwindling a bit. A professor out of MIT said “A good Programmer has been programming for 2 years. A Great programmer has been programming for 6 years OR has been programming for two years and has taken some algorithm classes.” That quote explains it all. Its about how high you want to go on the totem poll.
- Having good communication skills – You have to clearly express your thoughts to other people. They don’t have to be socially inept, just make sure they can give a little straight talk.
- Extreme Optimism – It goes right along with problem solving. You have to believe you can do it or you will never be able to get it done. There are big problems at my company that I experience on a daily basis. You have to make sure you believe you can get it done.
3. In detail, what do you do in a typical day?
I can’t truly explain in detail, but for the few few minutes of my day, I look over any email that has been sent. My email is somewhat the first notification if my software has failed. So I see if any problems happened over night. I then catch up on any reading that is needed. I don’t surf the internet, but I must spend a few hours a day researching and learning. Due to programming being my full time job, I do require that I catch up on the recent news and try to learn something each day. I don’t pick up a book, but I actually read a bunch of articles and code demos online till about 11am. I have subscribed to about 50 or so blogs that I go through each day. I can justify it by not having to pick up a programming book each day at work. Instead I get the free stuff out on the internet. I would suggest every programmer do the same thing. Its another reason why the IT book market is crashing terribly. Everything is being learned now these days from demos and tutorials online. There is no need for a book really these days. At about 11 am after getting into work by 8am, I start to get into the mode of programming. I work on code for the rest of the day. I think Microsoft expects their programmers to write about 200 lines of code a day. I think I touch this and sometimes surpass it. I code in ASP.NET and C#. So does Microsoft. These days, It is a known fact that Microsoft uses 98% C# and no C++ anymore. C++ is starting to mellow out. I go home at 6pm each day after a full days work and taking a few 5-10 minute breaks in between. I then start programming on my startup projects at home.
4. Where does one look for programming careers?
Just throw your resume up on Career Builder and job listing sites. If you have at least a years experience, its not hard to get a job these days. Even though the economy sucks, Technical recruiters are still seeing a double digit growth in recruiting for IT related jobs. By the time recruiters salvage through career builder, you could probably get a few calls a month for programmers in your area. Its still very easy to find a job as a programmer. Look for job boards. Most big bloggers these days have job boards. They are a great place to start. I must say, that if you can code and are in college or highschool still, don’t think about getting a job. Think about creating a startup business. Create a website and make a bit of money off of it. Venture capitalists are looking to seed money into startups more than ever these days because of the economy.
5. If you could go back in time to your first day on the job, what advice would you give yourself?
Don’t fret, everything will happen in time. You will learn all you need to learn and you got the job. Now all you have to do is keep it.
6. What are some downsides to being a programmer?
I get bored super easy at work. There is no challenge for me. Its all meaningless. Its almost like getting to do busy work assigned by your teacher. They just give It to you for you to stay busy. Programming can be like that sometimes…
7. What is the best thing about being a programmer and why?
This is an easy one. If you have a big imagination, its super easy to create anything you want a computer to do. Its one of the most gratifying things in this world. It’s the same reason why bridge builders love to build bridges or why architects love to design. When they see there work done and in use, its absolutely a thrill. The programmer though has the ability to make software faster and cheap. Bridges still need many people and could cost millions. Software doesn’t need many. Its very easy for a programmer to get started and have an application working and in use two months down the road. It’s a thrill to build something and see it working.
8. Tell me something about your self?
I got expelled out of high school for hacking. I was the first in my high school to be caught for hacking. It was a first for them. When I went back the next year, I was not allowed to touch a computer at all, unless supervised. I was surprised I got my security clearance with that on my record. I was still underage, but at the age I got hired and the investigator to go back ten years, they could have seen that on my record.
9. How did you acquire your job?
You know, this is an interesting topic. My college had plenty of those college board jobs. The job boards you get straight out of college. Well I had a bit of technical knowledge already after working a bit in a good environment at my work study position on campus. I went to career builder and for the next 5 weeks every weekend, I would apply for up to 75 jobs each week. After that, I got a few calls and then I nailed one. As good as that. The pay was low, but all I wanted was the experience to start off with and now I get calls from Microsoft that I turn down just because I don’t want to move.
By the way, for your paper, My name is Scott Pio, my domain is www.spoiledtechie.com and www.scottpio.com. If you need more bio about me, go to spoiledtechie.com and click on the about tab.
If you liked this post, please be sure to subscribe to my RSS Feed.
A few weeks ago, I had the chance to attend DevConnections 2008 in Orlando, FL. I spoke to a Microsoft Pro by the name of Steven Toub. He works for Microsoft in the parallel computing labs. He currently is designing PLINQ which is a parallel operations for LINQ. He said in the next 9 years, he expects 100 Core machines to be out on the market and Microsoft has vowed NOT to make any software for 32 bit machines anymore from today on.
It is interesting to see Microsoft take this route and not develop for single cores anymore and I am questing what can that do for their market. I only think make it better. There are rumors out there that Microsoft doesn't innovate anymore. I think some of the rumors are true to some markets of software, but in other markets Microsoft leads the pack. Microsoft does have a problem with its Internet technology and they just released Microsoft Mesh which allows for a computer desktop to be visualized on the Internet Browser. Pretty impressive stuff which shows that they can innovate in some areas, but very little in others. I think the main reason Microsoft doesn't innovate as much in Americans eyes nor in the Europeans eyes because they are in disgust of the the giant gorilla in the room and there for less and less Americans go to work for them. Its all about Yahoo and Google and working for those folks. Americas top innovators have moved from Microsoft to Google in a big jump that took about 5 years. They saw that Google actually had money to spend and it is also a great place to work. I don't know about Microsoft's working conditions, but Google is supposedly the cream of the crop for developers.
The entire discussion is wether Microsoft can still innovate in the next couple of years. I for one enjoy Microsoft's products and the PLINQ will be a gem for them that Google doesn't currently have yet.
Can Microsoft keep up with the Innovations?
If you liked this post, please be sure to subscribe to my RSS Feed.