This week's Spotlight is pretty special. I had a chance to chat with a number of very distinguished and well known people in our industry, and for that matter, some are pretty well known outside of their industry. All have been very successful in their careers, have been a part of a startup at some point or another (actually, all are currently in startups) and are well respected. Whenever I can, I love to ask people that I look up to and admire for advice on things, "How would you do such and such" and "If you had to do it over, how would you do it?" kind of questions. All of these guys are not only distinguished in their work and fields, but they have something else that sets them apart, they make time to help others. They also have another thing in common, all of these guys are Jelastic users. Let me introduce them to you.
Markus is a principal technology consultant working for Msg Systems AG in Germany as a software architect, developer and consultant. Eisele also writes for several IT magazines. He works daily with customers on projects dealing with enterprise-level Java and infrastructures. This includes the Java platform and several Web-related technologies on a variety of platforms using products from different vendors. His main area of expertise is Java EE servers. Eisele often speaks at different international conferences about his favorite topics. Stay up to date with his activities by visiting his blog at blog.eisele.net.
James Gosling (you might know his as the "Father of Java") received a BSc in Computer Science from the University of Calgary, Canada in 1977. He received a PhD in Computer Science from Carnegie-Mellon University in 1983. The title of his thesis was “The Algebraic Manipulation of Constraints”. He spent many years as a VP & Fellow at Sun Microsystems. He has built satellite data acquisition systems, a multiprocessor version of Unix, several compilers, mail systems and window managers. He has also built a WYSIWYG text editor, a constraint based drawing editor and a text editor called `Emacs’ for Unix systems. You can visit his blog at nighthacks.com.
Jean-Michel Van Lippevelde
Jean-Michel received his Commercial Engineering as well as his MBA while in Brussels. He is a serial entrepreneur and has founded a number of successful companies. He started coding at an early age and has been part of a numerous notable projects, from working at JP Morgan while in university to his later startups. Currently, he is heading up another startup, RestoPad, that runs on Jelastic as well as being the GM at Accelior Consulting. He loves racing and if you don't find him coding, you can probably find him on the track racing F3.
Martin is co-leader of the thriving London Java Community (LJC)—a Java User Group (JUG) that has more than 2,500 members and a seat on the Java Community Process (JCP) Executive Committee (EC)—and he leads the global effort for the JUG "Adopt a JSR" and "Adopt OpenJDK" programs. He is a co-organizer of UK Graduate Developers, a moderator on CodeRanch.com, and the community leader for PCGen (one of the world's largest free and open source software [FOSS] projects) and Ikasan (a recently open sourced Enterprise Integration Platform [EIP] framework from Mizuho International). He is currently CTO at jClarity, a startup focusing on automating optimization for Java and Java Virtual Machine (JVM)–related technologies, and he is a product advisor at ZeroTurnaround. He co-authored, with Ben Evans, The Well-Grounded Java Developer, published by Manning and, as a leading authority on technical team optimization, he is in high demand at major software conferences.
Alright, so the intros are done. Now to the questions. I asked them all pretty much the same questions and you get the benefit of their advice:
What advice would you give to someone that has not gone to college yet, but knows what direction that they want to go in, specifically computing/programming/robotics?
Markus: Knowing that the education paths are different depending on the different countries in the world I would strive to give more general advice. Try to find out what exactly attracts you. What I have learned during my career is that you can only be good at things which truly amaze you. Even if it looks like a very simple and structured discipline from the outside: you have tons of opportunities and directions to go. Want to dig into stuff and drill deep holes? Mathematical problems? Algorithms? Or are looking for the more socially related parts? Being a consultant? An evangelist? Or are you one of the few able to manage different tasks at once and good at structuring? A project manager maybe? Or even someone who loves to specialize his knowledge in a special industry sector? Finding out about requirements? A business consultant? Or is everything you dream about simply about operations? Running thousands of instances? Serving millions of users? A support engineer?
I probably could go on with questions like this for more than 20 minutes. One last one: Could anybody answer this without knowing what is behind any of them? Probably not. That is why I am a big fan of internships. So whenever you have some time to spare try to get your hands on practical things to find out about your true passion.
Learning gets a lot easier if you know for what exactly you are doing it. Look at it as part of the path to get to the point where you can indulge your passion.
- Keep playing!
- Even though they could probably get a job right away, they'd get sucked into a narrow Universe. Go to college, specifically one with a great robotics/CS program. The top of my list is Carnegie-Mellon. Berkeley is great too.
Jean-Michel: Being passionate about IT, never count your hours, read, read, read and get yourself educated in programming patterns... There are numerous books that are recommended... I suggest: The Pragmatic Programmer
Martijn: Learn to be a good computer scientist at college but at the same time learn to be a good programmer and software developer from the industry around you. Apply that to your computer science projects. So outside of college - join your local tech user groups, work on an open source project, find mentors who can help you learn about build, CI, DevOps, source control, better practices for paradigm X and *most* importantly about the social nature of our industry. That is, software development is actually more a social activity than a technical one (yeah that can scare a lot of people).
What would you tell someone who just launched their first startup? (Aside from "Don't do it!")
Markus: This is a good question. Having seen some of them and helping a few I believe it is all about listening and decisions. The shortest possible recipe here is: Listen to your customers and make the right decisions. Nobody could be good at everything. I have seen good technicians failing here because they missed the passion for the entrepreneurial parts. I have seen entrepreneurs failing because they made the wrong technical decisions. So a big part of my recommendation is to get the right team on board. Find a brave mixture of skills in people which share the passion of being discoverers.
Why didn't I talk about technology here? It shouldn't be the hardest part. A passionate and brave team doesn't care about general advice. They have all the tools at hand already.
- It will be a roller coaster.
- Try to keep some emotional detachment.
- Work hard to have a life outside of work.
- People are people. Dealing with them is the hardest thing you'll have to do. Technology is easy.
Jean-Michel: Make sure you get yourself teamed up with the RIGHT people. Startup companies are never a one man show, you might have a vision but you still need people for execution. Make sure you can trust them, respect them and above all, make sure they align with you and are SKILLED!
Martijn: Have a 1 page business plan (See Don't make my eyes bleed) which says who your customers are, why they want to buy your X and how they are going to pay for it.
Then be prepared to throw that plan away - most start-ups change direction a couple of times (see the Founders at Work Book to see what I mean).
So build an awesome team that can be flexible - you will create something great - it might just not be what you first thought of :-)
Going forward, what would you recommend that someone, in particular a developer, strive to learn so that they don't get left behind?
Markus: That is a good question! Thank you. I wish I would be asked this far more often. I'm working for a company with long-running customer relations and even longer running projects for customers which are too large to always adopt the latest in technology. Not surprisingly this imprisoned some people with yesterday's technology for a long time. From a personal perspective this might be comfortable because you really can get good in the stuff and you know every single little screw to turn to make it work. But it shouldn't. For me it always started to feel unpleasant if I had to do the same thing over and over again. The need for something new grew with every single repetition of a task. Up to a point where it finally was a pain to do it. One person finally made sense out of this feelings by putting it into a single sentence: "Stay Hungry. Stay Foolish." (S.Jobs, Stanford 2005) http://www.youtube.com/watch?v=VHWUCX6osgM and full text page three (http://articles.businessinsider.com/2011-10-06/tech/30249828_1_college-tuition-calligraphy-adoption/3) (Side-note: I'm not an Apple fan-boy and only own an iPod nano ;))
Don't take anything for granted. Believe in your skills but never expect to be perfect at anything. Practice new tools, new languages and look out for better ways of doing things. Care for your toolbox and put a new tool in it from time to time. Be committed to your tools.
James: Learn everything that interests you. Other programming languages, other technologies, biology, art, physics, ... It's all good. A lot of the most interesting work is where CS is used in something fascinating - I'm loving the mix of robotics and marine science in my current job.
Jean-Michel: If you struggle to learn in IT programming, better find another job. :-)
Martijn: The social aspect of software development - collaboration, share ownership of code, being humble, learning to argue without getting personal etc. The developer who communicates the best has the greatest impact on the code base.
Also - learn to be empirical - if you base decisions on evidence then you're light years ahead of most other developers who tend to make decisions based on experience, gut feeling or plain old guesswork.
For someone that is not technical but wants to be part of a startup, how can they be an essential part?
Markus: Another good one. There are tons of answers, right? I mean all that I have said so far was about being committed and having passion for the things you do. I believe that everybody is best in class in something. If it happens to be a valuable skill in the team, he or she will make the difference there. UI design, Marketing, Education/Training, Community relations and many many more topics mostly aren't addressed to the extend it would be helpful during the first months. Whatever part you feel like being responsible for it will be the part of the company you are shaping. And you will be the essential part here.
James: You are participating in building the future. To quote Robin Williams as John Keating in Dead Poets Society:
We don't read and write poetry because it's cute. We read and write poetry because we are members of the human race And the human race is filled with passion. And medicine, law, business, engineering, these are noble pursuits and necessary to sustain life. But poetry, beauty, romance, love, these are what we stay alive for. To quote from Whitman, "O me! O life!... of the questions of these recurring; of the endless trains of the faithless... of cities filled with the foolish; what good amid these, O me, O life?" Answer: that you are here; that life exists, and identity; that the powerful play goes on and you may contribute a verse; that the powerful play goes on and you may contribute a verse. What will your verse be?
Jean-Michel: Vision, organisation / planning / execution / partnerships
Some may things to do in a startup. Not everything is about being technical... you still need to SELL your technology / product and still be able to EXPLAIN and COMMUNICATE to the common mortals!
Martijn: In hundreds of ways! Tons of start-ups fail even though they have a 'superior' technology.
- You need a strong CEO who *believes* and can sell and think strategically
- You need someone who will cross the t's and dot the i's - things like finances, legal and customer support matter - you can't simply bluff your way through them
- Community manager
- Ux/UI whizz
- and on and on and on :-)
You can see the balance we have at www.jclarity.com/team for example (and we're still not quite as balanced as we'd like).
I would like to thank Markus, James, Jean-Michel and Martijn for their time. If you have any questions or comments, feel free to voice your opinion in the comments below. Maybe we can do some followup questions. :-)
- James Gosling (Father of Java) Loves Jelastic (jelastic.com)