As I look at the state of funding for big government project like Space, Telecom and Alternative Energy, I realise there has been a fundamental shift away from the Centralised R&D model. Now this word is the grandfather of the entire tech industry started. Western Governments recognised the importance of it and create Incubators and re-reimbursements for tax to stimulate growth. Virtually everything was considered R&D that touched technology up until 2000.
Now in the two-thousand-ten's, we are still in the beginning of the cloud revolution. I know I'm going to sound like I've missed the boat, but I think the cloud is penetrated less then 5% of households, and I see it being 80% by 2020.
Which begs the question, with all the API's that can do complicated things like machine learning, semantic analysis, store your data, delivered on high performing clusters out of the box, what should I do? Plus its unit tested and has 1000's of comitters on GitHub. What is R&D in this context.?
R&D, was the process of connecting software and hardware together and deliver an engineering solution to compromised set of requirements. To do this you would need on-site resident mathematicians, PHDs, full research team, hardware specialists, operations and personnel. Routinely teams on SINGLE projects were up to 100 large. It would take 3-5 years to deliver infrastructure software. Your software likely was the backbone for many business processes. Your hardware was proprietary, and you had Macgyver trying to solder capacitors back on to save your last signal processor, and John 'Hannibal' Smith trying to string machines together through layer 2 HDLC. All in all, you NEEDED experts in every area to be successful. Patents were prevalent.
You can see where I'm going with this. Now my average day consists of hanging out on stackexchange, coderanch.com, mashable.com and google trying to find solutions to packages available through opensource and apis. Oh look, some one from russia posted a library on github highlight fields using javascript. I have 30 books on pretty much every solution I need, but can I spend 1 hour looking for that book, and another 1 hour trying to read a chapter anymore?
We are in the era of Collaborative Solutions. I have to maintain breadth of knowledge in 10 functional areas, do capability matrix on the choices of lets say, a caching paradigm, search engines, corroborative filtering, event messaging back-ends, nosql and sql dbs, mvc's and even IDE. And when I'm asked to execute, I have to take the best of breed, and deliver a system that will work in a RAD environment, be maintainable and scale to a million users in the first 6 months. If I have doubts, i have to maintain relationships with algorithm specialist, java architects, big data, cloud solutions experts and take them for a beer for some advice. If I don't have a contact, I look for a local meetup.com group and try to hit them up for advice. If needed we'll get some consultants on retainer.
An example is in Java frameworks, right of the bat you create beans which are pooled to provided threading capability for concurrency. However if you want to run a single process in a pool, it actually needs to be CONFIGURED to go slower, which sit he complete 180 from how this problem would of been approached. You ASSUME concurrency right of the bat. If you don't you'll have 100's of database connections open and left to rot.
So the focus has changed. Most of use are in solution delivery. Its nostalgic to think about how life was before web and collaboration has changed our thinking. Out with books, in with blogs. Out with research, in with mashups. Out with system engineering, in with evolutionary prototyping.
As for myself, I fought this for a few years. I finally came to the realisation that this model was the better for all of us. As software becomes more commoditize, I can profit on my efficiency in delivery. At the end of the day, the consumer only spends so much money, and regardless of how cool we thing something is, its only going to amount to a $1.99 sale on an APP store. So what we give up in Research is replace by Product Solutions?
For new grads this is much harder. When I started I thought it was difficult that I could not hone my techniques in learning how electrical phenomenon like QPSK, gold codes, LFSR, Raleigh Fading model, I had to take for granted and write specs based on books and advice. For a new grad that is even a bigger transition, as I've seen the CS schools have tried to stick to fundamental algorithm solving, and not big architecture and practicality. Of course we need very good developers, and lots of them, however it would be great if we could see a course in "Solution Delivery"!
Now in the two-thousand-ten's, we are still in the beginning of the cloud revolution. I know I'm going to sound like I've missed the boat, but I think the cloud is penetrated less then 5% of households, and I see it being 80% by 2020.
Which begs the question, with all the API's that can do complicated things like machine learning, semantic analysis, store your data, delivered on high performing clusters out of the box, what should I do? Plus its unit tested and has 1000's of comitters on GitHub. What is R&D in this context.?
R&D, was the process of connecting software and hardware together and deliver an engineering solution to compromised set of requirements. To do this you would need on-site resident mathematicians, PHDs, full research team, hardware specialists, operations and personnel. Routinely teams on SINGLE projects were up to 100 large. It would take 3-5 years to deliver infrastructure software. Your software likely was the backbone for many business processes. Your hardware was proprietary, and you had Macgyver trying to solder capacitors back on to save your last signal processor, and John 'Hannibal' Smith trying to string machines together through layer 2 HDLC. All in all, you NEEDED experts in every area to be successful. Patents were prevalent.
You can see where I'm going with this. Now my average day consists of hanging out on stackexchange, coderanch.com, mashable.com and google trying to find solutions to packages available through opensource and apis. Oh look, some one from russia posted a library on github highlight fields using javascript. I have 30 books on pretty much every solution I need, but can I spend 1 hour looking for that book, and another 1 hour trying to read a chapter anymore?
We are in the era of Collaborative Solutions. I have to maintain breadth of knowledge in 10 functional areas, do capability matrix on the choices of lets say, a caching paradigm, search engines, corroborative filtering, event messaging back-ends, nosql and sql dbs, mvc's and even IDE. And when I'm asked to execute, I have to take the best of breed, and deliver a system that will work in a RAD environment, be maintainable and scale to a million users in the first 6 months. If I have doubts, i have to maintain relationships with algorithm specialist, java architects, big data, cloud solutions experts and take them for a beer for some advice. If I don't have a contact, I look for a local meetup.com group and try to hit them up for advice. If needed we'll get some consultants on retainer.
An example is in Java frameworks, right of the bat you create beans which are pooled to provided threading capability for concurrency. However if you want to run a single process in a pool, it actually needs to be CONFIGURED to go slower, which sit he complete 180 from how this problem would of been approached. You ASSUME concurrency right of the bat. If you don't you'll have 100's of database connections open and left to rot.
So the focus has changed. Most of use are in solution delivery. Its nostalgic to think about how life was before web and collaboration has changed our thinking. Out with books, in with blogs. Out with research, in with mashups. Out with system engineering, in with evolutionary prototyping.
As for myself, I fought this for a few years. I finally came to the realisation that this model was the better for all of us. As software becomes more commoditize, I can profit on my efficiency in delivery. At the end of the day, the consumer only spends so much money, and regardless of how cool we thing something is, its only going to amount to a $1.99 sale on an APP store. So what we give up in Research is replace by Product Solutions?
For new grads this is much harder. When I started I thought it was difficult that I could not hone my techniques in learning how electrical phenomenon like QPSK, gold codes, LFSR, Raleigh Fading model, I had to take for granted and write specs based on books and advice. For a new grad that is even a bigger transition, as I've seen the CS schools have tried to stick to fundamental algorithm solving, and not big architecture and practicality. Of course we need very good developers, and lots of them, however it would be great if we could see a course in "Solution Delivery"!
No comments:
Post a Comment