interns inside

Monday Jan 02, 2006

My Parting Note...



Any student, after having taken a couple introductory programming courses, realizes that there is a huge gap between academic programming and industry programming. Many times the student is afraid to ask, "What can I do to bridge this gap?" This question is usually supressed because the student thinks that he or she must be an inferior programmer and is afraid of looking foolish to his or her peers and professors. How much do my peers or even my professors know about bridging this gap anyways? To benefit all future programmers, I have sacrificed my pride and taken this question to one of the industry's top programmers - Tor Norbye. What follows are some excerpts from our conversation.

"... in my personal experience, academic programming tended to be algorithm focused, and fairly small programs, typically developed individually or in small teams (2-3 students).

When you work in isolation, you tend to think of program correctness (it works - it produces the result called for in the programming assignment). When you're doing industry programming, "API design" and contracts become a much more important concern. How do you ensure that your program architecture is clean, maintainable and understandable by new engineers? Working as a team you also worry about coding conventions and such as decided by the team.

So...I think as an industry programmer you'll find that you (typically) work less on interesting algorithms, and more crafting large systems (or working on a part of a large system) with multiple independent parts and several important boundaries between the systems. Communication skills become vital as you work with the rest of the team.

Exactly how you would go about bridging that gap I'm not sure about. I think it actually happens naturally. In college you simply don't have time to work for years on giant software projects. Instead you need to learn all the fundamentals - data structures, operating systems, algorithms, programming languages, etc. Establishing good programming habits is important, but it will happen as you join industry, owning small portions of a system at first, then gradually taking on more responsibility."

In summary, it would be safe to say that students should focus on the task at hand, whether it be writing your first program involving in object orientation, or a highly evolved data structure manipulation program. Coding in the Industry is very similar to coding in class. You will first be given small, manageable tasks. As your experience grows, you will be given the more difficult tasks that you will then be able to manage.

Keeping abreast of current technology and its tools is important. You never know what skills your future employer will be looking for. So, why not make some cash while learning a little more about technology? Check out the Solaris University Challenge. Participate in the development of the most advanced operating system on the planet!

-Dustin Wallace

Friday Dec 02, 2005

Netbeans - The Alternative

I have always been an advocate of IntelliJ and Eclipse. Both offer great features of what an IDE should be. IntelliJ for instance has great refactoring, editor hints, and auto-completion. However, even with a student-adjusted price of $99, most students find the lure of free tools a bit too compelling. IntelliJ is a great tool, no doubt about it, but I personally am not willing to pay that much.

As for Eclipse, it is truly a multi-language IDE. It supports various languages ranging from PHP to functional and object-oriented languages such as SML and Java. These features are nice to have, but can easily become confusing for the first time user. In order to provide many of these features, Eclipse employs the use of plug-ins, which the user must download and configure themself. Like most IDEs, it also has a GUI building tool (called Visual Editor) that enables users to drag and drop components in order to create user interfaces. However, there is a drawback with it - the Visual Editor itself is not provided in Eclipse. Again, the user must download and install two or more different components in order to make the Visual Editor functional within Eclipse.

There are two other things about this plugin that I'm not fond of. First, I've noticed the interface to load slowly after opening a project. Secondly, Visual Editor uses it's own GUI framework called SWT. This framework is not the standard Java Swing framework, which can cause some problems such as portability which goes against the JCP (Java Community Process).

Instead of paying $99 for an IDE or using something that can be confusing, I am offering an alternative - Netbeans. This software provides great refactoring, editor hints, and auto-completion capabilities as compared to IntelliJ and Eclipse. It also has a GUI framework that has been enhanced for a richer user experience called Matisse. And the great thing about this GUI tool is that it uses only Java Swing. Users don't have to worry about portability and the look n' feel of their interface when running the program on different platforms.

Furthermore, the NetBeans IDE also introduces a new collaboration technology that allows you to share code, collaboratively resolve development problems, and interact with your classmates without ever having to leave your IDE. With built-in instant messaging capabilities, you can chat and send messages in Java, XML and HTML. Need help on your class project? With real-time file editing, you and a classmate can debug your applications together over the network. No more diff. No more worrying about multiple file versions floating back and forth. Here's a flash demo of developer collaboration at work.

And best of all - it's FREE! Netbeans is gaining great momentum, especially with their new 5.0 version. So check it out and see what's all the excitement about.

-Soot Phengsy
Sun Intern, NetBeans

Friday Nov 11, 2005

Hello, World

Let's just say interning at Sun has its perks. Solaris, Java, throughput computing, developer tools, storage virtualization, proximity I/O, scalable x64 servers, application switching, real time, display-over-IP, utility computing. All are being developed within Sun and all are having a truly global impact on advancing the way people live. Doughnuts? Keep 'em.

Fortunately (for myself and the rest of the planet), Sun is an ardent believer in the long-term value of R&D. A statement which may sound obvious to a student, but rest assure is the source of controversy for a great many people.

Had Sun agreed with conventional wisdom and settled for a less controversial business model, (among other things) a much less interesting internship experience would result.

Now, since you're reading this blog, chances are you're a student. It's also likely that you've at least heard of the technologies mentioned above. However, if you're anything like me, you probably have more questions than answers. With the number of technologies out there, creating order out of this ecosystem that is enterprise computing can be a time-consuming task. Fortunately, many of the folks at Sun have already blazed these paths. Even better, many of them are students themselves.

To that end, this blog will draw on the experience of the global Sun Intern community with the intent of shedding light on the innovation happening both within Sun and the larger technology industry.

Whether it's happening here or elsewhere. Employment resources, industry trends, we'll do our best to lend a student's perspective. How broad will we go? Time will only tell.

We look forward to the dialogue ahead and welcome you to share thoughts and experiences of your own. If you want to reach us, we're "internsinside at sun.com". We'd love to hear from you!

-Ryan Kennedy
Sun Graduate Intern, Java Studio Enterprise


Archives
Links
Referrers