DEV Community

Christian Di Lorenzo
Christian Di Lorenzo

Posted on

I am a polyglot developer who does web front/back end, data science, native iOS, and a bit of ethical hacking, Ask Me Anything!

Top comments (11)

Collapse
 
madiallo profile image
Mamadou Alpha Diallo

i'm yet student who will be graduate next year
i wanna ask for advice right now i'm studding python django framework and javascript jquery library but i like data-scientist and machine learning i was wondering if it's a good idea to fit all this technologies together ?? thank for answering me

Collapse
 
rcdilorenzo profile image
Christian Di Lorenzo

Sure. I would personally recommend building a data science project that people can actually use online. It doesn't have to be the fanciest model nor the prettiest design, but it will show that you understand the context for applying the algorithms and can take it from start to finish. Obviously, I didn't start with data science so you'll have to take that with a grain of salt.

That said, one big thing to keep in mind for this kind of portfolio project is to not start too big or with too many technologies. In my current position when I've reviewed potential hires' code (for software developer), I am not looking for the brightest CS guy but for someone who does things well (e.g. test-driven development, carefully named software components, and their code-writing process).

Start small but create something that people can clearly see your understanding of the algorithms and care for the application's goals.

Collapse
 
madiallo profile image
Mamadou Alpha Diallo

thank for the advice

Collapse
 
jakedohm_34 profile image
Jake Dohm

Hey, Christian!

  • What is your favorite hacking project so far? Something you enjoyed the most, or got the most good out of?

  • What is an application of data science / AI / Ml that is often overlooked?

Collapse
 
rcdilorenzo profile image
Christian Di Lorenzo • Edited

1) I personally have a lot of imposter syndrome when it comes to hacking. I never felt I could claim it at all until I had to make a logical jump about "what's on the other side" such that it proved correct. I would actually say my favorite hacking project has been employing what I've learned from hacking in my regular software work. Understanding networking in order to reverse engineer an old app's HTTPS networking calls was super helpful (from iOS 5 to iOS 12).

I've also done some innocent fun with people--like moving a canvas on a local network when my co-worker said it wasn't possible for people to jump on it and try things... but as I said, they were all innocent and I tell people afterwards. :-)

2) Reinforcement learning is a really cool area of machine learning that is often overlooked. If you can construct an environment where an agent (e.g. robot) can make any of a fixed list of decisions (e.g. left, right, up, or down) and it can sense whether it's doing better or worse in achieving its goals, you can create an algorithm that learns. If this sounds a bit strange, you may remember the AlphaGo algorithm that beat the best human player in the world in 2016. That kind of put reinforcement learning on the map as far as modern publicity.

Below is an example I wrote a little while back to "learn" how to play checkers with an adequate strategy. Granted--it's not all that great, but it should be noted that I'm not using any outside libraries for the actually algorithm update process. There's technically not any higher math required to implement this type of algorithm.

github.com/rcdilorenzo/TicTacToe

asciicast

Collapse
 
konidia profile image
Nafiz Islam

Hello Christian!

I am wondering if you have a spare time to answer few questions for a google form; this will be useful for my presentation on the following week :)

forms.gle/PJq3pGBkevK5hz7Q9

Collapse
 
rcdilorenzo profile image
Christian Di Lorenzo

Ah, unfortunately, I'll be one of the worst data points for comparison. I did the Software Craftsmanship Academy before I had finished high school and worked as a software developer the remainder of my high school, undergraduate degree, and graduate work. I'm actually not a huge fan of going directly for a CS degree. I tell folks to get some experience designing a software application for a real use case before learning the theory.

For me, I had so much fun in many of my CS courses since I knew how to apply them. For example, my networking course was one of my favorite since I was able to immediately go off and write a TCP packet in Python to the broadcast address (255.255.255.255) and make every Mac in the room talk.

However, maybe this would be worth sharing for your presentation. The problem with most CS degrees is that they teach you theory before practice. It would be as though I went to school for four years for carpentry, learning about nail lengths, wood types, and structural joints. Assuming I didn't have actual working experience, I wouldn't have the context from which to apply this theoretical knowledge that is actually helpful in certain circumstances. When I get on the job and am asked about my experience, all I have to reference is a bird house that I and two other classmates put together as a group project. This may seem like a silly idea, but it's actually what we do for software engineering when students go to college but have never written more than a single-file program.

Collapse
 
mightyking7 profile image
Buitrago

Have you ever had a job in Data Science ? If so, what was it like ? What are some pros/cons vs Software Engineering.

Collapse
 
rcdilorenzo profile image
Christian Di Lorenzo

I have not although I will be transitioning into that capacity within the next several months (starting already). I'm planning to bring data science to the company I work for now. I've already started on a homegrown product recommendation system for example.

Differences

Since we are in the consulting business, one of the most important things is building these systems in what I call a "value-driven algorithm development." It's easy from my master's work to want to quickly jump into the most complicated algorithm. However, there are many times that you can actually provide quite a bit of value with a super-simple example. Start with something manual (or manually assigned tags/category/groups) and then build up from there.

The other portion that's really different is how you think about data collection. In this case, we actually need to track relevant information for performing later analysis. This is a bit of departure from traditional software development since we aren't specifically creating data structures to directly fulfill a customer feature. Instead, it requires a more holistic approach and think through future scenarios since you can never go back and use data you never collected.

Pros and Cons

Obviously, I'm a little biased towards data science since I have been working on a masters. I personally feel that data scientists would in an ideal scenario have a good background in software engineering. However, let's consider them separately.

Software Engineer (no data science)

Software guys can build almost any product from scratch (assuming enough experience, budget, and business goals). These engineers can break down a complicated problem into the relevant architecture and pull in others to get things done. When it comes to statistics or this machine learning algorithms, the software engineer can still have good resources (e.g. fast.ai) but won't be able to implement these "smart features" that require a different type of thinking

Data Scientist (no formal experience in software)

The data scientist can work across a broad range of industries from software products to research labs. They can write horribly procedural code that does things that most software engineers would have glazed eyes over. However, they do know decent optimization techniques where large data sets are concerned. They typically have a good foundation in statistics and are closer to the executive level of business and customers. Viewing the world through data-tinted glasses is their gig.

The "unicorn"

As some call it, a data science unicorn is someone who combines business expertise, data science, and computer science in a single individual. This is my personal goal as it allows building the entire data science pipeline from raw data to a scaled ML algorithm that integrates with the product. I've tried to keep this in mind during my school work such as this project: github.com/rcdilorenzo/abfs.

Conclusion

I'm sure that's probably a lot more than what you were asking. Hopefully, some of that was valuable. In short, I love everything in-and-around software engineering, but I also want to push the envelope and use data to help people accomplish everyday tasks.

In fact, as a Christian, doing data science and realizing how much of this applied mathematics is human-driven and confined to a specific application gives me a new appreciation for even the smallest biological systems God has designed. My jaw drops at the sheer complexity and natural intelligence even in a rat. Yes--these systems seem "intelligent" and "smart," but they truly don't compare.

On the flip side, creating a system that indirectly makes decisions is really neat. It's freeing to know that we are taking good stewardship of the tools we have been given. Go forth and create!

Collapse
 
andersonjoseph profile image
Anderson. J

Hi! Do you find any application/relation between Data Science and Back End?

Collapse
 
rcdilorenzo profile image
Christian Di Lorenzo

Absolutely. Most machine learning (ML) algorithms are deployed in a cloud environment (notable exceptions would be features that Apple puts on its computers, tablets, and phones). In fact, I feel that there is a bit of a gap for data scientists actually deploying the systems they work on (which is a task often delegated to data engineers) so I wrote a blog post on getting an experiment working in production with ReactJS (for visualizations) and Python (for ML): towardsdatascience.com/deploying-y....

(^ I realize I just linked to another writing forum but hopefully my content here makes up for that. 😀)